Instalacja Arch linuxa – Cześć 1 – LVM+LUKS+MDADM+GRUB

archlogo

0. Wstęp

W tej części wpisu “Instalacja Arch linuxa”, zajmiemy się od przygotowaniu dysków do pracy i instalacji minimalnej podstawy systemu, potrzebnej do odpalenia. Chcemy aby nasz system był mega bezpieczny, czyli żeby brał pod uwagę redundancje danych( ewentualny pad jednego z dysków), żeby samo FBI mogło sobie pomarzyć o grzebaniu w danych i jeszcze do tego, żeby jego budowa była w miarę elastyczna 🙂 Do tego użyjemy trzech narzędzi i system Archlinux:
mdadm– programowy raid1, czyli coś co bedzie kopiować wszystkie dane z dysku jeden na dysk drugi i umożliwiać odtworzenie danych na kolejny podmieniony dysk,
lvm – tworzy partycje logiczną na dysku.
cryptosetup -szyfruje zawartość dysku.

0.1 Jak wygląda proces rozruchu(MBR)?

  • Uruchomienie komputera – Power-on self-test – procedury testowe.
  • BIOS ładuje potrzebne komponenty – kontroler klawiatury, dysku …
  • BIOS wczytuje pierwsze 440( pierwszy sektor 512 bajtów) Bajtów(MBR) pierwszego dysk z ustawień kolejności
  • W tych pierwszych 440 bajtach znajduje sie skok( mały program) do bootloadera (grub)
  • Bootloader ładuje jajko linuxa
  • Bootloader ładuje jajko ramdisk
  • Uruchamianie kernela

0.2 Kto ten Arch Linux

Prosty w konstrukcji system operacyjny, niby zarezerwowany do zaawansowanych użytkowników. Tworzony od roku 2002 od zera. Budowany w myśli trzech zasad:

  • Prostota i „lekkość”, czyli generalnie podążanie za zasadą KISS.
  • Graficzny interfejs jest mniej istotny, konsola FTW
  • Każdy może dołożyć swoja cegiełke do budowy i rozwoju systemu

0.3 Co jest do roboty?

Zakładam, że mamy dwa dyski po 40GiB, na rysunku znajduje się mniej więcej to co chcemy stworzyć:
dyski-linux

Użyte wersje oprogramowania:

  • Archlinux 4.10.1-1-ARCH – live-cd 2016-12
  • lvm 2.02.168(2) (2016-11-30)
  • mdadm– v3.4 – 28th January 2016
  • System x86_64
  • bios bez UEFI (SeaBios – kvm na proxmoxie)

1. A więc do roboty 🙂

Włożyliśmy świeżo wypalona płytę z obrazem Archa ( ewentualnie usb, nie wnikam 😛 ) do napędu i po zbootowaniu powinno nas powitać takie menu:
arch-cd-boot-menu
Wybieramy pierwszą opcje (Boot Arch x86..)-> ENTER, Czekamy aż konsola będzie gotowa do użycia root@archiso.

2. Czyszczenie dysków, tworzenie partycji

Pierwszą rzeczą, którą musimy ogarnąć to tablica MBR na obu dyskach. Przed tą operacją, dobrze jest oczyścić dyski z metadanych ( ext4 to twardy skurcz.. 🙂 )

dd if=/dev/zero of=/dev/vda bs=1M dd if=/dev/zero of=/dev/vdb bs=1M ### LUb bardziej ale długo ! shred --verbose --random-source=/dev/urandom --iterations=3 /dev/vda shred --verbose --random-source=/dev/urandom --iterations=3 /dev/vdb

Tworzymy partycje za pomocą cfdisk i klonujemy to samo na drugi dysk(vdb):

cfdisk /dev/vda # Slect label type : DOS #/dev/vda1 : start= 2048, size= 409600, type=fd, bootable #/dev/vda2 : start= 411648, size= 83474432, type=fd sfdisk -d /dev/vda > table sfdisk /dev/vdb < table

cfdisk,sfdisk – narzędzia do edycji głównej tablicy z informacja o partycjach – MBR(dos).

3.Uruchomienie dwóch soft raidów 1

