Автоматически включайте последние версии ядра N в меню GRUB / GRUB2 на обновлении ядра

То, что мне нравится приблизительно Ubuntu, - то, что меню GRUB всегда позволяет мне выбирать последнее (значение по умолчанию) или второй последний (и т.д.). версия ядра во время начальной загрузки.

В Arch Linux я не могу сделать этого по умолчанию. Единственные опции нормальны, и изображения нейтрализации, и оба загружают последнее ядро. Как я могу достигнуть подобного Человечности поведения в Arch? Я использую Личинку и Grub2, но я предполагаю, что не должен был бы настраивать загрузчик очень. Это будет, вероятно, включать изображения, в которых это находит /boot в меню автоматически. Я могу быть неправым, все же.

Так, в чем я нуждаюсь от большинства до наименее важного:

  1. То, что новое изображение ядра, созданное mkinitcpio во время обновления не перезаписывает предыдущее;
  2. То, что последнее ядро присутствует в меню загрузчика как опция по умолчанию;
  3. Тот очень старые версии исключены из меню или скрыты в "более старую версию" пункт меню (не настолько важный).

Как можно было бы пойти об этом? Если я изучаю mkinitcpio сконфигурируйтесь или возможно pacman конфигурация? Я на самом деле попытался смотреть на конфигурационные файлы для обоих, никакие идеи до сих пор.

5
26.12.2013, 23:05
2 ответа

Посмотрите эту ошибку: https://bugs.archlinux.org/task/16702#comment80122

И это сообщение в блоге: http://losinggeneration.homelinux.org/2009/10/16/why-arch-linuxs-kernel-upgrades-suck/

До сих пор я не нашел хорошее решение, но я обновлю, если я сделаю.

Одной вещью иметь в виду вне личинки, ядра и initrd является/usr/lib/modules/. То, когда пакет Linux обновляет старый пакет, удаляет, это - папки в/usr/lib/modules/, и новое ядро добавляет свои новые модули. Если Вы хотите обе работы ядер, Вы собираетесь хотеть оба набора модулей. И/usr/src/содержит заголовки ядрa (должен был создать новые модули, такие как драйверы Nvidia), таким образом, Вы, вероятно, захотите сохранить их, также.

Шаги, которые я предполагаю, были бы чем-то как:
1. Обнаружьте пакет Linux, будет обновленным.
2. Резервное копирование, что это собирается удалить на удалении (/usr/src/$ (uname-r),/usr/lib/modules/$ (uname-r),/boot/{vmlinuz-linux, initramfs-linux.img, initramfs-linux-fallback.img})
3. Позвольте pacman сделать свое обновление
4. Восстановите все в 2 (вероятно, давание нового имени к материалу в начальной загрузке /
5. Личинка редактирования или что бы то ни было.

Альтернативные (несколько менее хорошие) шаги
1. Позвольте pacman обновить
2. Обнаружьте ядро, был обновлен
3. от/var/cache/packman/pkg/linux-$ {previous_version}-pkg.tar.xz извлекают/usr/src/,/usr/lib/{модули, extramodules}, и/boot/vmlinuz (переименовывающий тот в начальной загрузке/, очевидно)
4. выполненный mkinitcpio с-k опцией создать старый init
5. Личинка редактирования или безотносительно

В этом альтернативном методе Вы освобождаете свои сторонние модули (виртуальное поле, ATI/Nvidia, и т.д.), но это могло бы быть что-то, что Вы могли выполнить от крона и автоволшебно обнаружить обновления ядра, произошли.

2
27.01.2020, 20:42
  • 1
    Спасибо за ссылки это - очень хорошее чтение. Интересно, сколько времени это возьмет, прежде чем проблема решена, как предложено в связанном комментарии. Достаточно долго это кажется мне. Ответ очень полезен, тем не менее, еще раз спасибо. –  Lev Levitsky 13.10.2012, 01:42
  • 2
    В/etc/pacman.conf можно проигнорировать "Linux". Это поворачивает ядро (и зависимости как модули) в ручные установки. "Yaourt" не доволен этим, все же. :-/ wiki.archlinux.org/index.php/Downgrading_Packages описывает использование Вашего локального кэша пакета для переустанавливания старых пакетов. Это могло быть полезно. –  bobpaul 17.10.2012, 00:37

насколько я помню, что новейшее ядро всегда является первым в/boot/grub/grub.conf файле. Для автоматической загрузки первой записи, необходимо поместить следующие две строки наверху grub.conf

default         0
timeout         1

Загрузчик личинки ожидает timeout время в секундах. И default x ядро в списке ядер.

относительно mkinitcpio: Я не думаю, что существует простой способ. Но я всегда думал, последнее и текущее ядро будут доступны во время начальной загрузки, и новейшее ядро всегда в postition 0 в grub.conf.

0
27.01.2020, 20:42
  • 1
    Нет, предыдущее ядро не доступно по умолчанию, к сожалению. –  Lev Levitsky 11.10.2012, 15:13