LINUX.ORG.RU

Помогите поставить arch на lvm

 , ,


0

1

Прочитал в русской arch wiki

Важно: /boot не может находиться внутри LVM раздела т.к. grub (версии<1.95) не имеет поддержки загрузки с LVM.

Так как дефолтно давно уже GRUB2, значит я могу boot на lvm делать?

Ну а в остальном, вот как делаю, постараюсь ничего не забыть:

  • modprobe dm-mod
  • На sda создаю 1 раздел под lvm и в нём уже размечаю root, home, swap
  • pacman -S grub-bios
  • mkinitcpio -p linux
  • раскоментирую в mkinitcpio.conf строку

    HOOKS=«base udev ... block lvm2 filesystems»

    И включаю необходимые модули

    MODULES=«dm-thin-pool»
    BINARIES=«/usr/bin/thin_check /usr/bin/pdata_tools»

  • grub-mkonfig -o /boot/grub/grub.cfg
  • export ROOTDELAY=60
  • root=/dev/mapper/vg01-root
  • меня в groob.cfg root=UUID... на root=/dev/mapper/vg-root

Подскажите, что я делаю не так или что пропускаю, после установки у меня grub не находит root. Получаю вывод при загруки grub'ом ядра

error: no such device: (и тут UUID дивайся, переписывать не буду)



Последнее исправление: Hi (всего исправлений: 1)

root=/dev/mapper/vg01-root

Это ты в grub.cfg так пишешь? Мне кажется, что он так не понимает.

Попробуй из консоли вручную потыкать.

anonymous
()
Ответ на: комментарий от anonymous

GRUB2 так понимает, проверял на Ubuntu. Просто может я что-то пропустил. Я до этого arch только без lvm ставил, опыта нет.

Hi
() автор топика

У меня boot не в lvm, но это ибо у меня uefi.

Рутовый раздел пиши по uuid'у.

Я efibootmgr юзал.

В mkinitcpio.conf:

> cat /etc/mkinitcpio.conf | grep "^[^#]"
MODULES=""
BINARIES=""
FILES=""
HOOKS="base udev autodetect modconf block lvm2 filesystems keyboard fsck"

matrixd
()
Ответ на: комментарий от kiotoze

Прописал это в GRUB.

Вообще, у меня ошибка

grub-install /dev/sda
Parse error at byte 45370 (line 1028): unexpected token Failed to load config file /etc/lvm/lvm.conf 
Ошибки нет, если в вышеупомянутом lvm.conf изменить параметр use_lvmetad=1 на lvmetad=0. Но как я понимаю, это демон необходим для загрузки с lvm и убирать его мне нельзя. Хотя может я и ошибаюсь.

Hi
() автор топика
Ответ на: комментарий от Hi

Аналогичная ошибка при использовании vgcan или modprobe dm-mod в chroot'e.

Hi
() автор топика

Получаю вывод при загруки grub'ом ядра >error: no such device: (и тут UUID дивайся, переписывать не буду)

Не понимаю, что это за UUID, в выводе blkid его нет, вообще.

Hi
() автор топика
Ответ на: комментарий от Hi

это демон необходим для загрузки с lvm

Нет, это бонус

anonymous
()
Ответ на: комментарий от Hi

Не понимаю, что это за UUID.

Понял, просто я без croot'а grub-mkonfig -o /boot/grub/grub.cfg выполнил. Исправил это, но всё равно не взлетает.

Hi
() автор топика
Ответ на: комментарий от anonymous

lsblk -o +UUID

NAME          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT UUID
sda             8:0    0    30G  0 disk            
├─sda1          8:1    0   238M  0 part /boot      
└─sda2          8:2    0  29.8G  0 part            
  └─vg01-root 254:0    0    15G  0 lvm  /                   
sr0            11:0    1   701M  0 rom             
loop0           7:0    0 307.8M  1 loop            

blkid

/dev/sr0: UUID="2016-02-01-15-37-21-00" LABEL="ARCH_201602" TYPE="iso9660" PTUUID="3dd32031" PTTYPE="dos"
/dev/sda1: LABEL="boot" UUID="f38db12b-51a4-48ad-8337-a742d1724ee6" TYPE="ext2" PARTUUID="56c7f32f-01"
/dev/sda2: UUID="AWLUd3-xjRU-imIC-OidX-3kW6-AXhF-YNiEfP" TYPE="LVM2_member" PARTUUID="56c7f32f-02"
/dev/loop0: TYPE="squashfs"
/dev/mapper/vg01-root: LABEL="root" UUID="ef4ebd4d-6f72-4b41-8591-71390ff406c7" TYPE="ext4"

Hi
() автор топика
Ответ на: комментарий от matrixd

На самом деле вроде бы ничего сложного не делал. Сейчас попробую по новой установить. Удалю всё. У меня не UEFI кстати, забыл упомянуть раньше.

Hi
() автор топика
Ответ на: комментарий от matrixd

Подскажи, как это сделать, пожалуйста.

Kernel options

If the root file system resides in a logical volume, the root= kernel parameter must be pointed to the mapped device, e.g /dev/mapper/vg-name-lv-name.

You may also need dolvm.

Hi
() автор топика
Ответ на: комментарий от Hi

Попробуй минимальный набор шагов же. Если у тебя рут без всякго зеркалирования и т.д.

//установка всякой дребедени и базовая натсройка

gen-fstab -U

arch-chroot

pacman -S lvm2

добавляешь в HOOKS lvm2, причем lvm2 емнип должен быть как у меня в примере после block, до filesystems

mkinitcpio -p linux

читаешь ошибки, если есть

pacman -S grub

grub-install /dev/sdX

matrixd
()
Ответ на: комментарий от matrixd

В общем, если сделать точно как ты написал, то UUID рута будет запрашивать левый. Если сделать потом

grub-mkconfig -o /boot/grub/grub.cfg
то будет ошибка:

/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad: No such file or directory. Falling back to internal scanning.

но загрузка GRUB2 пойдёт чуть дальше. В загрузке появятся строки

Loading Linux Linux
Loading initial ramdisk
starting version 229

*Это uuid /dev/mapper/vg01-root

Запуск сокета не помогает в chroot'е

systemctl start lvm2-lvmetad.socket
Running in chroot, ignoring request.

Ошибка пропадает если изменить в /etc/lvm/lvm.conf use_lvmetad = 1 на use_lvmetad = 0

После чего grub-mkconfig -o /boot/grub/grub.cfg проходит без ошибок.

Но остаётся всё та же ошибка

Hi
() автор топика
Ответ на: комментарий от matrixd

mkinitcpio -p linux
читаешь ошибки, если есть

Возможно потеряны фирмвари для модулей aic94xx и wd719x. Других ошибок нет.

Hi
() автор топика

Могу записать на видео как я устанавливаю. А то уже ничего не помогает и куда смотреть, не понимаю.

Hi
() автор топика
Ответ на: комментарий от Hi

В общем, если сделать точно как ты написал, то UUID рута будет запрашивать левый.

Из чрута делал? С чего взял что левый? А, да. Там же еще что-то надо было в конфиге граба для лвм добавить. Выше где-то был линк. Алсо, гугули.

matrixd
()
Ответ на: комментарий от matrixd

В чруте, по blkid'у сверил, в конфиге груба поменять на лвм если сам губ внутри лвм (я пока груб на sda1 ставлю). Гуглю-гуглю. https://wiki.archlinux.org/index.php/LVM#Kernel_options Вот это пока не пойму как сделать

Hi
() автор топика
Ответ на: комментарий от Hi

Ты из рекавери консоли посмотри как там твой LVM зовётся, примонтируй его и 'exit', потом в конфиге граба поправишь.

anonymous
()
Ответ на: комментарий от user_nobody

Вроде бы немного меньше возиться чем если всё через LVM запилить. Я просто решил сначала с рутом на lv поставить, а потом уже полностью на lv пробовать.

Hi
() автор топика
Ответ на: комментарий от anonymous

Если я тебя правильно понял, то при загрузке груба зашёл в edit режим и поменял uuid lv на его адрес /dev/mapper/vg01-root. Получилось примерно тоже самое. Мне кажется, может модуль не подгружается или ещё какие-то проблемы в конфигурациях ядра или системди. Ну это пальцем в небо, конечно. Гуглю и пробую всякое.

Hi
() автор топика
Ответ на: комментарий от Hi

Не, не из граба, он же рамдрайв и ядро находит! Всё же грузится. А вот параметр 'root' у тебя указывает мимо. Поэтому после загрузки консоли с рамдрайва попробуй найти диск в /dev/... и смонтировать вручную. После выхода из консоли (exit) загрузка должна продолжится ну или, по крайней мере, ты узнаешь что тебе писать в параметре ядра в конфиге граба.

Ещё бывает что udev подтупливает и не сразу создаёт ноды, а init не ждёт, собака такая.

anonymous
()
Ответ на: комментарий от anonymous

Он не видит логический том.

mount -t ext4 /dev/mapper/vg01-root
mount: special device /dev/mapper/vg01-root
Hi
() автор топика
Ответ на: комментарий от anonymous

Попытался подгрузить dm-mod, что бы он увидел логические тома.

modprobe dm-mod
modprobe: FATAL: Module dm-mod not found in directory /lib/modules/4.4.1-2-ARCH

Наверное, оно и нормально, раз он рут не видит, то и библиотеки не увидит.

Hi
() автор топика

Что ещё стоит посмотреть? Может проблема из-за того, что я boot на другом разделе чем root?

Hi
() автор топика
Ответ на: комментарий от Hi

Может какой модуль в initrd отсутствует? Попробуй failsafe вариант...

А ещё мне вот это не нравится:

...
##   This setup loads an lvm2 volume group on a usb device.
HOOKS="base udev block lvm2 filesystems"
#
##   NOTE: If you have /usr on a separate partition, you MUST include the
#    usr, fsck and shutdown hooks.
HOOKS="base udev autodetect modconf block filesystems keyboard fsck"
...

Получается, что у тебя нет хука lvm2 и, соответственно, никаких модулей и правил udev для lvm в твоём initrd.

Хук autodetect, к сожалению, не определяет lvm.

anonymous
()
Ответ на: комментарий от Hi

Посмотри внимательно! У тебя переменная HOOKS переопределяется. Тебе надо закомментировать строку без lvm2 и пересобрать initrd.

anonymous
()
Ответ на: комментарий от anonymous

Посмотри внимательно!

Божечьки, спасибо. Добавил во вторую строчку lvm, подгрузил сделал mkinitcpio -p linux, хук lvm2 подгрузился, но в остальном пока точно так же всё почему-то.

Hi
() автор топика
Ответ на: комментарий от anonymous

сделал всё на lvm+добавил lvm в GRUB_PRELOAD_MODULES Всё заработало. Всем спасибо, особенно тебе, анон.

Hi
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.