Установка Arch Linux: ОШИБКА: Корневое устройство смонтировано успешно, но /sbin/init не существует

#installation #archlinux #btrfs

Вопрос:

Я довольно новичок в Linux, но решил сразу погрузиться в arch-linux, чтобы ознакомиться со всем. К сожалению, я даже не могу закончить установку — позор мне.

Ошибка при загрузке после настройки arch заключается в:

 ERROR: Root device mounted successfully, but /sbin/init does not exist.
Bailing out, you are on your own. Good luck.
 

Я пошел на btrfs на luks на lvm

Макет выглядит следующим образом

 sda
 |- sda1          512MB     fat32 /boot
 `- sda2          remaining lvm
     |- cryptswap 4GB       swap
     |- crypttmp  2GB       tmp   /tmp
     `- cryptroot remaining btrfs
         |- @                     /
         |- @home                 /home
         |- @snapshots            /.snapshots
         |- @log                  /var/log
         |- @cache                /var/cache
         `- @tmp                  /var/tmp
 

Это команды и конфигурации, которые я использовал для настройки arch:

dd status=progress if=/dev/zero of=/dev/sda стереть диск

gdisk /dev/sda

o очистить таблицу gpt

загрузочный раздел

 n
↵
↵
 512M
ef00
 

раздел lvm

 n
↵
↵
↵
8e00
 

w запись изменений разделов

настройка lvm

 pvcreate /dev/sda2
vgcreate vg1 /dev/sda2
lvcreate -L 4G -n cryptswap vg1
lvcreate -L 2G -n crypttmp vg1
lvcreate -l 100%FREE cryptroot vg1
 

настройка шифрования

 cryptsetup luksFormat /dev/vg1/cryptroot
cryptsetup open /dev/vg1/cryptroot root
 

создание файловых систем

 mkfs.fat -F32 -n BOOT /dev/sda1
mkfs.btrfs --label ROOT /dev/mapper/root
 

create btrfs subvolumes

 mount /dev/mapper/root /mnt
cd /mnt

btrfs subvolume create @
btrfs subvolume create @home
btrfs subvolume create @snapshots
btrfs subvolume create @log
btrfs subvolume create @cache
btrfs subvolume create @tmp

cd ..
umount /mnt
 

mount btrfs subvolumes and BOOT partition

 mount -o noatime,compress=lzo,space_cache=v2,discard=async,subvol=@ /dev/mapper/root /mnt

mkdir /mnt/home
mount -o noatime,compress=lzo,space_cache=v2,discard=async,subvol=@home /dev/mapper/root /mnt/home

mkdir /mnt/.snapshots
mount -o noatime,compress=lzo,space_cache=v2,discard=async,subvol=@snapshots /dev/mapper/root /mnt/.snapshots

mkdir /mnt/var
mkdir /mnt/var/log
mount -o noatime,compress=lzo,space_cache=v2,discard=async,subvol=@log /dev/mapper/root /mnt/var/log

mkdir /mnt/var/cache
mount -o noatime,compress=lzo,space_cache=v2,discard=async,subvol=@cache /dev/mapper/root /mnt/var/cache

mkdir /mnt/var/tmp
mount -o noatime,compress=lzo,space_cache=v2,discard=async,subvol=@tmp /dev/mapper/root /mnt/var/tmp

mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
 

pacstrap /mnt base linux linux-firmware lvm2 btrfs-progs amd-ucode vim install necessities

genfstab -L /mnt > mnt/etc/fstab generate fstab

arch-chroot /mnt

basic configuration

 ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
hwclock --systohc
vim /etc/locale.gen
locale-gen
echo "LANG=en_US.UTF-8" >> /etc/locale.conf
echo "KEYMAP=de-latin1" >> /etc/vconsole.conf
echo "devstation" >> /etc/hostname
vim /etc/hosts
 

vim /etc/mkinitcpio.conf

the mkinitcpio.conf content:

 MODULES=(btrfs)
HOOKS=(base udev autodetect keyboard keymap consolefont modconf block lvm2 encrypt filesystems fsck)
 

mkinitcpio -p linux

bootctl install

echo "default arch" > /boot/loader/loader.conf

vim /boot/loader/entries/arch.conf

the arch.conf content

 title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options cryptdevice=UUID={/dev/vg1/cryptroot uuid inserted here}:root root=/dev/mapper/root rw
 

exit

umount -a

poweroff

Извлеките установочный носитель arch из компьютера и запустите его.

Загрузочный вывод

 :: running early hook [udev]
Starting version 248.3-2-arch
:: running hook [udev]
:: Triggering uevents...
:: running hook [keymap]
:: Loading keymap...done.
:: running hook [encrypt]

A password is requires to acces the root volume:
Enter passphrase for /dev/mapper/vg1-cryptroot: {inserting passphrase}
:: performing fsck on '/dev/mapper/root'
:: mounting '/dev/mapper/root' on real root
:: running cleanup hook [udev]
ERROR: Root device mounted successfully, but /sbin/init does not exist.
Bailing out, you are on your own. Good luck.

sh: can't access tty; job control turned off
[rootfs ]#
 

Очевидно, я еще не настроил cryptswap и cryptmp. Они будут настроены с помощью crypttab и fstab. Я просто упоминаю об этом и очень сомневаюсь, что это часть проблемы, потому что на данный момент они просто разделы, которые ничем не распознаются, не так ли.

Я надеюсь, что не пропустил ни одной команды или конфигурации, которую я сделал — я печатаю видео, которые я смотрел, и из головы, потому что ни в одном видео, которое я нашел, не было конфигурации btrfs, luks, lvm, с которой я работал. Спасибо за ваше время/помощь и за то, что дочитали это до конца.

Ответ №1:

Добавление rootflags=subvol=@ в /boot/loader/entries/arch.conf нравится так

 title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options cryptdevice=UUID={/dev/vg1/cryptroot uuid inserted here}:root root=/dev/mapper/root rootflags=subvol=@ rw
 

сделал свое дело.