Creare una Debian Live personalizzata con live build

 

Creare una Debian Live personalizzata con live build

Creare una Debian Live personalizzata con live build

Dopo la guida precedente su come Creare una Debian Stretch Live Custom persistente Sicura , ecco un altro metodo per costruirsi una propria distribuzione Linux personalizzata basata su Debian. Questa volta useremo live build al posto di debootstrap, siccome le confgurazione sono moltissime, è meglio leggere prima la documentazione su live-config, e live-build.

$ 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 timezone=Europe/Rome locales=en_GB.UTF-8 keyboard-layouts=it hostname=Debian-Custom username=user noeject autologin"

per installare un desktop environment e tutti i programmi di cui si necessita, bisogna editare il file live.list.chroot, ed incollare dentro il tutto:

$ nano config/package-lists/live.list.chroot
mate-desktop-environment task-laptop xorg xinit xserver-xorg-input-evdev xserver-xorg-input-libinput xserver-xorg-input-kbd

volendo si può anche cambiare l’immagine di boot, proprio come ho fatto io. Serve un immagine di 640×480 dal nome splash.png, crearsela oppure scaricare la mia. Ipotizzando che il file splash.png si trova nella home:

$ cd config; mkdir bootloaders
$ sudo cp -r /usr/share/live/build/bootloaders/isolinux bootloaders/
$ sudo rm bootloaders/isolinux/splash.svg
$ sudo cp $HOME/splash.png bootloaders/isolinux/splash.png
$ cd ..
$ sudo lb build

a questo punto non resta che provare la nostra Debian Stretch personalizzata, tramite VirtualBox oppure direttamente da chiavetta usb:

$ sudo su
# dd if=live-image-amd64.hybrid.iso of=/dev/sdX bs=4M status=progress

con questa configurazione utente e password sono le solite:

user=user
password=live

Creare una Debian Live personalizzata con live build

enjoy 😉

 

Creare una Debian Stretch Live Custom persistente Sicura

 

Creare una Debian Stretch Live Custom persistente Sicura

Creare una Debian Stretch Live Custom persistente Sicura

Guida su come creare una propria Debian Live personalizzata con partizione persistente in modalità UEFI. In passato avevo già fatto una guida simile per Debian Jessie, ma ho utilizzato direttamente l’immagine live ufficiale con firmware non-free. Questo metodo utilizza un’approccio diverso nella costruzione della live, ma l’obiettivo è quello di avere una usb bootable con i propri tools preferiti, e che ci permette di navigare in internet in sicurezza senza memorizzare dati su disco, e senza rinunciare ad una partizione dove poter stipare dati sensibili. Per cifrare la partizione persistente userò LUKS.

Pacchetti da installare:

$ sudo apt install -y debootstrap grub-common grub-pc-bin grub-efi-amd64-bin efibootmgr syslinux squashfs-tools cryptsetup

Creazione Environment:

$ sudo mkdir $HOME/debian_live
$ sudo debootstrap --arch=amd64 --variant=minbase stretch $HOME/debian_live/chroot http://ftp.it.debian.org/debian/
$ sudo chroot $HOME/debian_live/chroot
# echo "debian-live" > /etc/hostname
# echo 'deb http://ftp.it.debian.org/debian/ stretch main contrib non-free' > /etc/apt/sources.list
# apt update

Installazione kernel:

# apt-cache search linux-image
# apt install -y linux-image-4.9.0-4-amd64 linux-headers-4.9.0-4-amd64

Installazione dei pacchetti personalizzati (nel mio caso solo quelli sotto)

# apt install -y mate-desktop-environment task-laptop xorg xinit xserver-xorg-input-evdev xserver-xorg-input-libinput xserver-xorg-input-kbd live-boot systemd-sysv network-manager net-tools wireless-tools nano gparted x11-xserver-utils x11-utils pciutils usbutils ntfs-3g rsync dosfstools syslinux firefox-esr chromium xserver-xorg-input-synaptics vpnc network-manager-gnome network-manager-vpnc-gnome network-manager-openvpn-gnome gtkterm vsftpd putty openssh-client firmware-linux-nonfree firmware-iwlwifi firmware-linux-free vlc terminator synaptic p7zip-full rar unrar zip ssh wget curl mesa-utils dnsmasq grub2-common grub-efi-amd64 grub-pc-bin xkb-data keyboard-configuration tzdata locales cryptsetup encfs wireshark-gtk aircrack-ng nmap zenmap

# apt clean

Password per root:

# passwd root
# exit

Comprimere il tutto in uno squash filesystem:

$ sudo mkdir -p $HOME/debian_live/image/
$ sudo mksquashfs $HOME/debian_live/chroot $HOME/debian_live/image/filesystem.squashfs -noappend -e boot

Copiare kernel e initramfs fuori chroot:

$ sudo cp $HOME/debian_live/chroot/boot/vmlinuz-4.9.0-4-amd64 $HOME/debian_live/image/vmlinuz-4.9.0-4-amd64
$ sudo cp $HOME/debian_live/chroot/boot/initrd.img-4.9.0-4-amd64 $HOME/debian_live/image/initrd.img-4.9.0-4-amd64

Preparazione chiavetta usb: (nel mio caso /dev/sda di 16G)

Negli step successivi verranno create 3 partizioni:

  1. partizione in fat32 EFI
  2. partizione in fat32 che contiene il sistema Linux
  3. partizione in ext4 persistente criptata con LUKS
$ sudo fdisk -l
$ sudo umount /dev/sda*
$ sudo dd count=1 bs=512 if=/dev/zero of=/dev/sda
$ sudo parted -s -- /dev/sda mktable gpt mkpart efi 1 100M set 1 boot on
$ sudo parted -s -- /dev/sda mkpart system 100 2G
$ sudo parted -s -- /dev/sda mkpart persistence 2G 16G
$ sudo mkdir -p /mnt/{usb,efi,persistence}
$ sudo mkfs.fat -F32 -n efi /dev/sda1
$ sudo mkfs.fat -F32 -n system /dev/sda2
$ sudo mkfs.ext4 -L persistence /dev/sda3

Montaggio delle partizioni EFI e di Sistema:

$ sudo mount /dev/sda1 /mnt/efi/
$ sudo mount /dev/sda2 /mnt/usb/

Installazione di Grub-EFI:

$ sudo grub-install --target=x86_64-efi --efi-directory=/mnt/efi --boot-directory=/mnt/usb/boot --removable --recheck

Copiare il sistema nella seconda partizione:

$ sudo rsync -rv $HOME/debian_live/image/ /mnt/usb/live/

Creare il file grub.cfg ed incollare dentro:

$ sudo nano /mnt/usb/boot/grub/grub.cfg
set default="0"
set timeout=3

menuentry "Debian Custom Live" {
    linux /live/vmlinuz-4.9.0-4-amd64 boot=live persistence persistence-encryption=luks
    initrd /live/initrd.img-4.9.0-4-amd64
}

Creazione della partizione persistente criptata con LUKS:

$ sudo cryptsetup --verbose --verify-passphrase luksFormat /dev/sda3

rispondere YES

$ sudo cryptsetup luksOpen /dev/sda3 live
$ sudo mkfs.ext4 -L persistence /dev/mapper/live
$ sudo  mount /dev/mapper/live /mnt/usb
$ sudo su
# echo "/ union" > /mnt/usb/persistence.conf
# umount /mnt/usb/
# cryptsetup luksClose live
# umount /dev/sda*
# exit

sopra non abbiamo fatto altro che creare una cartella live che verrà montata in /dev/mapper/, ed aprire e chiudere la partizione persistente. Per accedere alla partizione da adesso in poi bisognerà digitare una password, dopodichè si potranno mettere i files importanti da portarsi dietro.

Creare una Debian Stretch Live Custom persistente Sicura

Creare una Debian Stretch Live Custom persistente Sicura

Perchè questa chiavetta è sicura?

  1. avviandola per prima cosa verrà chiesta la password per accedere al sistema
  2. il file system è in read only, quindi tutte le modifiche ed i files modificati verranno persi al riavvio.
  3. partizione persistente a cui non è possibile accedere senza password

