от Lucifer

Та … аз отново се върнах на Linux като daily driver за мобилната машина.

Счупих се да търся нещо, което хем да им правилното количество RAM, хем да има свестен процесор, хем да има батерия … и най-вече да няма всички онези NVidia Optimus кретении, които слагат в последни години. Разбира се, защото в повечето случай използвам мобилната машина за Web Dev, а Linux-a си е Linux (пробвали ли сте се да пускате PHPUnit под Windows?). И защото мобилната машина винаги е в движение, разбира се трябва да е криптирана. Като гаден Slacker, съм свикнал с неговия инсталатор и с цялостната ръчна конфигурация.

В новите версии на Slackware (с ядро след 4.14.16), Patrick е сменил LILO-то с ELILO – boot loader, който работи с GPT и EFI/UEFI. Няма да влизам в спора за boot loader-и и войната на GRUB срещу LILO … безсмислено е. ELILO ми върши работа, за това го използвам.

Та … как да инсталираме Slackware с LUKS и LVM.

1. Раделяне на диска.

Преди да започнем инсталацията, ще се наложи да си нацепим подобаващо диска. Лично аз използвам gdisk. Диска трябва да има следните дялове:

  • /dev/sdx1 – 32MB BIOS Boot partition (код EF02)
  • /dev/sdx2 – 100 – 200 MB EFI System (код EF00)
  • /dev/sdx3 – 512MB /boot (нормален Linux дял в който трябва да стои boot частта на операционната система). Този дял трябва да стои не криптиран. Тук се намира ядрото и initrd файла, които трябва да заредят операционната система. Аз лично използвам ext4 файлова система, но тук избора си е ваш.
  • /dev/sdx4 – Всичко останало Linux LVM (код 8Е00) – това ще е основната файлова структура, която ще използва Logical Volume Manager или LVM за да се разпорежда с мястото. Хубавото на LVM е че може после да добавите още дискове и да си разширите файловата система.

2. Криптиране на дяла

cryptsetup luksFormat -c aes-xts-plain64:sha512 -h sha512 -s 256 /dev/sdx4

или крйптирай дял 4 със шифър sha512 и hash sha512, с block size 256. След тази команда ще в поиска парола. Това ще е основната парола с която ще влизате в системата, така че се погрижете да е сериозна.

cryptsetup luksOpen /dev/sdx4 vault

или отвори дял 4 и го мапни към /dev/mapper/vault . Тук ще ви поиска паролата за да отключите дяла, който криптирахме преди малко. И сме готови за …

3. LVM разпределение

Идеята е да създадем виртуален контейнер, който да покрива целия „физически дял“, който да разделим на частите нужни от операционната система. Това е много опростено обяснение разбира се, но за по сериозно занимаване с LVM трябва да четете на друго място. Аз лично знам как да го ползвам и до там. Първо създаваме „физическа група“, върху която създаваме виртуална група, която аз ще кръстя slack. В тази виртуална група създаваме логическите дяловете. При мен са разделени на root, swap и home.

pvcreate /dev/mapper/vault
vgcreate slack /dev/mapper/vault
lvcreate -C y -L 4G -n swap slack
lvcreate -C n -L 20G -n root slack
lvcreate -C n -l 100%FREE -n home slack

4. Инсталирайте си операционната система.

Инсталацията на Slack е малко дървена, но като цяло е елементарна. Важното тук е да закачите правилния дял в към правилния път – root към /, /dev/sdx3 -> /boot, home към /home. По време на иснталацията, инсталатора ще ви каже че е засякъл EFI партитион, дали искате да я закачите на правилното място – искате. Повярвайте – искате.

5. Създаване на initrd

Тъй като файловата система се намира на логически дял и ядрото няма как да я зареди, трябва да му добавим малко модули (отново опростявам причините, не ме яжте за това). Това което трябва да направим е да създадем INITRD с необходимите модули. В случая – при мен е използването на ext4 файлова система за четене на криптирания виртуален роот. За тази цел след края на иснталацията не рестартирайте машината. Ако го направите или ако нещо друго се обърка – има добре описана поредица от действия в документацията на Slackware.

В командния промпт влезте в директория /mnt и направете chroot

cd /mnt
chroot

Вижте кой ви е кернела (в моя случай 4.14.16) и създайте initrd-то със следната команда:

mkinitrd -c -k 4.14.16 -m ext4 -f ext4 -r /dev/slack/root -C /dev/sdx4

et voila. Имаме създаден initrd … който в момента не ни помага с нищо. За това трябва да копираме initrd.gz в EFI Boot директорията:

cp /boot/initrd.gz /boot/efi/EFI/Slackware/

После трябва да добавим initrd към конфигурацията, за да може boot loader-а да зареди през тях.

nano /boot/efi/EFI/Slackware/elilo.conf

Вътре ще намерите дефиниция на image-а, който ще се използва. При мен тази дефиниция изглежда така:

chooser=simple
delay=1
timeout=1
#
image=vmlinuz
        label=vmlinuz
        read-only
        append="root=/dev/slack/root vga=normal ro"

Преди label добавете нов ред на който слагате:

initrd=initrd.gz

6. Restart and profit

Нещо много важно трябва да се обърне внимание на така направената нова версия на Slackware – след всеки upgrade на kernel пакета не трябва да забравяме да си копираме новия /boot/vmlinuz то /boot/initrd.gz /boot/efi/EFI/Slackware/ защото ELILO чете от там, за да зарежда системата.

Надявам се това, да ви спести време и нерви. Като човек, който не може може да се разбере с Ubuntu тъпотийте, това е идеалния начин да имам пълна сигурност в системата си.

Ваш,
Lucifer

Вашият коментар