initramfs (LUKS(LVM))
Potrebna je podrska u kernel-u!!! (TODO)
initramfs
General Setup --->
[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
LVM
Device Drivers --->
[*] Multiple devices driver support (RAID and LVM) --->
<*> Device mapper support
<*> Crypt target support
DM-Crypt (Nisu sve opcije potrebne, zavisno od setup-a)
-*- Cryptographic API --->
-*- CBC support
-*- ECB support
<*> XTS support (EXPERIMENTAL)
-*- SHA1 digest algorithm
<*> SHA224 and SHA256 digest algorithm
-*- AES cipher algorithms
<*> AES cipher algorithms (x86_64)
...
...
package.use
sys-apps/busybox static
sys-fs/lvm2 static
sys-fs/cryptsetup static
#Verovatno ce portage zbog zavisnosti traziti jos neke pakete da se usklade USE flag-ovi
dev-libs/libgcrypt static-libs
sys-apps/util-linux static-libs
dev-libs/popt static-libs
dev-libs/libgpg-error static-libs
Naopomena: Ukoliko su neki od alata vec instalirani kao zavisnosti ili deo profila, mozete koristiti (-1 | --oneshot ) kako ne bi bili upisani u world file, mada ja smatram da je to potrebno jer su od kljucnog znacaja za sistem (ovakav setup).
# emerge -av cryptsetup lvm2 busybox
Za pakovanje initrd image-a potreban vam je alat app-arch/cpio
# emerge -av app-arch/cpio
Kreiranje strukture direktorijuma koji ce biti spakovan u initrdimage (Lokacija i naziv direktorijuma (initramfs) nisu obavezni da budu u /usr/src).
# cd /usr/src
# mkdir initramfs
# cd initramfs
# mkdir -p bin lib dev etc mnt/root proc root sbin sys
Kreiranje init skripte koja ce se prva izvrsavati nakon raspakivanja initrd image-a
U /usr/src/initramfs kreirati fajl init i dozvoliti da se izvrsava
# chmod +x init
#!/bin/busybox sh
# Montira /proc /sys (u "privremenom" sistemu)
mount -t proc none /proc
mount -t sysfs none /sys
# Rescue shell funkcija (ukoliko dodje do greske vratice vas u shell)
rescue_shell() {
echo "Something went wrong. Dropping you to a shell!"
busybox --install -s
exec /bin/sh
}
# Instalira busybox (set alata)
busybox --install -s
# kreira /dev strukturu uredjaja
mdev -s
# cryptsetup pokusava da otkljuca vas uredjaj (-T N (broj pokusaja)
cryptsetup -T 5 luksOpen /dev/sda2 crypt
# Skenira uredjaje i ukoliko pronadje lvm LV kreira /dev nodove
lvm vgscan --mknodes
# aktivira Vg
lvm vgchange -a y
# Montira vas root fajlsistem u privremenu lokaciju (ukoliko dodje do greske vratice vas u shell)
# <vg> zameniti sa vasim VolumeGroup a <lv> sa LogicalVolume
mount -o ro /dev/mapper/<vg>-<lv> /mnt/root || rescue_shell
## VAZNO ukoliko sistem nece da nastavi sa boot-om nakon exec switch_root ... bez ikakve greske, moguce
## da /mnt/root/dev ne postoji tj. nije popunjen
mount -t devtmpfs none /mnt/root/dev
# demontira privremene /proc i /sys
umount /proc
umount /sys
# "prebacuje" se u pravi sistem
exec switch_root /mnt/root /sbin/init
Kopiranje potrebnih alata.
# cp /bin/busybox.static /usr/src/initramfs/bin# ln -s /usr/src/initramfs/bin/busybox.static /usr/src/initramfs/bin/busybox
# cp /sbin/cryptsetup /usr/src/initramfs/sbin/cryptsetup# cp /sbin/lvm.static /usr/src/initramfs/sbin/
# ln -s /usr/src/initramfs/sbin/lvm.static /usr/src/initramfs/sbin/lvm
Kreiranje initrd image-a, potrebno je da se nalazite u /usr/src/initramfs
# find . -print0 | cpio --null -ov --format=newc | gzip -9 > /boot/initramfs.cpio.gz
Dokumentacija:
http://en.gentoo-wiki.com/wiki/Initramfs
http://en.gentoo-wiki.com/wiki/Root_on_LVM_or_EVMS_over_dm-crypt/LUKS
http://lugons.org/Uputstva/Gentoo/startovanje-kriptovanog-gentoo-linux-sistema-preko-usb-kljuca-uz-pomoc-dm-crypt-luks-i-lvm-alata
http://www.gentoo.org/doc/en/lvm2.xml
http://en.gentoo-wiki.com/wiki/DM-Crypt
http://wiki.gentoo.org/wiki/Initramfs
Document Actions