# Potrzebne moduły do jajka modprobe dm-mod modprobe dm_crypt # Tworzymy sodt raid typu 1 składającego się z dwóch dysków mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=0.90 /dev/vda1 /dev/vdb1 mdadm --create /dev/md1 --level=1 --raid-devices=2 --metadata=0.90 /dev/vda2 /dev/vdb2 cat /proc/mdstat # czekamy na 100%

po wykonaniu czekamy na zakończenie synchronizacji ( może trochę potrwać )
cat /proc/mdstats

4. Szyfrowanie soft radiu /dev/md1

Szyfrujemy dysk /dev/md1 za pomocą użycia hasła( podajemy go) i ponownie go otwieramy juz zaszyfrowany dysk używając podanego przez nas hasła:

cryptsetup --cipher=aes-xts-plain --verify-passphrase --key-size=512 luksFormat /dev/md1 #DUZE - YES # podajemy hasełko cryptsetup luksOpen /dev/md1 cryptdisk # podajemy hasełko

5. Konfiguracja woluminów logicznych LVM

# stworzenie groupy vgSystem i woluminów lvRoot i lvHome do niej należących pvcreate /dev/mapper/cryptdisk vgcreate vgSystem /dev/mapper/cryptdisk lvcreate --size 30G --name lvRoot vgSystem lvcreate --size 9G --name lvHome vgSystem lvcreate --extents +100%FREE --name lvSwap vgSystem # stworzenie systemu plików mkfs.ext4 -E discard /dev/mapper/vgSystem-lvRoot mkfs.ext4 -E discard /dev/mapper/vgSystem-lvHome mkfs.ext4 -E discard /dev/mapper/vgSystem-lvSwap mkfs.ext2 /dev/md0 # motujemy na potrzeby instalacji systemu mount /dev/mapper/vgSystem-lvRoot /mnt mkdir /mnt/home mount /dev/mapper/vgSystem-lvHome /mnt/home mkswap /dev/mapper/vgSystem-lvSwap swapon /dev/mapper/vgSystem-lvSwap mkdir /mnt/boot mount /dev/md0 /mnt/boot # generuje prawidłowe dane do dwóch plików systemowych # /etc/fstab - dzieki temu pliku, system wie co podmotowac w trakcie startu systemu # /etc/mdstat - informacja o działających raidach genfstab -p -U /mnt > /mnt/etc/fstab mdadm --examine --scan > /mnt/etc/mdadm.conf

Wynik naszej pracy;

lsblk -o NAME,MOUNTPOINT,UUID,FSTYPE NAME MOUNTPOINT UUID FSTYPE vdb ├─vdb2 9f229efd-689c-ab12-5241-990451489ef3 linux_raid_member │ └─md1 c1be7ef6-a742-459a-adfb-43359c16b2ee crypto_LUKS │ └─cryptdisk TPZkru-5QRv-Sgut-twNd-ZjRt-DkpZ-TXRhdK LVM2_member │ ├─vgSystem-lvRoot /mnt 4c5cb473-68c6-4794-a852-c6e155f4bb69 ext4 │ ├─vgSystem-lvHome /mnt/home 6fecc782-f7ff-415f-8dfa-bef0a99b62c9 ext4 │ └─vgSystem-lvSwap 0b1d6734-b394-4620-aac7-a60e8d4feda4 swap └─vdb1 db156f41-9e8c-3dc6-5241-990451489ef3 linux_raid_member └─md0 /mnt/boot 714dc8e3-76d5-4efa-a466-928eace0f80c ext2 sr0 /run/archiso/bootmnt 2016-11-01-11-13-14-00 iso9660 loop0 /run/archiso/sfs/airootfs squashfs vda ├─vda2 9f229efd-689c-ab12-5241-990451489ef3 linux_raid_member │ └─md1 c1be7ef6-a742-459a-adfb-43359c16b2ee crypto_LUKS │ └─cryptdisk TPZkru-5QRv-Sgut-twNd-ZjRt-DkpZ-TXRhdK LVM2_member │ ├─vgSystem-lvRoot /mnt 4c5cb473-68c6-4794-a852-c6e155f4bb69 ext4 │ ├─vgSystem-lvHome /mnt/home 6fecc782-f7ff-415f-8dfa-bef0a99b62c9 ext4 │ └─vgSystem-lvSwap 0b1d6734-b394-4620-aac7-a60e8d4feda4 swap └─vda1 db156f41-9e8c-3dc6-5241-990451489ef3 linux_raid_member └─md0 /mnt/boot 714dc8e3-76d5-4efa-a466-928eace0f80c ext2

