========================= Appunti su Debian live ========================= .. contents:: Indice degli argomenti .. |date| date:: 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" .. warning: i file devono avere un suffisso .list , alcuni pacchetti (ad esempio i firmware non-free) che richiedono di accettare un contratto di licenza possono risultare non installabili. 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. # # 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`` .