venerdì 21 dicembre 2007

Personalizzazione di una Debian Live

Come promesso nel precedente articolo, cercherò ora di descrivere come ho fatto per personalizzare la nuova distribuzione.

Una volta lanciato lh_config, si è creata una sottocartella che si chiama "config/" e dentro ci troveremo

  • binary (si occupa della personalizzazione del sistema live vero e proprio)

  • bootstrap (tutto quello che riguarda il bootstrap, diciamo il sistema di avvio)

  • chroot (imposta il comportamento del chroot, in pratica una sorta di postproduzione manuale alle varie automazioni svolte dal live-helper)

  • common (vari aspetti comuni a tutto il processo di live-helper)

  • source (si prende cura di eventuali sorgenti, non mi ha interessato per questa volta)

  • più svariate cartelle ognuna con una loro funzione specifica


ora... questi file sono personalizzabili manualmente con un qualsiasi editor di testi oppure da riga di comando attraverso parametri specifici (es.: lh_config --debian-installer disabled disabiliterà l'installatore debian andando a cambiare LH_DEBIAN_INSTALLER= nel file binary)Vi posto qui di seguito i 4 file come da me personalizzati:
binary
# config/binary - options for live-helper(7), binary stage# $LH_BINARY_FILESYSTEM: set image filesystem
# (Default: fat16)
LH_BINARY_FILESYSTEM="fat16"

# $LH_BINARY_IMAGES: set image type
# (Default: iso)
LH_BINARY_IMAGES="iso"

# $LH_BINARY_INDICES: set apt/aptitude generic indices
# (Default: enabled)
LH_BINARY_INDICES="enabled"

# $LH_BOOTAPPEND_LIVE: set boot parameters
# (Default: empty)
LH_BOOTAPPEND_LIVE="locale=it_IT.UTF-8 keyb=it"

# $LH_BOOTAPPEND_INSTALL: set boot parameters
# (Default: empty)
LH_BOOTAPPEND_INSTALL="-- }}}}}}}}}}}"

# $LH_BOOTLOADER: set bootloader
# (Default: grub)
LH_BOOTLOADER="grub"

# $LH_CHECKSUMS: set checksums
# (Default: enabled)
LH_CHECKSUMS="enabled"

# ${LH_CHROOT_BUILD: control if we build binary images chrooted
# (Default: enabled)
# DO NEVER, *NEVER*, *N*E*V*E*R* SET THIS OPTION to disabled.
LH_CHROOT_BUILD="enabled"

# $LH_DEBIAN_INSTALLER: set debian-installer
# (Default: disabled)
LH_DEBIAN_INSTALLER="disabled"

# $LH_DEBIAN_INSTALLER_DAILY: set daily images
# (Default: disabled)
LH_DEBIAN_INSTALLER_DAILY="disabled"

# $LH_ENCRYPTION: set encrytion
# (Default: empty)
LH_ENCRYPTION=""

# $LH_GRUB_SPLASH: set custom grub splash
# (Default: empty)
LH_GRUB_SPLASH=""

# $LH_HOSTNAME: set hostname
# (Default: barbalinux)
LH_HOSTNAME="barbalinux"

# $LH_ISO_APPLICATION: set iso author
# (Default: BarbalinuX Live)
LH_ISO_APPLICATION="BarbalinuX Live"

# $LH_ISO_PREPARER: set iso preparer
# (Default: live-helper 1.0~a34; http://packages.qa.debian.org/live-helper)
LH_ISO_PREPARER="live-helper 1.0~a34; http://packages.qa.debian.org/live-helper"

# $LH_ISO_PUBLISHER: set iso preparer
# (Default: Progetto MaiolinuX; http://maiuzland.wordpress.com/; francesco.maioli@NOSPAM.gmail.com)
LH_ISO_PUBLISHER="Progetto MaiolinuX; http://maiuzland.wordpress.com/; francesco.maioli@NOSPAM.gmail.com"

# $LH_ISO_VOLUME: set iso volume (max 32 chars)
# (Default: BarbalinuX Live 11_2007)
LH_ISO_VOLUME="BarbalinuX Live 12_2007"

# $LH_MEMTEST: set memtest
# (Default: memtest86+)
LH_MEMTEST="memtest86+"

# $LH_NET_ROOT_FILESYSTEM: set netboot filesystem
# (Default: nfs)
LH_NET_ROOT_FILESYSTEM="nfs"

# $LH_NET_ROOT_MOUNTOPTIONS: set nfsopts
# (Default: empty)
LH_NET_ROOT_MOUNTOPTIONS=""

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

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

# $LH_NET_COW_FILESYSTEM: set net client cow filesystem
# (Default: nfs)
LH_NET_COW_FILESYSTEM="nfs"

# $LH_NET_COW_MOUNTOPTIONS: set cow mount options
# (Default: empty)
LH_NET_COW_MOUNTOPTIONS=""

# $LH_NET_COW_PATH: set cow directory
# (Default: )
LH_NET_COW_PATH=""

# $LH_NET_COW_SERVER: set cow server
# (Default: )
LH_NET_COW_SERVER=""

# $LH_SYSLINUX_SPLASH: set custom syslinux splash
# (Default: empty)
LH_SYSLINUX_SPLASH=""

# $LH_SYSLINUX_TIMEOUT: set custom syslinux timeout in seconds
# (Default: 0)
LH_SYSLINUX_TIMEOUT="10"

# $LH_SYSLINUX_CFG: set custom syslinux configuration file
# (Default: empty)
LH_SYSLINUX_CFG=""

# $LH_SYSLINUX_MENU: set syslinux menu
# (Default: disabled)
LH_SYSLINUX_MENU="disabled"

# $LH_SYSLINUX_MENU_LIVE_ENTRY: set text to be used on the menu for live entries
# (Default: Start Debian Live)
LH_SYSLINUX_MENU_LIVE_ENTRY="Start Debian Live"

# $LH_SYSLINUX_MENU_LIVE_FAILSAFE_ENTRY: set text to be used on the menu for live entries (failsafe ones)
# (Default: )
LH_SYSLINUX_MENU_LIVE_FAILSAFE_ENTRY=""

# $LH_SYSLINUX_MENU_MEMTEST_ENTRY: set text to be used on the menu for memtest entry
# (Default: Memory test)
LH_SYSLINUX_MENU_MEMTEST_ENTRY="Memory test"

# $LH_USERNAME: set username
# (Default: baby)
LH_USERNAME="baby"

bootstrap
# config/bootstrap - options for live-helper(7), bootstrap stage

# $LH_ARCHITECTURE: select chroot architecture
# (Default: autodetected)
LH_ARCHITECTURE="i386"

# $LH_BOOTSTRAP_CONFIG: set distribution config directory
# (Default: empty)
LH_BOOTSTRAP_CONFIG=""

# $LH_BOOTSTRAP_INCLUDE: include packages on base
# (Default: empty)
LH_BOOTSTRAP_INCLUDE=""

# $LH_BOOTSTRAP_EXCLUDE: exclude packages on base
# (Default: empty)
LH_BOOTSTRAP_EXCLUDE=""

# $LH_BOOTSTRAP_FLAVOUR: select flavour to use
# (Default: )
LH_BOOTSTRAP_FLAVOUR=""

# $LH_BOOTSTRAP_KEYRING: set distribution keyring
# (Default: empty)
LH_BOOTSTRAP_KEYRING=""

# $LH_DISTRIBUTION: select distribution to use
# (Default: lenny)
LH_DISTRIBUTION="lenny"

# $LH_MIRROR_BOOTSTRAP: set mirror to fetch packages from
# (Default: http://localhost:3142/debian.fastweb.it/debian/)
LH_MIRROR_BOOTSTRAP="http://localhost:3142/debian.fastweb.it/debian/"

# $LH_MIRROR_BOOTSTRAP_SECURITY: set security mirror to fetch packages from
# (Default: http://localhost:3142/security.debian.org/)
LH_MIRROR_BOOTSTRAP_SECURITY="http://localhost:3142/security.debian.org/"

# $LH_MIRROR_BINARY: set mirror which ends up in the image
# (Default: http://localhost:3142/debian.fastweb.it/debian/)
LH_MIRROR_BINARY="http://localhost:3142/debian.fastweb.it/debian/"

# $LH_MIRROR_BINARY_SECURITY: set security mirror which ends up in the image
# (Default: http://localhost:3142/security.debian.org/)
LH_MIRROR_BINARY_SECURITY="http://localhost:3142/security.debian.org/"

# $LH_SECTIONS: select section(s) to use
# (Default: main contrib non-free)
LH_SECTIONS="main contrib non-free"

chroot
# config/chroot - options for live-helper(7), chroot stage

# $LH_CHROOT_FILESYSTEM: set chroot filesystem
# (Default: squashfs)
LH_CHROOT_FILESYSTEM="squashfs"

# $LH_UNION_FILESYSTEM: set union filesystem
# (Default: aufs)
LH_UNION_FILESYSTEM="aufs"

# $LH_EXPOSED_ROOT: expose root as read only
# (Default: disabled)
LH_EXPOSED_ROOT="disabled"

# $LH_HOOKS: set hook commands
# (Default: empty)
LH_HOOKS=""

# $LH_INTERACTIVE: set interactive build
# (Default: shell)
LH_INTERACTIVE="shell"

# $LH_KEYRING_PACKAGES: set keyring packages
# (Default: empty)
LH_KEYRING_PACKAGES=""

# $LH_LANGUAGE: set language to use
# (Default: empty)
LH_LANGUAGE="it"

# $LH_LINUX_FLAVOURS: set kernel flavour to use
# (Default: autodetected)
LH_LINUX_FLAVOURS="486"

# $LH_LINUX_PACKAGES: set kernel packages to use
# (Default: autodetected)
LH_LINUX_PACKAGES="linux-image-2.6 aufs-modules-2.6 squashfs-modules-2.6"

# $LH_PACKAGES: set packages to install
# (Default: empty)
LH_PACKAGES=""

# $LH_PACKAGES_LISTS: set package list to install
# (Default: standard)
LH_PACKAGES_LISTS="standard"

# $LH_TASKS: set tasks to install
# (Default: empty)
LH_TASKS=""

# $LH_SECURITY: enable security updates
# (Default: enabled)
LH_SECURITY="enabled"

# $LH_SYMLINKS: enable symlink convertion
# (Default: disabled)
LH_SYMLINKS="disabled"

# $LH_SYSVINIT: enable sysvinit
# (Default: disabled)
LH_SYSVINIT="disabled"

common
# config/common - common options for live-helper(7)

# $LH_APT: set package manager
# (Default: aptitude)
LH_APT="aptitude"

# $LH_APT_FTP_PROXY: set apt/aptitude ftp proxy
# (Default: autodetected or empty)
LH_APT_FTP_PROXY=""

# $LH_APT_HTTP_PROXY: set apt/aptitude http proxy
# (Default: autodetected or empty)
LH_APT_HTTP_PROXY=""

# $LH_APT_PDIFFS: set apt/aptitude pdiff indices
# (Default: enabled)
LH_APT_PDIFFS="enabled"

# $LH_APT_PIPELINE: set apt/aptitude pipeline depth
# (Default: )
LH_APT_PIPELINE=""

# $LH_APT_RECOMMENDS: set apt/aptitude recommends
# (Default: disabled)
LH_APT_RECOMMENDS="disabled"

# $LH_APT_SECURE: set apt/aptitude security
# (Default: enabled)
LH_APT_SECURE="enabled"

# $LH_BOOTSTRAP: set bootstrap program
# (Default: debootstrap)
LH_BOOTSTRAP="debootstrap"

# $LH_CACHE: control cache
# (Default: enabled)
LH_CACHE="enabled"

# $LH_CACHE_INDICES: control if downloaded package indices should be cached
# (Default: disabled)
LH_CACHE_INDICES="disabled"

# $LH_CACHE_PACKAGES: control if downloaded packages files should be cached
# (Default: enabled)
LH_CACHE_PACKAGES="enabled"

# $LH_CACHE_STAGES: control if completed stages should be cached
# (Default: bootstrap)
LH_CACHE_STAGES="bootstrap"

# $LH_DEBCONF_FRONTEND: set debconf(1) frontend to use
# (Default: dialog)
LH_DEBCONF_FRONTEND="dialog"

# $LH_DEBCONF_NOWARNINGS: set debconf(1) warnings
# (Default: yes)
LH_DEBCONF_NOWARNINGS="yes"

# $LH_DEBCONF_PRIORITY: set debconf(1) priority to use
# (Default: critical)
LH_DEBCONF_PRIORITY="critical"

# $LH_INITRAMFS: set initramfs hook
# (Default: live-initramfs)
LH_INITRAMFS="live-initramfs"

# $LH_FDISK: set fdisk program
# (Default: autodetected)
LH_FDISK="fdisk"

# $LH_LOSETUP: set losetup program
# (Default: autodetected)
LH_LOSETUP="losetup"

# $LH_MODE: set distribution mode
# (Default: debian)
LH_MODE="debian"

# $LH_ROOT_COMMAND: use sudo or equivalent
# (Default: empty)
#LH_ROOT_COMMAND="sudo"

# $LH_USE_FAKEROOT: use fakeroot/fakechroot
# (Default: disabled)
LH_USE_FAKEROOT="disabled"

# $LH_TASKSEL: set tasksel program
# (Default: aptitude)
LH_TASKSEL="aptitude"

# $LH_INCLUDES: set includes
# (Default: /usr/share/live-helper/includes)
LH_INCLUDES="/usr/share/live-helper/includes"

# $LH_TEMPLATES: set templates
# (Default: /usr/share/live-helper/templates)
LH_TEMPLATES="/usr/share/live-helper/templates"

# Live-helper options

# $LH_BREAKPOINTS: enable breakpoints
# (Default: disabled)
#LH_BREAKPOINTS="disabled"

# $LH_DEBUG: enable debug
# (Default: disabled)
#LH_DEBUG="disabled"

# $LH_FORCE: enable force
# (Default: disabled)
#LH_FORCE="disabled"

# $LH_QUIET: enable quiet
# (Default: disabled)
LH_QUIET="disabled"

# $LH_VERBOSE: enable verbose
# (Default: disabled)
#LH_VERBOSE="disabled"

Ora le cose da sapere per fare le scelte sarebbero tante, ma per fare funzionare lo script così personalizzato basta aver installato apt-cacher visto che lo utilizzo come mirror per i pacchetti (ricordati di controllare che le porte siano quelle giuste, anche se ho lasciato quelle di default).

Farsi una lista dei pacchetti da installare nel nostro sistema e metterla in config/chroot_local-packageslists/ (un normale file di testo con un pacchetto per riga e senza estensione [si possono anche mettere dei commenti]), nell'articolo in cui descriverò il metodo di scelta dei pacchetti, posterò tale lista.

Mettere in config/chroot_local-includes/ eventuali personalizzazioni grafiche/testuali/script/ecc. ricordando di ricreare l'albero delle cartelle come se si partisse dalla cartella radice. (Penso che scriverò un articolo al riguardo

Ciao MaiuZ

15 commenti:

  1. Ciao,
    sto realizzando una distro chiamata siderus (www.siderus.tk) (non sono qui per spam), vorrei sapere una cosa da te.
    Mi sto impazzendo a modificare debian o Ubuntu per realizzare una beta, il fatto è che ho tutto pronto (repository, pacchetti base, grafica ecc...) ma mi manca solo quel programmino che realizzi una iso, o che mi aiuti a realizzare un sistema live...
    Non è che ne conosci altri, magari targati debian??? (intendo .deb)

    RispondiElimina
  2. Dipende se hai necessità che sia live o meno.
    Se live ti consiglio chiaramente in ordine:
    Live Helper
    Morphix
    Customizzare una knoppix
    se invece va bene una normale installazione ci sono svariati metodi cmq può esserti utile:
    debian-cd
    simple-ccd
    che trovi nei repository ufficiali di debian
    Ciao MaiuZ

    RispondiElimina
  3. Sostanzialmente è una live, ma miravo a realizzare una live installabile... cosa consigli?

    RispondiElimina
  4. live helper da meno problemi
    morphix probabilmente è più facile
    knoppix probabilmente è più documentato

    in ogni caso prossimamente posterò altre info su come ho fatto a realizzare barbalinux

    P.S. invierò anche un piccolo script che installa in automatico la distro live già testato

    RispondiElimina
  5. em..
    morphix e knoppix sono distro... e le conosco...
    ma live helper non lo conosco..
    cosè?
    un programma installabile?
    una guida?
    Stavo pensando (anche se è un lavoro lungo) di trasformare LFS (linuxfromscratch) in live.
    Esistono programmi (no UCK o RECONSTRUCTOR) per realizzare distro live?
    grazie

    RispondiElimina
  6. bhe per quanto riguarda morphix si è vero che è una distro... ma morphix nasce proprio come distro modulare su cui costruire altre distro facilmente... è stato ad esempio sfruttato per realizzare dreamlinux (una bella distro brasiliana) che con il suo remaster ti potrebbe essere molto utile
    live helper è un programma che serve per crearsi una distro basata su debian live
    per info guarda http://debian-live.alioth.debian.org/
    inoltre esiste anche un interfaccia grafica di live-helper che si chiama live-magic che lo trovi nei normali repository debian

    c'è anche dfsbuild che trovi sempre nei repository debian e + o - serve per lo stesso motivo di live-helper

    RispondiElimina
  7. P.S. Se si puo, mi potreste dare indicazioni su come farlo???
    Graazie!! :)

    RispondiElimina
  8. Salve a tutti, volevo anch'io (chissa perchè)
    realizzare una distro installabile Debian-based...
    Volevo capire se, a livello di licenze, ecc., è possibile
    modificare l'immagine di boot, aggiungere pacchetti
    come codec mp3, toglierne alcuni, aggiungere un tema rendendolo predefinito,
    mettere il nome dei "modificatori", cambiare il nome della distribuzione
    e ridistribuirla...

    Grazie mille a tutti,.,

    RispondiElimina
  9. Ciao, sono arrivato sul tuo blog tramite gogle mentre cercavo il modo di fare un mirror locale di security.debian.org.
    Ho visto che nella costruzione della tua live, utilizzi un repository locale di security. Mi diresti com'e' il tuo script per farti questo benedetto mirror? Il mio e' questo:

    debmirror -p -d etch -e rsync -r :debian --host=security.debian.org --ignore-release-gpg --arch=i386 /home/fspub/debmirror/

    (naturalmente va tutto su una linea), ma non me lo fa fare dandomi errori,
    Il bello e' che con lo stesso script, se faccio il mirror del repository principale (main contrib non free) me lo fa tranquillamente.

    RispondiElimina
  10. Bhe come ho scritto nel post io ho preferito usare apt-cacher piuttosto che farmi un immenso mirror con pacchetti che molto probabilmente non mi sarebbero serviti.... Ho anche messo un collegamento alla guida di apt-cacher (http://guide.debianizzati.org/index.php/Usare_apt-cacher_per_creare_una_cache_dei_pacchetti_usabile_in_una_LAN)
    alla quale ho contribuito anch'io, magari dacci un'occhiata...
    Ad ogni modo credo che debmirror (che non ho mai utilizzato!) credo abbia anche un parametro "--ignore-small-errors" che a quello che vedo consigliano di utilizzare

    RispondiElimina
  11. Non avevo capito che non utilizzassi repository locali, perche' non conoscevo apt-cacher. Interessante.
    Grazie.

    RispondiElimina
  12. A me serviva un metodo per non sprecare troppa banda, visto che ogni volta che compilavo la distro (e di prove ne ho fatte tante!) mi scaricava tutti i pacchetti necessari daccapo. Il metodo più semplice e veloce che ho trovato è stato quello di installare appunto apt-cacher che non è altro che un piccolo proxy per i pacchetti (si tiene quelli già scaricati senza stare a riscaricarli ogni volta se non sono cambiati)
    Spero di esserti stato utilie
    Ciao MaiuZ

    RispondiElimina
  13. Ciao, sto provando ad utilizzare live-helper, ma poichè ho una partizione di 10 GB su cui ho il mio sistema madre e sui cui devo creare l'ISO (non riesco a lanciare livehelper nè sulla partizione fat nè su un'altra ext), non riesco a creare l'immagine per via del poco spazio disponibile.
    Hai consigli da darmi?ho provato a dare lh_clean --cache e questo mi ha comportato che non riesco ad entrare nella distro con lh_chroot e mi ha cancellato la cartella cache (di cui poi ha necessità, e quindi devo creare vuota io manualmente). E in ogni caso lo spazio guadagnato non è sufficiente...
    C'è un metodo per indirizzare per lo meno l'ISO su un path specifico?
    Grazie,
    Corra

    RispondiElimina
  14. @maiuz: altre alternative sono apt-proxy o creare un intero mirror Debian locale (meno praticabile, senza almeno un serverino domestico in LAN acceso 24/24).

    RispondiElimina
  15. Hai ragione! io ho indicato una delle tante vie che debian offre

    x Corra
    purtroppo non ti so aiutare, non ho avuto di questi problemi di spazio fortunatamente, l'unica cosa che mi sento di consigliarti è di limitare al minimo indispensabile i pacchetti che vai ad installare anche per un motivo di velocità al momento del boot del sistema live...
    Intanto indago, come idea ho che se non posso spostare la iso da qualche parte sposto tutti i riferimenti e lancio lh da dove voglio venga prodotta la iso

    RispondiElimina