~~SLIDESHOW~~ ====== Linux Live CDs selbst anpassen ====== * * Das Ubuntu Customization Kit - uck * Klaus Franken, [[StrukturPunkt.de]] * KNF Kongress 22.11.2009 * {{:doku:uck-logo.png|}} ===== Wie kam ich dazu? ===== {{:doku:ml200911_titel.jpg?400|}} ===== Aufgabe ===== * Linux Live CD * Layout- und Sprachanpassung * schon möglichst viel dabei, z.B. * grafische Oberfläche * volle Netzwerkumgebung * Office-Programme * zusätzliche Programme * HFS+ Dateisystem * Mac Hardware Unterstützung (auf allen Intel Macs) ===== Ubuntu Live-CD Übersicht ===== {{:doku:ubuntu-logo.png|}} * http://www.ubuntu.com * basiert auf Debian, nur mehr GUI * benutzt [[http://de.wikipedia.org/wiki/SquashFS|SquashFS]] * komprimiertes read-only-Dateisystem * benutzt [[http://de.wikipedia.org/wiki/UnionFS|UnionsFS]] * verschiedener Dateisysteme werden zu einem einzigen logischen Dateisystem vereinigt * => im Live-System kann alles überschrieben werden, z.B. Updates * Live-System kann auch auf Festplatte und USB-Stick installiert werden ===== uck Übersicht ===== {{:doku:uck-logo-kurz.png|}} * uck: Ubuntu Customization Kit * http://uck.sourceforge.net/ * macht aus einer Ubuntu-CD eine neue CD * keine komplette Entwicklungsumgebung nötig ===== uck Übersicht 2 ===== {{:doku:uck-ablauf.png?700|}} ===== uck Voraussetzungen ===== {{:doku:uck-logo-kurz.png|}} * Ubuntu-System (getestet mit 9.04) * Ubuntu Live-CD iso-Image * 5GB freien Plattenplatz * schnellen Internetzugang * RAM und Zeit ===== uck Installation ===== {{:doku:uck-logo-kurz.png|}} * /etc/apt/sources.list aktivieren: * deb http://archive.ubuntu.com/ubuntu jaunty universe * deb-src http://archive.ubuntu.com/ubuntu jaunty universe * apt-get update * apt-get install uck ===== uck Vorbereitung ===== {{:doku:uck-logo-kurz.png|}} * Benutzer für uck (!= root): * nicht auf Live-Platte, sondern echter Platte * 5GB Platz * Benutzer für Vorlage * wird später nach /etc/skel kopiert * Anpassung z.B. Firefox-Homepage etc. ===== uck Start ===== {{:doku:uck-logo-kurz.png|}} * Grafisch: Anwendungen / Systemwerkzeuge / Ubuntu Customization Kit * Terminal: ''uck-gui'' ===== uck Wizard ===== * language packs: de, ... * language which will be used at boot of live CD: de * schon dafür lohnt sich der ganze Aufwand ;-) * desktop environments: gnome * choose an ISO Image to be used as the basis: meine-vorlage.iso * enter the name for the CD: ''KNF Live Live CD 2009'' * Do you want to customize during building? yes * Do you want to delete all windows-related files from the CD: yes/no Fasten seatbelts... (nach Passwortabfrage). ===== uck Ordnerstruktur ===== * /home/ * //benutzer/// * tmp/ * customizations-scripts/ * //Scripts für CD-Anpassung// * //wird automatisch angelegt und überschrieben :!:// * iso-mount/ * // Mount-Point für Original-CD // * squashfs-mount/ * // Mount-Point für Squash-FS // * remaster-iso/ * // neues CD Abbild // * remaster-root/ * neues Root-Filesystem * unser Ort für weitere Anpassungen * remaster-new-files/ * //wird bei jedem Lauf gelöscht :!: // * livecd.iso * // unser Ziel :-) // * build.log * /tmp/ * .X11-unix * //zwischen mehreren Läufen manuell löschen // ===== uck "manually"-Script 1/3 ===== uck durchläuft Phase 1 und wartet auf manuelle Anpassungen. Beispiel: #!/bin/sh # (c) 2009 Klaus.Franken@StrukturPunkt.de # Customize Ubuntu-Root unter `pwd`/tmp/remaster-new-files # Quelldaten von: # `pwd`/uck/ # /home/ubuntu/ UCKDIR=`pwd`/tmp/ ZIEL=`pwd`/tmp/remaster-root QUELLE=`pwd`/uck LIVE=vorlage cp -a /home/$LIVE/. $ZIEL/etc/skel/. || exit 2 rm -f $ZIEL/etc/skel/.bash_history || exit 2 rm -rf $ZIEL/etc/skel/.local/share/Trash/ || exit 2 rm -rf $ZIEL/etc/skel/.xsession-error || exit 2 rm -rf $ZIEL/etc/skel/.mozilla/firefox/*/urlclassifier3.sqlite || exit 2 rm -rf $ZIEL/etc/skel/.mozilla/firefox/*/Cache/* || exit 2 ... ===== uck "manually"-Script 2/3 ===== Fortsetzung: ... ## Live-Root erweitern cp -a $QUELLE/rootfs/. $ZIEL/. || exit 2 ## iso-Image erweitern echo -n "KNF Live CD, Version " > $ZIEL/../remaster-iso/VERSION date +"%Y.%m.%d-%H:%M" >> $ZIEL/../remaster-iso/VERSION ... ## updates chroot $ZIEL apt-get update || exit 2 chroot $ZIEL apt-get -y --purge remove 'gimp*' || exit 2 chroot $ZIEL apt-get -y --purge remove 'openoffice*' || exit 2 chroot $ZIEL apt-get -y install 'abiword' || exit 2 chroot $ZIEL apt-get install udev || exit 2 chroot $ZIEL apt-get install acpid || exit 2 chroot $ZIEL apt-get install hal || exit 2 chroot $ZIEL apt-get install checkbox checkbox-gtk || exit 2 chroot $ZIEL apt-get -y upgrade || exit 2 ... ===== uck "manually"-Script 3/3 ===== Fortsetzung: ... # Kernel Update und alte löschen chroot $ZIEL apt-get -y dist-upgrade || exit 2 # von http://kanotix.com/index.php?module=pnWikka&tag=OldKernelEntsorgen echo "KERNEL=\$(dpkg -l| \ awk \ '/linux-image|linux-headers|linux-restricted-modules/{print \$2}' \ | grep -v $(uname -r|sed 's/\([^-]*-[^-]*\)-.*/\1/')); \ [ \"\$KERNEL\" ] && apt-get remove --yes --purge \$KERNEL" \ > $ZIEL/tmp/remove_old_kernels.sh chroot $ZIEL sh -x /tmp/remove_old_kernels.sh || exit 2 rm $ZIEL/tmp/remove_old_kernels.sh chroot $ZIEL apt-get -y autoremove || exit 2 exit 0 ===== exit 0 ===== {{:doku:bildschirmfoto-remaster-new-files_-_datei-browser.png|}} ===== Tipps & Tricks ===== ==== Sprachanpassung ISO-Image Boot (Grub) ==== echo "cat \$ISO_REMASTER_DIR/isolinux/de.tr | perl -ne '\$_ =~ s/Tastaturbelegung/Tastatur/; print;' | perl -ne '\$_ =~ s/Weitere Optionen/Mehr Optionen/; print;' | perl -ne '\$_ =~ s/Barrierefreiheit/Barrierefrei/; print;' | perl -ne '\$_ =~ s/Ubuntu \^ausprobieren \(Rechner bleibt unverändert\)/Mac Life Ubuntu \^Rettungssystem/; print;' > \$ISO_REMASTER_DIR/isolinux/de.tr-NEU || exit 2" >> $UCKDIR/customization-scripts/customize_iso || exit 2 echo "mv \$ISO_REMASTER_DIR/isolinux/de.tr-NEU \$ISO_REMASTER_DIR/isolinux/de.tr || exit 2" >> $UCKDIR/customization-scripts/customize_iso || exit 2 ==== Timezone ==== ''/etc/rc.local (in rootfs)'' # Zeitzone mv /etc/localtime /etc/localtime.ORIG ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime