<style> .reveal { font-size: 32px; } li { margin-top: 20px; } .reveal blockquote { width: 100%; } </style> # Lav din egen Ubuntu i fem lette trin --- # Baggrund * I OS2borgerPC har vi i mange år lavet installations-CD'er med en meget manuel proces. * Installér på computer (måske virtuel), lav tilpasninger, _klon_ den resulterende installation med Clonezilla, SSH det klonede system (ca. 3 GB) til din egen harddisk og pak en custom Clonezilla-ISO. * **Fordele:** Fordi man tilpasser systemet _manuelt_ kan man lave alle tænkelige ændringer, uanset hvor svære de er at scripte. * **Ulemper:** Det tager 2-3 timer i bedste fald, og man er næsten altid nødt til at backtracke, så det i praksis bliver 4-5. <!-- .element: class="fragment" data-fragment-index="1" --> --- # Baggrund, fortsat * Håbløst, fordi det kun er noget, vi skal gøre ca. 4 gange om året. * Kan kun lade sig gøre med en 100% detaljeret trin-for-trin-manuel. * Timing-problemer. <!-- .element: class="fragment" data-fragment-index="1" --> :slightly_frowning_face: * Hvad med noget automatisering? <!-- .element: class="fragment" data-fragment-index="2" --> --- # Løsning * Udpak Ubuntus officielle installations-ISO, lav dine rettelser og pak den sammen igen. * Det kræver, at alle ændringer kan udføres fra kommandolinjen alene. * Men det kunne vores OS2borgerPC-opsætning allerede ... <!-- .element: class="fragment" data-fragment-index="1" --> --- # Forberedelser Hent ISO: ```bash wget http://releases.ubuntu.com/focal/ubuntu-20.04.4-desktop-amd64.iso ``` Installér dependencies: ```bash apt-get install squashfs-tools genisoimage p7zip-full xorriso\ isolinux syslinux-utils ``` **Caveats:** * Jeg har kun erfaring med Ubuntu live-CD'er. * Det følgende vil kun virke for Debian-lignende systemer --- # Begreber * Live-ISOer er baseret på `debian-installer` (legacy) og `ubiquity` * Man konfigurerer installations-processen med "preseed"-filer * I `preseed` kan man svare på spørgsmål fra installeren (keyboard etc.) og definere _late-commands_. * På live-CD'er ligger det system, man installerer og kopierer wholesale ind på den nye harddisk pakket sammen i en `squashfs`-fil --- # Trin 1 - ISO Udpak ISO: ```bash 7z x ubuntu-20.04.4-desktop-amd64.iso -o"mit_iso_dir" ``` * Det kan tage et stykke tid. <!-- .element: class="fragment" data-fragment-index="1" --> * Nogle vejledninger mounter i stedet ISOen og kopierer indholdet med `rsync`. <!-- .element: class="fragment" data-fragment-index="2" --> --- # Trin 2 - `squashfs` Udpak `squashfs`: ```bash unsquashfs -f mit_iso_dir/casper/filesystem.squashfs ``` Udpakkes pr. default til en mappe, der hedder `squashfs-root` Det kan tage et stykke tid ... <!-- .element: class="fragment" data-fragment-index="1" --> --- # Trin 3 - `chroot` `chroot` ind i det udpakkede system: ```bash= # Mount evt. /proc, /sys, /dev og /dev/pts # Set up resolv.conf for netadgang cp /etc/resolv.conf squashfs-root/run/systemd/resolve/stub-resolv.conf # Mount eller kopier alt, hvad du har brug for, til squashfs-root chroot squashfs-root ``` Og nu ... ```bash root@idun:/# ``` **GIV DEN GAS!!!** Dvs. lav alle de ændringer, du har brug for. <!-- .element: class="fragment" data-fragment-index="1" --> --- # Trin 4 - `preseed` * Opsætning af preseed er en videnskab for sig * Du kan preseede svar på alle spørgsmål installeren stiller ``` # Locale sets language and country. d-i debian-installer/locale string da_DK.UTF-8 d-i time/zone string Europe/Copenhagen # Keyboard selection. keyboard-configuration keyboard-configuration/variant select Danish keyboard-configuration keyboard-configuration/layoutcode string dk keyboard-configuration console-setup/ask_detect boolean false # Late command d-i preseed/late_command string chroot /target /cdrom/my_postinstall_script.sh ``` `late-command` kan være et hvilket som helst script, du skriver og lægger ind på isoen. Du kan også preseede brugere, partitionering, mirrors og meget mere. --- # Trin 4½ - Grub og isolinux Hvis du ønsker, at ISOen altid starter uden at vise en menu, skal du have disse parametre i _iso-filens_ `boot/grub` og `isolinux/txt.cfg`: ``` file=/cdrom/preseed/<din_preseed_fil>.seed automatic-ubiquity\ quiet splash noprompt --- ``` I roden af ISOen kan du beskrive systemet i en fil, der hedder `README.diskdefines`. Der er flere parametre, men dette er en start: ``` #define DISKNAME OS2borgerPC ``` --- # Trin 5 - nedpakning Lav manifest, f.eks.: ```bash chroot squashfs-root dpkg-query -W --showformat='${Package} ${Version}\n' > \ mit_iso_dir/filesystem.manifest ``` Pak det hele sammen: ```bash= rm mit_iso_dir/casper/filesystem.squashfs mksquashfs squashfs-root mit_iso_dir/casper/filesystem.squashfs ``` Det kan ærligt og redeligt tage et stykke tid ... <!-- .element: class="fragment" data-fragment-index="1" --> Byg nu (endelig) det færdige image: <!-- .element: class="fragment" data-fragment-index="2" --> ```bash IMAGE_NAME=MagentaKillerOS # Eller hvad vi nu synes xorriso -as mkisofs -r -V "$IMAGE_NAME" -o "$IMAGE_NAME".iso -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat -isohybrid-apm-hfsplus -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin mit_iso_dir/boot iso ``` <!-- .element: class="fragment" data-fragment-index="2" --> Dette tager faktisk ikke ret lang tid. <!-- .element: class="fragment" data-fragment-index="3" --> --- # Så nu ... * Bygger OS2borgerPC images i pipelines: ![](https://i.imgur.com/kYuiDRj.png) ![](https://i.imgur.com/5yOqlIP.png) * Hvis DU har brug for et modificeret Ubuntu-system kan du (forholdsvis) hurtigt og let lave et selv. * Alt dette håndteres af scripts i OS2borgerPC-image-repoet - dette kunne let skrives om til et generelt "image builder"-værktøj * Ønsker du at modificere en server-ISO, er det lidt anderledes - check [dokumentationen i Github](https://github.com/OS2borgerPC/server_image/tree/master/image) --- # Læs mere * Magenta-internt: * [OS2borgerPC Image udvikler-docs](https://git.magenta.dk/os2borgerpc/os2borgerpc-image/-/blob/development/docs/source/dev.rst) * [OS2borgerPC Kiosk udvikler-docs](https://os2borgerpc-server-image.readthedocs.io/en/latest/technical_documentation.html#how-to-build-the-os2borgerpc-kiosk-iso-image) (server-udgaven) * Fra Ubuntus docs: * [Live CD Customization](https://help.ubuntu.com/community/LiveCDCustomization) * [Ubiquity Automation](https://wiki.ubuntu.com/UbiquityAutomation) * [Desktop CD Options](https://wiki.ubuntu.com/DesktopCDOptions) * [Ubuntu Installation Guide Appendix B](https://help.ubuntu.com/lts/installation-guide/amd64/apbs01.html) --- # Tak ![](https://i.imgur.com/0eOLncE.png =400x400) ![](https://redmine.magenta-aps.dk/attachments/download/15177/Untitled%20Diagram.png) [www.modspil.dk](https://www.modspil.dk)
{"metaMigratedAt":"2023-06-16T22:01:53.280Z","metaMigratedFrom":"YAML","title":"Lav din egen Ubuntu i fem lette trin","breaks":true,"description":"Hvordan du let kan lave din egen custom Ubuntu-CD","slideOptions":"{\"transition\":\"fade\"}","contributors":"[{\"id\":\"0e0c13a4-dd7c-44fa-986b-7a4affea3678\",\"add\":7730,\"del\":539}]"}
    279 views