LINUX.ORG.RU

Установка Debian. Кастомные хуки initramfs и настройка LVM.

 , , ,


1

1

Пришло время попробовать что-то новое, для меня это стал Debian, до этого использовал Arch. Но прямо совсем не понимаю как здесь устроен initramfs.

В плане, на arch использую нестандартное шифрование, /boot и GRUB вынесены на флешку, соотвественно был сделан хук которйюый вскрывает контейнеры монтирует все как надо, по феншую.

Но вот совсем не могу понять как все это реализовать на Debian’е. Вроде как на нем даже можно использовать mkinitcpio, но хочется обойтись стандартными средствами.

Используя mkinitcpio, установка выглядит примерно так:

  • micro /etc/initcpio/hooks/customencrypt
  • cp /usr/lib/initcpio/install/encrypt /etc/initcpio/install/customencrypt
  • micro /etc/mkinitcpio.conf
  • mkinitcpio -p /etc/mkinitcpio.d/linux##.preset

Соответсвенно в customencrypt пишу shell(bash) скрипт, который проверяет по /dev/disk/by-id вставлена ли флешка, далее он открывает(cryptsetup open) контейнер, монтирует его в /mnt, открывает ключ, и собственно открывает уже /dev/sda, закрывает ключ, umount /mnt, на этом месте скрипт кончается, разделы lvm, а также boot монтируются согласно /etc/fstab.

В конфиге MODULES=(loop) и добавление customencrypt и lvm2 в HOOKS=()

Соответсвенно, как это все будет аналогично выглядеть в Debian?

Также имеется вопрос касающийся lvm, совсем недавно начал использовать его, извините, на arch при установке совершаются такие действия:

  • mkdir /mnt/hostlvm
  • mount --bind /run/lvm /mnt/run/lvm
  • Входим в chroot.
  • ln -s /hostlvm /run/lvm

Нужно ли это делать на Debian? Насколько мне известно в /run/lvm находятся временные файлы lvm, верно?, возможно можно провести аналогию с /proc?

Спасибо заранее.



Последнее исправление: Lampalampalamp (всего исправлений: 5)
Ответ на: комментарий от Vsevolod-linuxoid

Получается LVM on LUKS.

Как и сказал /boot на флешке. В контейнере флешки(/dev/sdb1) лежит /boot, тут это как /dev/mapper/boot получается. Ну и внутри него ключик.

В контейнере диска уже vg соответсвенно с / и /home.

По факту надо куда-то впихнуть скрипт который будет делать это(сам скрипт, как есть, показывать не буду, а то вдруг скоро за шифрование данных начнут… делать непотребности!! :3):

run_hook() {
modprobe -a -q dm-crypt >/dev/null 2>&1
modprobe loop
[ "${quiet}" = "y" ] && CSQUIET=">/dev/null"
while [ ! -L '/dev/disk/by-id/тут_флешка' ]; do
  echo 'Pony!!'
  sleep 1
done

cryptsetup open /dev/sdc1 boot
mount /dev/mapper/boot /mnt
cd /mnt
cryptsetup open key.img key
cryptsetup open тралялялляялля /dev/sda1
cryptsetup close key
umount /mnt
}```

Ну, как бы не понимаю, а куда пихать? И как генерировать initramfs, всегда казалась что в дебиане и рхел, используется dracit, это верно?

Вообще, хотелось-бы не просто копировать вставить команды, а понять как это работает. В случае с mkinitcpio это понимаение произошло относительно быстро.
Lampalampalamp
() автор топика
Ответ на: комментарий от Vsevolod-linuxoid

Имеете в виду стоит сделать так?

  • /dev/sda1
    • vg0-root
    • vg0-home
  • /dev/sda2
    • boot (luks container)

Наверное это не сильно отличается от выноса на флешку.

  • /dev/sda1
    • container
      • vg0-root
      • vg0-home
      • vg0-boot

Если так, то не вариант, я хочу иметь зашифрованный /boot и зашифрованный ключ. Как я понял вы предлогаете сделать по этой схеме, в таком случае будет только один контейнер, ключ соответсвенно будет сгенерирован автоматически и где-то там находится.

В общем, это скорее станет холиваром, нежели адекватным общением, извините.

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

Ну, как бы не понимаю, а куда пихать?

/etc/initramfs-tools/scripts/*/ - тут скрипты вызываемые в разные моменты запуска, туда и клади. Подробности - в исходнике initramfs-архива (распакуй его и посмотри), там всё просто.

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

Спасибо. А что насчет lvm? Также хотелось-бы узнать, где я могу найти оффициальный гайд по установке вручуную, через терминал… По запросу guide for manual install debian, выдает совсем не то, а доверять таким огрызкам не хочется.

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

Ну нет, думаю до сих пор сомнений много.

В плане все разметил, сделал как надо, и вот… Точно scripts? Не hooks? Смотрю по /usr/share/initramfs-tools/hooks и именно здесь находится все crypt####.

Посоветовавшись с нейросетью, она сказала что если в scripts, то стоит положить init-bottom, для примера здесь находится udev…

Вообще… Тут стоит сделать по аналогии с mkinitcpio? В плане там hooks и install диры, а получается здесь надо и в scripts и hooks тоже ложить?

Тащемта при выполнении update-initramfs -u Есть только WARNING мол target pv0(контейнер в /dev/sda) не найден в /etc/crypttab. Если туда добавить как надо… Оно будет работать без того скрипта?

В общем, дисскас.

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

Ты просто пытаешься руками сделать то, что давно автоматизировано. Правда, не в том виде, в котором ты хочешь, вероятно.

У тебя как проходит расшифровка, вводом фразы или по ключу с флешки?

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Сначала grub спрашивает пароль от флешки, дальше грузит в консоль, повтор ввода пароля от флешки, ввод пароля от ключа.

Проблема в том просто, что ключ читается с определенного блока, и имеет не стандартный размер.

Все же подумал, стоило раньше, лол, если просто интересно пощупать, то можно обойтись стандартным шифрованием. Но как основная система – может нет, пердоленк ради пердоленка?

Тащемта подумал очень понравился void, он очень удобный, конечно относительно много проблем с либами и пр. Но почему-бы не скомпилировать или решить проблему отсутсвия софта с помощью bedrock?

Мдам…

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