Debian Stretch Live UEFI-BIOS Persistente Sicura
Ho fatto diverse guide su come costruirsi una Debian Live personalizzata, creando anche una categoria dedicata. Le ultime due sono state: Creare una Debian Stretch Live Custom persistente Sicura e Creare una Debian Live personalizzata con live build. Questa guida invece sarà quella definitiva, dove la chiavetta costruita sarà un mix di sicurezza e personalizzazione, il tutto avviabile sia da UEFI che da Legacy BIOS, con partizione cryptata con LUKS. La guida sotto è per utenti avanzati, dato che non spiegherò ogni singolo passaggio, quindi attenzione a fare copia ed incolla senza capire quello che si andrà a fare, e sopratutto attenzione ad identificare con certezza il device usb. Questa guida si può adattare anche utilizzando una Debian Live scaricata direttamente dal sito, ma il problema è che non si può cryptare la partizione dato che cryptsetup non è installato di default, da qui l’esigenza di creare una Debian Live di base con cryptsetup installato, dopodichè successivamente si potrà installare tutto il resto.
Installazione tools:
$ sudo apt install -y debootstrap grub-common grub-pc-bin grub-efi-amd64-bin efibootmgr syslinux squashfs-tools live-build live-tools live-boot cryptsetup
Preparazione Debian Base:
$ mkdir live; cd live
$ lb config --distribution stretch --binary-images iso-hybrid --architectures amd64 --archive-areas "main contrib non-free" --debian-installer-gui true debian-installer live --mirror-bootstrap http://ftp.it.debian.org/debian/ --mirror-binary http://ftp.it.debian.org/debian --bootappend-live boot=live components persistence persistence-encryption=luks timezone=Europe/Rome locales=en_GB.UTF-8 keyboard-layouts=it hostname=Debian-Custom username=user noeject autologin
per installare un desktop environment ed i programmi di cui si necessita, bisogna editare il file live.list.chroot, ed incollare dentro il necessario:
$ nano config/package-lists/live.list.chroot
incollare dentro:
mate-desktop-environment task-laptop xorg xinit xserver-xorg-input-evdev xserver-xorg-input-libinput xserver-xorg-input-kbd cryptsetup firefox-esr firmware-linux-nonfree firmware-iwlwifi firmware-linux-free
Costruzione Debian Base:
$ sudo lb build
Debian Stretch Live UEFI-BIOS Persistente Sicura
Identificazione device usb e partizioni: nel mio caso userò /dev/sda, ed i comandi eseguiti tutti come root:
# fdisk -l
# umount /dev/sda*
# dd count=1 bs=512 if=/dev/zero of=/dev/sda
# parted -s -- /dev/sda mktable gpt mkpart efi 1 100M
# parted -s -- /dev/sda mkpart live 100M 3G
# parted -s -- /dev/sda mkpart persistence 3G 100%
# parted /dev/sda set 1 msftdata on
# parted /dev/sda set 2 legacy_boot on
# parted /dev/sda set 2 msftdata on
# mkfs.vfat -n EFI /dev/sda1
# mkfs.vfat -F32 -n LIVE /dev/sda2
Creazione partizione cryptata /dev/sda3 persistente:
# cryptsetup --verbose --verify-passphrase luksFormat /dev/sda3
# cryptsetup luksOpen /dev/sda3 sda3_crypt
# mkfs.ext4 -L persistence /dev/mapper/sda3_crypt
# mkdir /mnt/persistence
# mount /dev/mapper/sda3_crypt /mnt/persistence/
# echo "/ union" > /mnt/persistence/persistence.conf
# umount /mnt/persistence/
# cryptsetup luksClose sda3_crypt
Mount partizioni di lavoro:
# mkdir -p /mnt/{efi,live,live-iso}
# mount /dev/sda1 /mnt/efi
# mount /dev/sda2 /mnt/live
Mount Debian Base:
# mount -oro live/live-image-amd64.hybrid.iso /mnt/live-iso
# cp -ar /mnt/live-iso/* /mnt/live
# rm -rf /mnt/live/efi
Grub per UEFI:
# grub-install --removable --target=x86_64-efi --boot-directory=/mnt/live/boot/ --efi-directory=/mnt/efi /dev/sda
Syslinux per legacy BIOS:
# dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/mbr/gptmbr.bin of=/dev/sda
# syslinux --install /dev/sda2
Fix grub.cfg
# rm /mnt/live/boot/grub/grub.cfg
# nano /mnt/live/boot/grub/grub.cfg
ed incollare dentro:
set default="0" set timeout=3 menuentry "Debian Custom Live" { linux /live/vmlinuz-4.9.0-6-amd64 boot=live persistence persistence-encryption=luks keyboard-layouts=it locales=en_US.UTF-8,it_IT.UTF-8 initrd /live/initrd.img-4.9.0-6-amd64 }
Fix syslinux:
# mv /mnt/live/isolinux /mnt/live/syslinux/
# mv /mnt/live/syslinux/isolinux.bin /mnt/live/syslinux/syslinux.bin
# mv /mnt/live/syslinux/isolinux.cfg /mnt/live/syslinux/syslinux.cfg
# rm /mnt/live/syslinux/menu.cfg
# nano /mnt/live/syslinux/menu.cfg
ed incollare dentro:
LABEL Debian GNU/Linux Live (kernel 4.9.0-6-amd64) SAY "Booting Debian GNU/Linux Live (kernel 4.9.0-6-amd64)..." linux /live/vmlinuz-4.9.0-6-amd64 APPEND initrd=/live/initrd.img-4.9.0-6-amd64 boot=live components persistence persistence-encryption=luks keyboard-layouts=it locales=en_US.UTF-8,it_IT.UTF-8
per verificare la versione del kernel:
# ls live/chroot/boot/
output:
root@debianbox:/home/edmond# ls live/chroot/boot/ config-4.9.0-6-amd64 initrd.img-4.9.0-6-amd64 vmlinuz-4.9.0-6-amd64 grub System.map-4.9.0-6-amd64
Smontaggio e pulizia:
# umount /mnt/efi /mnt/live /mnt/live-iso
# rmdir /mnt/efi /mnt/live /mnt/persistence /mnt/live-iso
a questo punto basta riavviare e fare il boot in modalità uefi oppure legacy, in entrambi i casi ad un certo punto del boot verrà chiesto la password, senza la quale il sistema operativo non si avvierà. Successivamente si potranno installare tutti i programmi di cui si necessiterà, e fare le proprie personalizzazioni. In più si possono conservare files in modo sicuro poichè la pen drive è inaccessibile senza password.
Debian Stretch Live UEFI-BIOS Persistente Sicura
ps: in caso di password complicate, fare attenzione al layout, poiche in fase di boot è quello di grub
enjoy 😉
Ho seguito i passi di questa guida, ma il computer (DELL PowerEdge T130) non riesce a fare il boot UEFI. Il boot manager del BIOS non elenca neppure questa chiavetta USB tra le opzioni di avvio.
Utilizzando invece un’altra chiavetta (l’installer di Linux Mint in UEFI) non ci sono problemi.
Ho controllato il partizionamento della chiavetta di Linux Mint e ho notato che la label è «mac» mentre quella proposta qui è «gpt». Potrebbe essere questo il problema? Ho anche visto che in questa guida non viene proposto di aggiungere il flag «boot» (o «esp») alla partizione EFI, cosa che invece ho visto fare in altre guide.
a me è successo la stessa cosa con una usb 3.0, mentre con la 2.0 tutto è filato liscio. Devo investigare sul perché 😉
salve
io ho seguito tutto modificando:
lb config –distribution stretch
con
lb config –distribution testing
senza persistence-encryption=luks
al boot mi da il seguente errore:
can not mount /dev/loop0 (/run/live/medium/live/filesystem.squashfs) on /run/live/rootfs/filesystem.squashfs
and
mounting /dev/loop0 on /run/live/rootfs/filesystem.squashfs failed: invalid argument.