Appunti su Debian live

Configurazione di base

Creare il file config/binary

# $LB_HOSTNAME: set hostname
# (Default: debian)
LB_HOSTNAME="piffa.live"

# $LB_ISO_PUBLISHER: set iso publisher
# (Default: Debian Live project; http://live.debian.net/; debian-live@lists.debian.org)
LB_ISO_PUBLISHER="Piffa Net; http://piffa.net/; andrea@piffa.net"


# $LB_NET_ROOT_PATH: set netboot server directory
# (Default: /srv/debian-live)
LB_NET_ROOT_PATH="/srv/debian-live"

# $LB_NET_ROOT_SERVER: set netboot server address
# (Default: 192.168.1.1)
LB_NET_ROOT_SERVER="192.168.0.250"

Liste di pacchetti

Si possono mettere le lste di pacchetti da installare nella dir:

config/chroot_local-packageslists

lb config --packages-lists "list1 list2 list3"

Configurazione

I file devono stare in auto/ . Il file config contiene quelli che saranno i default di configurazione, evitabile con --ignore-system-defaults .

auto/config

lb config --architecture i386

lb config --language "it"
lb config --bootappend-live "locale=it_IT.UTF-8 keyb=it"

lb config --bootappend-live "hostname=piffa.live"
lb config --iso-publisher "Piffa.net, andrea@piffa.net"

I mirror possono essere messi in un file separato: config/chroot_sources/sources.chroot:

deb http://mirror.switch.ch/ftp/mirror/debian/ squeeze main non-free contrib

Mirrors al volo:

lb config --mirror-bootstrap  http://mirror.switch.ch/ftp/mirror/debian/
lb config --mirror-chroot http://mirror.switch.ch/ftp/mirror/debian/
lb config --mirror-binary http://mirror.switch.ch/ftp/mirror/debian/

lb config --mirror-binary-security http://security.debian.org/

Username:

lb config --username utente

Includes

Per inserire dei file diretamente dentro il filesystem (ma non nella home dell’utente di basee viene creata ogni volta in base a etc/skell a meno che non sia persistente) si creino gli stessi con relativi path in config/chroot_local-includes . Questi superano eventuali configurazioni pre esistenti.

Creare una immagine

Per cominciare a creare l’immagine:

lb build

 lb config --interactive shell

Per pulire la directory dei file precedenti:

lb clean --binary
rm -r ./.stage

lb config -b usb-hdd
# targets: [-b|--binary-images iso|iso-hybrid|net|tar|usb-hdd]

Cavets

C’e’ una directory .stage nella dir principale della live: per fare cambiamenti radicali come cambio di architettura puo’ essere necessario eliminarla. Se si elimina tutto con un rm -r ./* quella resta e puo’ impedire il completamento dell’immagine.

Il pacchetto firmware-ipw2x00 non si installa: metterlo eventualmente a mano in /lib/firmware

Diskless boot

Preparare un filesystem esportato via nfs sul server:

/mnt/fast/root  192.168.0.0/24(rw,async,no_subtree_check,no_root_squash)

Preparare il sistema operativo della workstation

Si puo’ prcedere con un debootstrap (meglio se effettuato direttamente sulla workstation se si vuole l’auto rilvevamento dei moduli per l’initrd, varie ed eventuali). Oppure si puo’ copiare un sistema operativo installato sul sistema sul server nfs, poi aggiornare /etc/fstab e l’initrd.

Debootstrap

Montare lo share nfs sul client ed effettuare un deboostrap completo (1st + 2nd stage):

debootstrap squeeze /mnt/fast/root http://mirror.switch.ch/ftp/mirror/debian/

Preparazione OS workstation

Preparare il chroot:

mount -o bind /dev/ dev/ mount -o bind /sys/ sys/ chroot ./

Preparare /etc/fstab

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
tmpfs /tmp tmpfs defaults,noatime 0 0
proc            /proc           proc    defaults        0       0
chrome:/mnt/fast/root     /     nfs     rw              0       1

Eventualmente anche un fake /etc/mtab

chrome:/mnt/fast/root/ / nfs rw,relatime,vers=3,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.0.254,mountvers=3,mountport=48380,mountproto=udp,local_lock=none,addr=192.168.0.254 0 0
rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,relatime,size=984996k,nr_inodes=246249,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620 0 0
tmpfs /run tmpfs rw,nosuid,noexec,relatime,size=198344k,mode=755 0 0
/dev/mapper/main-sid64 / ext4 rw,noatime,errors=remount-ro,user_xattr,acl,barrier=1,data=ordered 0 0
tmpfs /tmp tmpfs rw,nosuid,nodev,relatime,size=396688k 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /run/shm tmpfs rw,nosuid,nodev,relatime,size=396688k 0 0
proc /proc proc rw 0 0

Preparare /etc/network/interfaces

auto lo
iface lo inet loopback

iface eth0 inet dhcp

Chroot

chroot /mnt/var
mount proc
passwd

# Pacchetti da installare: nfs-common e il kernel almeno
apt-get install nfs-common module-init-tools udev initramfs-tools vim less ncdu discus linux-image-amd64

Modificare le impostazini di /etc/initramfs-tools/initramfs.conf

MODULES=netboot
BOOT=nfs
# Necessario?
DEVICE=eth0
# E' possibile impostare direttamente l'export della root
# NFSROOT=chorme:/mnt/fast/root

Aggiornare l’initramfs

update-initramfs -uk all

Server

Installare dnsmasq syslinux .

/etc/dnsmasq.conf

# Set the boot filename and tftpd server name and address
# for BOOTP. You will only need this is you want to
# boot machines over the network.
dhcp-boot=pxelinux.0,chrome,192.168.0.254
enable-tftp
tftp-root=/var/lib/tftpboot

/var/lib/tftpboot

cp /usr/lib/syslinux/pxelinux.0 ./
cp /mnt/fast/root/vmlinuz ./vmlinuz
cp /mnt/fast/root/initrd.img ./
mkdir pxelinux.cfg

/var/lib/tftpboot/pxelinux.cfg/default

default test

LABEL test
  MENU LABEL TEST
  KERNEL vmlinuz
  APPEND initrd=initrd.img nfsroot=192.168.0.254:/mnt/fast/root,v3,rw

Ubuntu Live

Ci sono vari approcci per creare una live personalizzata di Ubuntu:

  1. http://ubtutorials.com/tutorial/699/how-create-custom-ubuntu-live-cd-or-usb-easy-way
  2. https://help.ubuntu.com/community/LiveCDCustomization
  3. https://help.ubuntu.com/community/LiveCDCustomizationFromScratch
  4. http://www.lffl.org/2015/09/pinguy-builder-il-ritorno-di-remastersys.html#more

Il metodo LiveCDCustomization sembra non fuznionare con le ultime release (almeno non parte il server grafico), con il metodo 1 UCK si riesce a modificare una ISO di Thrusty, la 15.04 non ha funzionato al primo tentativo.

Note

Errore You asked for a hybrid ISO but isohybrid command was not found il file *.iso e’ comunque disponibile (e si spera funzionante!) in ``~/tmp/remaster-new-files/ ``

Customizzazioni per Arduino Live

Lista pacchetti:

apt-get install arduino less vim ncdu discus git xtightvncviewer git qgit git-gui ssh language-pack-kde-it language-pack-it language-pack-gnome-it firefox-locale-it fritzing

Installare manualmente l’ultima Arduino ide: https://www.arduino.cc/en/Main/Software in /opt e S4l: http://notes.andreamanni.com/lab.html#arduino-for-scratch

scripts

  • guarda.sh
  • schermo.sh con un link a secondo livello.

Tasks:

  • dpkg-reconfigure tzdata
  • passwd root
  • adduser utente
  • utente in dialout
  • instanziare sketchbook
  • preferiti firefox? startpage piffa.net?
  • script per guarda vnc (farlo tirare a un dominio di secondo livello?) - file con le password pre-impostate
  • Impostare il desktop in una macchina virtuale, fare un tar della home da utilizzare come skel (preferiti, menu avvio, desktop)
  • impostare directory sketchbook in arduino ide (link simbolico?)
  • aggiungere una chiave ssh per login senza passwd (non bello se disponibile per download pubblico)
  • installare editor arduino alternativi
  • sensible: compiare .config/sublime-text-3/ nella home
  • installare sketch for linux
  • installare git wgit xtightvncviewer

Rebuild

Dovrebbe essere possibile modificare la build:

  • backup di /home/utente/tmp/remaster-root , questo viene ripulito prima di re-inizializzare una build da UI
  • modificare via chroot (usare i comandi uck-remaster-mount uck-remaster-umount )
  • ricostruire la iso con: sudo uck-remaster-pack-rootfs sudo uck-remaster-pack-iso

Bootable iso

Per rendere la iso avviabile anche da USB si puo’ usare isohybrid contenuto nel pacchetto syslinux-utils per Ubuntu o un xorriso per Debian. Altro approccio e’ usare direttamente syslinux sullo stick: https://www.debian.org/releases/jessie/i386/ch04s03.html.en oppure usare Unetbootin. Tenere presente che se l’immagine e’ piu’ grande di ~1.4GB potrebbe non essere bootable da alcuni vecchi bios. Per far fare il boot in UEFI si deve creare il partizionamento in GPT, questo risolve il precedente problema del boot di file oversize.

Per Ubuntu c’e’ il pacchetto usb-creator-kde , che permette inoltre di fare un device persistente: https://wiki.ubuntu.com/LiveUsbPendrivePersistent . Una partizione fat non puo’ superare i 4GB, e’ possibile rimuovere il file casper-rw e creare al suo posto una partizione dedicata con un filesystem ext. E’ fondamentale che la nuova partizione abbia come etichetta (LABEL): casper-rw . - http://www.pendrivelinux.com/create-a-larger-than-4gb-casper-partition/

Virtualbox

Per far rendere disponibili periferiche USB tra le quali Arduino alla virtual machine si dovra’ scaricare l’estensione http://download.virtualbox.org/virtualbox/5.0.6/Oracle_VM_VirtualBox_Extension_Pack-5.0.6-103037.vbox-extpack e aggiungere l’utente al gruppo vboxusers .