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:
http://ubtutorials.com/tutorial/699/how-create-custom-ubuntu-live-cd-or-usb-easy-way
https://help.ubuntu.com/community/LiveCDCustomizationFromScratch
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
.