[SOLVED] grub2+lvm2
earl1k 3 октября, 2011 - 17:47
Создал том lvm, на нём создал все разделы включая boot. Чтобы иметь возможность загружаться прямо с lvm поставил grub-1.99-r2. В его комплекте есть утилита grub2-mkconfig, которая на основе скриптов в /etc/grub.d/ умеет автоматически создавать конфиг. У меня генерируется вот такой конфиг:
Generating grub.cfg ... # # DO NOT EDIT THIS FILE # # It is automatically generated by grub2-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 load_video { cat: /boot/grub2/video.lst: No such file or directory true } if sleep --interruptible 0 ; then set timeout=10 fi ### END /etc/grub.d/00_header ### ### BEGIN /etc/grub.d/10_linux ### ### END /etc/grub.d/10_linux ### ### BEGIN /etc/grub.d/20_linux_xen ### ### END /etc/grub.d/20_linux_xen ### ### BEGIN /etc/grub.d/30_os-prober ### ### 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/41_custom ### if [ -f $prefix/custom.cfg ]; then source $prefix/custom.cfg; fi ### END /etc/grub.d/41_custom ### done
Приходится конфиг подправлять вручную, чтобы система загружалась.
--- /root/grub.cfg 2011-10-03 17:44:59.000000000 +0000 +++ /boot/grub2/grub.cfg 2011-10-03 17:26:58.000000000 +0000 @@ -47,7 +47,7 @@ set root='(vg-boot)' search --no-floppy --fs-uuid --set=root c6fab5f5-4b6c-4299-bff1-4fc98f305356 echo 'Loading Linux 2.6.39-r3 ...' - linux /kernel-2.6.39-r3 root=/dev/mapper/vg-root ro + linux /kernel-2.6.39-r3 root=/dev/ram0 ro dolvm real_root=/dev/mapper/vg-root init=/linuxrc echo 'Loading initial ramdisk ...' initrd /initramfs-genkernel-2.6.39-r3 }
Можно подправить /etc/grub.d/10_linux, и это решит проблему. Есть ли другие пути и вообще как лучше поступить в данном случае?
»
- Для комментирования войдите или зарегистрируйтесь
/etc/default/grub
GRUB_CMDLINE_LINUX="blablabla"
гугл, да.
ЗЫ, почитайте скрипты генерации. Вам, по любому их придется подправить, чтобы всё было правильно. Только, одно дело полностью всё там прописать и потом менять каждый раз когда это понадобится, а другое - к root= добавить "real_" и забыть, при том держа основную конфигурационную часть строки в переменной конфига
ЗЫЫ.
GRUB_CMDLINE_LINUX уже нашел.
GRUB_CMDLINE_LINUX уже нашел. Пожалуй пойду еще поковыряюсь и все же немного поправлю скрипты по вашему совету. Спасибо
вообще как показывает
вообще как показывает практика лучше вообще на lvm не держать boot раздел, поскольку пользы от этого нет никакой, LVM создавался для динамического конфигурирования раздела - это было и есть удобно. Boot раздел нужен только один раз при загрузке и как правило его расширение не суть важный вопрос. Поэтому если ваш вопрос из сферы образования то он имеет смысл для обсуждения, но если это практический вопрос то держать boot на lvm это моветон.
Что касается раздела root. То абсолютно нет проблем с grub#1 и lvm если вкопмпилировать в ядро соответствующий модуль dm или использовать initrd в другом случае.
Про boot раздел на lvm я в
Про boot раздел на lvm я в курсе, что это считается плохим тоном.
Если вынести boot отдельно, то при этом как раз можно использовать grub#1, но у меня задача состоит в том, чтобы boot был на томе lvm, поэтому и использую grub#2
ЗЫ Никаких возражений против вышесказанного вами не имею и полностью согласен, но ничего смертельного все же не нахожу в том, чтобы boot был внутри lvm.