Creare una Debian Stretch Live Custom persistente Sicura

enjoy 😉

 

Ripristinare Grub2 EFI amd64 da Chroot su Debian

Ripristinare Grub2 EFI amd64 da Chroot su Debian

 

Guida su come reinstallare o ripristinare Grub2 EFI amd64 da Chroot, su Debian ed in generale su sistemi Linux. Per prima cosa bisognerà identificare la partizione /boot/efi, che potrà essere /dev/sda1 oppure /dev/sda2, successivamente la partizione root da montare, in cui bisognerà ripristinare Grub2 EFI. Nell'esempio sotto, la partizione /boot/efi è /dev/sda1, e la partizione root è /dev/sda3, quindi:

sudo mount /dev/sda3 /mnt
sudo mount /dev/sda1 /mnt/boot/efi
for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
sudo rm /mnt/etc/resolv.conf
sudo cp /etc/resolv.conf /mnt/etc/
sudo chroot /mnt
apt-get install --reinstall grub-efi-amd64
update-grub
Ctrl+D

smontare le partizioni:

for i in /sys /proc /dev/pts /dev; do sudo umount /mnt$i; done
sudo umount /dev/sda1
sudo umount /dev/sda3
sudo reboot

enjoy 😉

 

Debian Jessie su Raspberry pi 2

                       Debian Jessie su Raspberry pi 2

 

Come ottenere una Debian Jessie originale per  Raspberry pi 2, e sfruttare quindi i repository Debian. Pur avendo usato Raspbian, ho sempre voluto avere una Debian pura, e sopratutto voglio Mate come DE. Per ottenere una Debian pura su Raspberry pi 2, utilzzo Debootstrap e qemu-user-static su un pc con Debian Jessie x64.

 

$ targetdir=rootfs
$ distro=jessie
$ mkdir $targetdir
$ sudo apt-get install qemu-user-static debootstrap binfmt-support
$ sudo debootstrap --arch=armhf --foreign $distro $targetdir
$ sudo cp /usr/bin/qemu-arm-static $targetdir/usr/bin/
$ sudo cp /etc/resolv.conf $targetdir/etc
$ sudo chroot $targetdir
# distro=jessie
# export LANG=C
# /debootstrap/debootstrap --second-stage

 

Aggiungere i repository:

cat > /etc/apt/sources.list << EOF
deb https://ftp.it.debian.org/debian jessie main contrib non-free
deb https://ftp.it.debian.org/debian jessie-updates main contrib non-free
deb https://security.debian.org jessie/updates main contrib non-free
deb https://archive.raspberrypi.org/debian jessie main
EOF

 

un po di pinning:

cat > /etc/apt/preferences.d/raspberrypi << EOF
Package: *
Pin: origin archive.raspberrypi.org
Pin-Priority: 1

Package: raspberrypi-bootloader
Pin: origin archive.raspberrypi.org
Pin-Priority: 1000

Package: libraspberrypi0
Pin: origin archive.raspberrypi.org
Pin-Priority: 1000

Package: Rasspberrypi-bin
Pin: origin archive.raspberrypi.org
Pin-Priority: 1000
EOF

 

Configurazione rete in DHCP:

cat > /etc/network/interfaces.d/eth0 << EOF
auto eth0
iface eth0 inet dhcp
EOF

Configurare fstab:

cat > /etc/fstab << EOF
/dev/mmcblk0p1 /boot vfat noatime 0 2
/dev/mmcblk0p2 / ext4 noatime 0 1
EOF

 

Configuarare file hosts

cat > /etc/hosts << EOF
127.0.0.1  localhost
127.0.1.1  RaspJessie
EOF

 

Creare utente e settare la password di root, quindi poi scaricare tutto quello che serve:

# adduser nome_utente
# passwd
# echo "RaspJessie" > /etc/hostname
# wget https://archive.raspberrypi.org/debian/raspberrypi.gpg.key -O - | apt-key add -
# apt-get update
# apt-get upgrade -y
# apt-get install -y mate-desktop-environment locales dbus openssh-server dosfstools libraspberrypi-bin
# apt-get clean

 

