Показаны сообщения с ярлыком grub. Показать все сообщения
Показаны сообщения с ярлыком grub. Показать все сообщения

воскресенье, 2 декабря 2012 г.

Удаление старых ядер

Если вы хотябы раз в неделю обновляете систему, то имеете большое количество старых версий ядра, которыми чаще всего не пользуетесь. Имеет смысл иметь в запасе возможнось загрузить предыдущую (рабочую) версию ядра, если на новом ядре что-то перестало работать. Но когда их собирается 5 - 10 штук, тогда имеет смысл подумать о том, как бы почистить ситтему от мусора. И здесь оказывается не все просто, потому что каких-то штатных средств для этого не предусмотрено. Но решение есть и оно довольно несложное - несколько команд в консоли от рута.

Первым делом нужно почистить систему от мусора, т. е. не только от старых версий ядра, но и от ненужных пакетов (которые ставились по зависимостям и остались после удаления других пакетов):

# emerge -ac

Эта команда выведет список подлежащих удалению (по мнению команды) пакетов. Если вы найдете в этом списке используемые вами программы, то просто внесите их в файл /var/lib/portage/world, чтобы emerge не пытался в будущем удалить их, после чего перезапустите команду emerge -ac и согласитесь с предложением. Например, чтобы занести в /var/lib/portage/world программу media-video/mplayer нужно выполнить команду:

# echo media-video/mplayer >> /var/lib/portage/world

Команда emerge -ac удаляет только пакеты программ, но не трогает установленные в систему ядра и их модули. Вот для этой цели и нужны дополнительные телодвижения. Нужно удалить исходники старых ядер. Например, для удаления всех ядер ветки 3.5 нужно выполнить следующее:

# rm -rf /usr/src/linux-3.5.*

а затем удалить директорию с модулями этих ядер:

# rm -rf /lib/modules/*3.5.*

Если у вас каталог /boot на отдельном разделе (обычно небольшого размера 100 - 500 MB), то большое количество старых ядер может помешать установке нового (тупо не хватет места). Это, наверное, является главной причиной для чистки старых ядер. Поэтому удаляем ненужные файлы из каталога /boot:

# rm -rf /boot/*3.5.*

Неиспользуемые версии ядер удалены, но при загрузке все они как-бы доступны. Чтобы исправить это недоразумение нужно обновить конфиг загрузчика Grub, выполнив команду:

# grub-mkconfig -o /boot/grub/grub.cfg

которая заново создаст файл /boot/grub/grub.cfg и запишет туда все существующие ядра и обнаруженные ОСи.

суббота, 6 октября 2012 г.

Добавление Windows в меню загрузки Grub2

При очередной загрузке компьютера было обнаружено отсутствие пункта загрузки Windows в меню Grub. Встал вопрос - как его туда добавить.

После недолгих поисков было выяснено, что в дистрибутиве установлен Grub2. Как известно этот загрузчик не позволяет напрямую редактировать файл конфигурации (вообще-то позволяет, просто при очередном обновлении он его перезапишет) - он создает его автоматически с помощью скриптов, расположенных в каталоге /etc/grub.d. Посмотрим, что там есть:

# ls /etc/grub.d

00_header
10_linux
20_linux_xen  
30_os-prober
39_memtest86+
40_custom
41_custom

Скрипты из этого каталога выполняются по порядку от меньшего номера к большему.

Скрипт 00_header считывает настройки из файла /etc/default/grub. Там содержатся общие настройки вроде разрешения экрана при загрузке, фоновой картинки и т.п.

Скрипт 10_linux проверяет какие есть ядра linux и добавляет их в меню загрузки. 20_linux_xen - специфический скрипт для систем, работающих с XEN виртуализацией.

Скрипт 30_os-prober проверяет наличие других операционных систем, таких как Windows (требует наличия установленного  sys-boot/os-prober), и добавляет их в меню.

Скрипт 39_memtest86+ добавляет в меню пункты для проверки памяти. Ну а номера 40 и 41 предназначены для дополнительных пользовательских скриптов.

Поскольку все скрипты на месте, то нам осталось только сгенерировать конфигурационный файл. Делается это командой:


# grub-mkconfig -o /boot/grub/grub.cfg

которая пересоздаст файл /boot/grub/grub.cfg. Это тот самый файл, который можно отредактировать и вручную, но прийдется это делать после каждого обновления.