[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.