~~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