6. Instalacja systemu – pacstrap

pacstrap – skrypt służy do instalacji grupy pakietów do wskazanego root Folderu. base – minimum potrzebne do działania systemu
pacman – główny menedżer pakietów

# dla połaczenia z internetem # dynamiczne przydzielenie adresu ip - ethernet -kabel dhcpcd # Lub statyczne na przykład echo "nameserver 8.8.8.8" > /etc/resolve.conf ip addr add 100.100.100.100/24 dev ens19 ip link set ens19 up ip route add default via 100.100.100.1 metric 1 # Aktualizacja listy repo pacman -Sy # Aktualizacja kluczy do pacmana pacman -S archlinux-keyring # czyszczenie cachu pacman -Sc # Instalacja pacstrap /mnt base base-devel # zainstaluje okolo 144 pakietow

7. Grub i ramdisk

Grub – Program rozruchowy, który uruchamia nasz system operacyjny.

Przechodzimy na działanie/operacje w obrębie nowej instalacji i instalujemy potrzebne jeszcze pakiety:

arch-chroot /mnt pacman -Sy pacman -S grub vim

Edytujemy trzy pliczki potrzebne do stworzenia wczesnego jajka(ramdisk) i konfiguracji gruba:

vim /etc/mkinitcpio.conf

USERLVM="yes" USEDMRAID="yes" MODULES="dm_mod raid1" BINARIES="" FILES="" HOOKS="base udev autodetect modconf block keyboard mdadm_udev encrypt lvm2 filesystems fsck"
/etc/mkinitcpio.conf

UWAGA: w HOOKS cholernie jest ważna kolejność !

Konfiguracja potrzebna do instalacji GRUBA:
vim /etc/default/grub

GRUB_DEFAULT=0 GRUB_TIMEOUT=10 GRUB_DISTRIBUTOR="Arch" GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=UUID=c1be7ef6-a742-459a-adfb-43359c16b2ee:cryptdisk root=/dev/mapper/vgSystem-lvRoot quit" GRUB_CMDLINE_LINUX="" GRUB_ENABLE_CRYPTODISK=y GRUB_PRELOAD_MODULES="part_gpt part_msdos insmod modraid" GRUB_TERMINAL_INPUT=console GRUB_GFXMODE=auto GRUB_GFXPAYLOAD_LINUX=keep GRUB_DISABLE_RECOVERY=true
/etc/default/grub

UWAGA: cryptdevice=UUID= ( podajemy UUID soft raidu, który został zaszyfrowany !) ,komenda do uzyskania UUID to np.: blkid.
UWAGA:root=(podajemy nasz główny wolumin)

Informacja co system ma zrobić z zaszyfrowanym dyskiem:
vim /etc/crypttab

cryptdisk UUID=c1be7ef6-a742-459a-adfb-43359c16b2ee none luks,timeout=180

cryptdisk – nazwa odszyfrowanego dysku z komendy cryptdevice ( patrz wyżej)
UUID – soft raid dysku, który został tam zaszyfrowany – /dev/md1
none luks,timeout=180 – hasło podawane przy starcie, czas 3 minuty

Robimy ramdisk-jajeczko i instalujemy gruba na dysk /dev/vda i bva

mkinitcpio -p linux grub-mkconfig -o /boot/grub/grub.cfg grub-install --target=i386-pc --recheck /dev/vda grub-install --target=i386-pc --recheck /dev/vdb vgchange -ay exit reboot

Github : Instalacja Archa Linuxa – cały plik z wpisu

Instalacja Arch linuxa

Archinstall_LVM_GRUB_LUKS_MDADM.txt

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.