Доброго времени суток. Добро пожаловать в мой скромный блог.
Речь пойдет и Linux Ubuntu и загрузчике GRUB который позволяет управлять вариантами загрузки системы (или систем если их несколько на ПК).
Итак, в линуксе я относительно недавно и потому был очень удивлен, увидев что со временем вариантов загрузки системы становится все больше и больше. Варианты загрузки появляются при обновлении ядра Linux. Новое ядро прописывается в конфиг загрузчика, а старая версия не удаляется... Вот как раз 3 мин. назад установилось новое обновление, которое потребовало перезагрузки, сейчас ребутнусь, заодно и сделаю фото для наглядности. :)
Перезагрузка принесла нам фото, вот так это выглядит:
Все пункты меню прописаны в файле grub.cfg. У меня он лежит в папке "/boot/grub/".
Для того чтобы избавиться от лишних пунктов меню можно отредактировать вышеуказанный файл. Структура файла проста:
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
set saved_entry=${prev_saved_entry}
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z ${boot_once} ]; then
saved_entry=${chosen}
save_env saved_entry
fi
}
function recordfail {
set recordfail=1
if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi
}
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=640x480
insmod gfxterm
insmod vbe
if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don't
# understand terminal_output
terminal gfxterm
fi
fi
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
set locale_dir=($root)/boot/grub/locale
set lang=ru
insmod gettext
if [ ${recordfail} = 1 ]; then
set timeout=-1
else
set timeout=10
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Ubuntu, с Linux 2.6.32-41-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
linux /boot/vmlinuz-2.6.32-41-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro quiet splash
initrd /boot/initrd.img-2.6.32-41-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-41-generic (режим восстановления)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
echo 'Загружается Linux 2.6.32-41-generic ...'
linux /boot/vmlinuz-2.6.32-41-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro single
echo 'Загружается начальный ramdisk ...'
initrd /boot/initrd.img-2.6.32-41-generic
}
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows 7 (loader) (on /dev/sda1)" {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set D0469A5E469A455E
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
Красным выделено то, что редактировать не рекомендуется.
Зеленым и полужирным оранжевым прописаны пункты меню выводимые на экран при загрузке.
Разобраться очень просто. Они все идентичны, кроме "### BEGIN /etc/grub.d/20_memtest86+ ###" и "### BEGIN /etc/grub.d/30_os-prober ###". Первый отвечает за запуск тестирования памяти, а второй за загрузку Windows, установленной как вторая ОСь. Естественно эти записи удалять не стоит. Все что выделено полужирным оранжевым можно сносить. :)
Хочу заметить, что заполнением отдельных секций этого файла занимается скрипт расположенный по адресу "/usr/sbin/grub-mkconfig". В нем есть следующий блок:
EOF
for i in ${grub_mkconfig_dir}/* ; do
case "$i" in
# emacsen backup files. FIXME: support other editors
*~) ;;
*)
if grub_file_is_not_garbage "$i" && test -x "$i" ; then
echo
echo "### BEGIN $i ###"
"$i"
echo "### END $i ###"
fi
;;
esac
done
Итак, подведем итог. Удалив из текста "grub.cfg" строки которые я выделил полужирным зеленым, при загрузке я получил следующий результат:
Все загрузилось, все работает. :)
Речь пойдет и Linux Ubuntu и загрузчике GRUB который позволяет управлять вариантами загрузки системы (или систем если их несколько на ПК).
Итак, в линуксе я относительно недавно и потому был очень удивлен, увидев что со временем вариантов загрузки системы становится все больше и больше. Варианты загрузки появляются при обновлении ядра Linux. Новое ядро прописывается в конфиг загрузчика, а старая версия не удаляется... Вот как раз 3 мин. назад установилось новое обновление, которое потребовало перезагрузки, сейчас ребутнусь, заодно и сделаю фото для наглядности. :)
Перезагрузка принесла нам фото, вот так это выглядит:
Все пункты меню прописаны в файле grub.cfg. У меня он лежит в папке "/boot/grub/".
Для того чтобы избавиться от лишних пунктов меню можно отредактировать вышеуказанный файл. Структура файла проста:
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
set saved_entry=${prev_saved_entry}
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z ${boot_once} ]; then
saved_entry=${chosen}
save_env saved_entry
fi
}
function recordfail {
set recordfail=1
if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi
}
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=640x480
insmod gfxterm
insmod vbe
if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don't
# understand terminal_output
terminal gfxterm
fi
fi
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
set locale_dir=($root)/boot/grub/locale
set lang=ru
insmod gettext
if [ ${recordfail} = 1 ]; then
set timeout=-1
else
set timeout=10
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Ubuntu, с Linux 2.6.32-41-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
linux /boot/vmlinuz-2.6.32-41-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro quiet splash
initrd /boot/initrd.img-2.6.32-41-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-41-generic (режим восстановления)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
echo 'Загружается Linux 2.6.32-41-generic ...'
linux /boot/vmlinuz-2.6.32-41-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro single
echo 'Загружается начальный ramdisk ...'
initrd /boot/initrd.img-2.6.32-41-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-40-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
linux /boot/vmlinuz-2.6.32-40-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro quiet splash
initrd /boot/initrd.img-2.6.32-40-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-40-generic (режим восстановления)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
echo 'Загружается Linux 2.6.32-40-generic ...'
linux /boot/vmlinuz-2.6.32-40-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro single
echo 'Загружается начальный ramdisk ...'
initrd /boot/initrd.img-2.6.32-40-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-39-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
linux /boot/vmlinuz-2.6.32-39-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro quiet splash
initrd /boot/initrd.img-2.6.32-39-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-39-generic (режим восстановления)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
echo 'Загружается Linux 2.6.32-39-generic ...'
linux /boot/vmlinuz-2.6.32-39-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro single
echo 'Загружается начальный ramdisk ...'
initrd /boot/initrd.img-2.6.32-39-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-38-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
linux /boot/vmlinuz-2.6.32-38-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro quiet splash
initrd /boot/initrd.img-2.6.32-38-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-38-generic (режим восстановления)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
echo 'Загружается Linux 2.6.32-38-generic ...'
linux /boot/vmlinuz-2.6.32-38-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro single
echo 'Загружается начальный ramdisk ...'
initrd /boot/initrd.img-2.6.32-38-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-37-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
linux /boot/vmlinuz-2.6.32-37-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro quiet splash
initrd /boot/initrd.img-2.6.32-37-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-37-generic (режим восстановления)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
echo 'Загружается Linux 2.6.32-37-generic ...'
linux /boot/vmlinuz-2.6.32-37-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro single
echo 'Загружается начальный ramdisk ...'
initrd /boot/initrd.img-2.6.32-37-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-36-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
linux /boot/vmlinuz-2.6.32-36-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro quiet splash
initrd /boot/initrd.img-2.6.32-36-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-36-generic (режим восстановления)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
echo 'Загружается Linux 2.6.32-36-generic ...'
linux /boot/vmlinuz-2.6.32-36-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro single
echo 'Загружается начальный ramdisk ...'
initrd /boot/initrd.img-2.6.32-36-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-35-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
linux /boot/vmlinuz-2.6.32-35-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro quiet splash
initrd /boot/initrd.img-2.6.32-35-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-35-generic (режим восстановления)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
echo 'Загружается Linux 2.6.32-35-generic ...'
linux /boot/vmlinuz-2.6.32-35-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro single
echo 'Загружается начальный ramdisk ...'
initrd /boot/initrd.img-2.6.32-35-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-34-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
linux /boot/vmlinuz-2.6.32-34-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro quiet splash
initrd /boot/initrd.img-2.6.32-34-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-34-generic (режим восстановления)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
echo 'Загружается Linux 2.6.32-34-generic ...'
linux /boot/vmlinuz-2.6.32-34-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro single
echo 'Загружается начальный ramdisk ...'
initrd /boot/initrd.img-2.6.32-34-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-25-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
linux /boot/vmlinuz-2.6.32-25-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro quiet splash
initrd /boot/initrd.img-2.6.32-25-generic
}
menuentry 'Ubuntu, с Linux 2.6.32-25-generic (режим восстановления)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
echo 'Загружается Linux 2.6.32-25-generic ...'
linux /boot/vmlinuz-2.6.32-25-generic root=UUID=7ffdd216-53c0-486d-bf9a-97f6a671756e ro single
echo 'Загружается начальный ramdisk ...'
initrd /boot/initrd.img-2.6.32-25-generic
}
### END /etc/grub.d/10_linux ###### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set 7ffdd216-53c0-486d-bf9a-97f6a671756e
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows 7 (loader) (on /dev/sda1)" {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set D0469A5E469A455E
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
Красным выделено то, что редактировать не рекомендуется.
Зеленым и полужирным оранжевым прописаны пункты меню выводимые на экран при загрузке.
Разобраться очень просто. Они все идентичны, кроме "### BEGIN /etc/grub.d/20_memtest86+ ###" и "### BEGIN /etc/grub.d/30_os-prober ###". Первый отвечает за запуск тестирования памяти, а второй за загрузку Windows, установленной как вторая ОСь. Естественно эти записи удалять не стоит. Все что выделено полужирным оранжевым можно сносить. :)
Хочу заметить, что заполнением отдельных секций этого файла занимается скрипт расположенный по адресу "/usr/sbin/grub-mkconfig". В нем есть следующий блок:
EOF
for i in ${grub_mkconfig_dir}/* ; do
case "$i" in
# emacsen backup files. FIXME: support other editors
*~) ;;
*)
if grub_file_is_not_garbage "$i" && test -x "$i" ; then
echo
echo "### BEGIN $i ###"
"$i"
echo "### END $i ###"
fi
;;
esac
done
Который перебирает выполняет по очереди скрипты находящиеся по адресу "/etc/grub.d". За заполнение раздела который нам мешает отвечает скрипт "10_linux". Вероятно, его можно модифицировать чтобы избавится от периодической ручной чистки, но пока в этом разбираться не буду по ряду причин. Может кто-то опередит меня и что-то предложит.
Итак, подведем итог. Удалив из текста "grub.cfg" строки которые я выделил полужирным зеленым, при загрузке я получил следующий результат:
Все загрузилось, все работает. :)
Комментариев нет:
Отправить комментарий