disabilitare orologio di sistema:

# systemctl enable systemd-timesyncd
# systemctl disable hwclock-save
# exit

 

Il sistema è pronto. La mia scheda microsd identificata come mmcblk0 ha due partizioni, la prima mmcblk0p1 è di 150M, e la seconda mmcblk0p2, con tutto il resto dello spazio. Si può usare gparted oppure il terminale:

$ sudo umount /dev/mmcblk0p1
$ sudo umount /dev/mmcblk0p2
$ sudo mkfs.vfat /dev/mmcblk0p1
$ sudo mkfs.ext4 /dev/mmcblk0p2

creazione e montaggio delle cartelle, ed infine copiare il sistema originale Debian Jessie sulla microsd:

$ sudo mkdir /mnt/{boot,system}
$ sudo mount /dev/mmcblk0p1 /mnt/boot
$ sudo mount /dev/mmcblk0p2 /mnt/system
$ sudo rsync -av rootfs/boot/ /mnt/boot
$ sudo rsync -av --exclude=/boot/* rootfs/ /mnt/system
$ sudo umount /mnt/{boot,system}

 

Adesso siamo pronti ad usare una Debian Jessie pura su raspberry pi 2. 

enjoy 😉

 

Ripristinare Grub2 da chroot da una Debian Live

 

Il metodo che ho sempre usato, ogni qual volta ho avuto la necessità di ripristinare il bootloader (Grub2), è stato quello del chroot. Ho preso questa abitudine dopo che mi sono accorto un bel po di tempo fa, che spesso ii metodi "normali" non sempre mi funzionavano. Invece questo metodo non ha mai fallito.

 

Requisiti:

Cd live, della stessa architettura del sistema da recuperare.

 

$ sudo fdisk -l
$ sudo mount /dev/sdXX /mnt
$ for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
$ sudo chroot /mnt
# grub-install /dev/sdX
  CTRL-D
$ sudo reboot

 

enjpy 😉

Installare Gnome 3 su Debian Sid da Chroot

 

Ebbene Sì…..mi mancava solo l'installazione di Gnome 3 su Debian Sid/Experimental da chroot :), ma la farò breve, dato che non c'è poi molto da dire, se non che, dopo installata Sid, seguendo questa guida, e senza MAI uscire da chroot:

 

aggiungere i repo experimental:

 

# echo 'deb https://ftp.it.debian.org/debian experimental main' >> /etc/apt/sources.list

# apt-get update

# apt-get install -t experimental gnome-session gnome-video-effects gnome-tweak-tool
gnome-terminal gnome-shell gsettings-desktop-schemas gnome-settings-daemon gnome-menus
gnome-power-manager gnome-screensaver gnome-search-tool gnome-utils xorg nautilus

 

a questo punto Debian Sid con Gnome 3 è pronta, bisogna solamente ricordarsi di aggiornare Grub.

 

Consigli:

per chi ha Nvidia, ricordarsi di installare gli ultimi driver, altrimenti si avrà questo problema, ma con la versione 11. Per il momento non mi viene più in mente nulla, casomai aggiornerò 🙂

 

 

enjoy 😉

Update-grub da chroot

 

Installando Debian quasi sempre da chroot, ho bisogno di fare un update-grub dalla partizione /dev/sda1 dove è installata Debian Squeeze con Grub (MBR). Chiaramente se sono su Squeeze non c'è nessun problema, ma se invece sono su un'altra partizione, ho bisogno di chroottarmi in Squeeze e dare un update-grub. Per non avere errori bisogna prima montare /dev /sys /proc: Quindi, montare la partizione principale, nel mio caso /dev/sda1, e poi procedere con il mount:

 

# mount /dev/sda1 /mnt/debian
# mount -o bind /dev /mnt/debian/dev
# mount -o bind /sys /mnt/debian/sys
# mount -o bind /proc /mnt/debian/proc
# chroot /mnt/debian /bin/bash
# update-grub
# grub-mkconfig

 

 

enjoy 😉

Installare Debian Sid (unstable) da Chroot

 

Questa guida mostra come installare Debian Sid (unstable) velocemente da chroot, ed allo stesso tempo continuare ad usare il nostro pc. Tempo fa avevo fatto una guida simile, diciamo che questa è d’integrazione. I requisiti sono:

  1. chiaramente una distribuzione Linux
  2. avere una partizione già disponibile o crearla al volo
  3. debootstrap installato

 

adesso ipotizzando che la partizione dove installare Debian Sid sia in /dev/sda8, iniziamo con il formattarla in ext4:

 

# mkfs.ext4 /dev/sda8

# mkdir /mnt/debian

# mount /dev/sda8 /mnt/debian

# /usr/sbin/debootstrap --arch i386 unstable /mnt/debian https://ftp.it.debian.org/debian

# mount -o bind /dev /mnt/debian/dev

# mount -o bind /proc /mnt/debian/proc

# cp /etc/mtab /mnt/debian/etc/mtab

# cp /etc/network/interfaces /mnt/debian/etc/network/interfaces

# chroot /mnt/debian /bin/bash

# echo '/dev/sda8 / ext4 defaults 0 0' >> /etc/fstab

# apt-get update

# apt-cache search linux-image

 

appariranno una serie di kernel, scegliere quello adatto per il prorio pc, al momento ci sono questi:

 

root@Squeezebox:/# apt-cache search linux-image
alsa-base - ALSA driver configuration files
linux-headers-3.0.0-1-486 - Header files for Linux 3.0.0-1-486
linux-headers-3.0.0-1-686-pae - Header files for Linux 3.0.0-1-686-pae
linux-headers-3.0.0-1-amd64 - Header files for Linux 3.0.0-1-amd64
linux-image-3.0.0-1-486 - Linux 3.0.0 for older PCs
linux-image-3.0.0-1-686-pae - Linux 3.0.0 for modern PCs
linux-image-3.0.0-1-686-pae-dbg - Debugging infos for Linux 3.0.0-1-686-pae
linux-image-3.0.0-1-amd64 - Linux 3.0.0 for 64-bit PCs
linux-image-2.6-486 - Linux for older PCs (dummy package)
linux-image-2.6-686 - Linux for modern PCs (dummy package)
linux-image-2.6-686-bigmem - Linux for PCs with 4GB+ RAM (dummy package)
linux-image-2.6-686-pae - Linux for modern PCs (dummy package)
linux-image-2.6-amd64 - Linux for 64-bit PCs (dummy package)
linux-image-486 - Linux for older PCs (meta-package)
linux-image-686 - Linux for modern PCs (dummy package)
linux-image-686-bigmem - Linux for PCs with 4GB+ RAM (dummy package)
linux-image-686-pae - Linux for modern PCs (meta-package)
linux-image-amd64 - Linux for 64-bit PCs (meta-package)

 

quindi, continuare installando le cose essenziali:

 

# apt-get install linux-image-3.0.0-1-686-pae linux-headers-3.0.0-1-686-pae grub-pc
gnome-desktop-environment network-manager iceweasel

# echo Debianbox > /etc/hostname

# adduser nome_utente

# passwd

# exit

 

prima di riavviare, dalla nostra distribuzione principale, ricordarsi di aggiornare grub:

 

# update-grub

# grub-mkconfig

# reboot

 

a questo punto Debian Sid è installata e funzionante, mancano solo alcuni semplici ritocchi che si possono fare in seguito 🙂

 

 

enjoy 😉

Installare Debian Squeeze da Debian Squeeze

 

 

 

 

Il titolo sarebbe dovuto essere "Come installare una distribuzione Linux direttamente dal prorpio O.S. senza inutili perdite di tempo, riuscendo così a fare diverse altre cose " ma sarebbe stato troppo lungo :). Diciamo che questa soluzione è molto comoda, soprattutto per chi come me nell' hard disk, ama testare molteplici O.S, e di conseguenza non ha voglia di rimanere fisso a guardare il monitor mentre il tutto finisce. L'esempio base che riporto è quello di una installazione di Debian 6.0 Squeeze da Debian Squeeze stessa, ma diciamo che si può adattare alle varie esigenze.

 

Requisiti:

 

  1. una partizione libera
  2. debootstrap installato
  3. un minimo di manualità, creatività e pazienza

 

formattare partizione in ext4, creare cartella di lavoro e mount partizione:

 

# mkfs.ext4 /dev/sdXX

# mkdir /mnt/debian

# mount /dev/sdXX /mnt/debian

 

scaricare debian squeeze base per la propria architettura, i386 o amd64

 

# /usr/sbin/debootstrap --arch i386 squeeze /mnt/debian https://ftp.it.debian.org/debian

 

oppure se si ha il cd debian montato in /cdrom, cambiare l'indirizzo con il path tipo: file:/cdrom/debian/

alla fine dell'istallazione base eseguire chroot:

 

# chroot /mnt/debian /bin/bash

 

adesso siamo all'interno del sistema, dove possiamo fare delle modifiche, io mi limito a citarne alcune, quelle più importanti, il lavoro grosso e di perfezionamento si può fare direttamente una volta avviato l' O.S. oppure tante modifiche direttamente dal chroot.

 

# nano /etc/fstab

 

all'interno inseriamo qualche linea tipo:

 

/dev/sdXX         /             ext4   defaults                 0    1

/dev/scd1       /media/cdrom0   udf,iso9660 user,noauto     0       0

/dev/scd0       /media/cdrom1   udf,iso9660 user,noauto     0       0

 

la partizione di swap condivisa andiamo a recuperarla da /etc/fstab del nostro sistema principale

 

quindi montiamo tutto:

 

# mount -a

 

abilitare connessione:

 

# nano /etc/network/interfaces

 

ed inserire qualche linea tipo:

 

auto lo
iface lo inet loopback
allow-hotplug eth0
eth0 inet dhcp

 

con resolv.conf non dovrebbero esserci problemi:

 

# nano /etc/resolv.conf

 

altrimenti inserire:

 

domain localdomain
search localdomain
nameserver 192.168.1.1
nameserver 192.168.1.1

 

aggiungere hostname:

 

# echo Debianbox > /etc/hostname

 

anche in /etc/hosts non dovrebbero esserci problemi:

 

# nano /etc/hosts

 

altrimenti inserire:

 

127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
fe00::0         ip6-localnet
ff00::0         ip6-mcastprefix
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

 

a questo punto siamo pronti a scaricare i pacchetti che ci permetteranno di avviare il nosto O.S. in tutta tranquillità:

 

# apt-get update

# apt-cache search linux-image

 

scaricare ed installare linux-image per la propria architettura, grub-pc, ed il proprio DE come gnome o kde:

 

# apt-get install linux-image-versione-arch grub-pc gnome-desktop-environment

 

alla fine apparirà qualche errore, ma non è importante. Nell'attesa del completamento, ci si può occupare d'altro, ed è proprio questo il senso di questa guida 🙂 Una volta riavviato basta fare un update-grub per trovare nel menu di grub la voce della nostra installazione, ma abbiamo il problema del login dato che non è stato settato ne utente e ne password, quindi per ovviare a questo problema, nel menu di grub relativo al nostro O.S. digitare "e" ed aggiungere  al kernel l'opzione:

 

rw init=/bib/bash

 

adesso si può proseguire con il boot e nella shell che appare, non rimane che aggiungere utente e password:

 

# adduser nome_utente

# passwd root

 

a questo punto abbiamo una Debian Squeeze perfettamente funzionante (quasi) 🙂

 

Step Finale:

molto probabilmente all'avvio non si dispone della connessione internet per poter aggiornare ed installare i componenti che mancano, questo perchè bisogna abilitare la nostra interfaccia di rete, eth0 o eth1, i passi potrebbero essere:

 

# ifconfig eth0 up

# ifconfig eth0 indirizzo_rete

# dhclient

 

spero di essermi ricordato tutto 🙂

 

 

enjoy 😉