Benutzer-Werkzeuge

Webseiten-Werkzeuge


project:debianmax

Debian Max Disc


Sinn dieses Wahnsinns ist es, am Ende ein ISO zu haben dass man je nach Größe und Bedarf auf einen USB-Stick/Festplatte/CD/DVD/BD(-XL) werfen kann, in dem dann alle Pakete des jeweiligen Releases enthalten sind.
ALLE!

Voraussetzungen

  • Am besten Debian oder eines der Derivate in halbwegs aktueller Fassung
  • ~200GB freien Platz auf $Platte
  • zu viel Zeit + ein paar Nerven
  • eine sinnvolle Anwendung für das Ergebnis

Pakete beschaffen

siehe https://www.debian.org/CD/jigdo-cd/index.de.html
siehe https://wiki.debian.org/DebianInstaller/Modify/CD
siehe https://www.gnu.org/software/xorriso/man_1_xorriso.html
siehe http://cdimage.debian.org/cdimage/weekly-builds/i386/log/success/B_i386_netinst.log

Debian-Programme die benötigt werden:

  • screen
  • jigdo-file
  • bsdtar
  • debian-cd
  • xorriso
  • isolinux

Los gehts:

  • Das Beispiel verwendet Debian 11.0 (bullseye) für amd64
  • einen screen starten
  • screen -S debmax
  • Am einfachsten geht das aktuell mit den BD-Installationsimages von Debian, diese gibt es jedoch nicht direkt per HTTP zum Download, sondern man muss sie wie folgt mit jigdo erstellen
  • Links zu Jigdo-Dateien gibts unter https://www.debian.org/CD/jigdo-cd/index.de.html
  • Sollte jigdo nach Mirrors fragen, bei aktueller Version http://ftp.de.debian.org/debian/ oder was anderes in der Nähe angeben, den Non-US-Mirror einfach mit Enter bestätigen (nicht denselben angeben!)
  • Sollte man das für eine ältere Distribution machen wollen, ggf. http://ftp.de.debian.org/debian-archive/debian/ und http://ftp.de.debian.org/debian-archive/debian-non-US/ angeben
  • abwarten und schauen, dass einem die Platte nicht vollläuft
  • Für die, dies ganz genau meinen, außerdem noch eine CD mit non-free Firmware besorgen von https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/
  • Dann cd1 entpacken
  • Pools restlicher CDs in entpackte CD1 kopieren
    mkdir -pv cd{,2,3,4,5}
    bsdtar -C cd/ -xf debian-11.0.0-amd64-BD-1.iso
    chmod -R +w cd
    mount -o loop debian-11.0.0-amd64-BD-2.iso cd2
    mount -o loop debian-11.0.0-amd64-BD-3.iso cd3
    mount -o loop debian-11.0.0-amd64-BD-4.iso cd4
    mount -o loop firmware-11.0.0-amd64-netinst.iso cd5
    for i in 2 3 4
    do
    cp -rv cd$i/pool/* cd/pool/
    done
    cp -rv cd5/pool/non-free cd/pool/
    cp -rv cd5/firmware cd/
    cp -rv cd5/dists/bullseye/non-free cd/dists/bullseye/
  • Leider gibt es von non-free keine komplette CD.. daher muss das ganze Repo heruntergeladen werden
  • Erstmal ne Liste aller non-free Pakete für den arch runterladen: wget http://ftp.de.debian.org/debian/dists/Debian11.0/non-free/binary-amd64/Packages.gz
  • .deb-URLs aus dem Index holen
  • zcat Packages.gz | grep "Filename: " | sed -e 's/: /ftp.de.debian.org\/debian\//' > packages
  • .debs runterladen
  • wget -cm -nv –show-progress -i packages
  • non-free Kram zur CD hinzufügen
  • Dann braucht man noch die Overrides von http://deb.debian.org/debian/indices/
  • mkdir -pv cd/indices
  • cd cd/indices
  • for file in *gz; do gzip -d $file; done
  • cd ../..
  • Dann muss eine Konfigurationsdatei für apt-ftparchive angelegt werden
    cat > config-deb <<< EOF
    # A config-deb file.
    
    # Points to where the unpacked DVD-1 is.
    Dir {
        ArchiveDir "cd";
       OverrideDir "cd/indices";
       CacheDir "cd/indices";
    };
    
    # Sets the top of the .deb directory tree.
    TreeDefault {
       Directory "pool/";
    };
    
    # The location for a Packages file.
    BinDirectory "pool/non-free" {
       Packages "dists/bullseye/non-free/binary-amd64/Packages";
       BinOverride "override.bullseye.non-free";
    };
    
    BinDirectory "pool/contrib" {
       Packages "dists/bullseye/contrib/binary-amd64/Packages";
       BinOverride "override.bullseye.contrib";
    };
    
    BinDirectory "pool/main" {
       Packages "dists/bullseye/main/binary-amd64/Packages";
       BinOverride "override.bullseye.main";
    };
    
    # We are only interested in .deb files (.udeb for udeb files).
    Default {
       Packages {
           Extensions ".deb";
        };
    };
    
    EOF
  • apt-ftparchive starten
  • apt-ftparchive generate config-deb
  • Ergibt:
     pool/non-free: New 1,238 kB 664 files 6,493 MB 2min 22s
     pool/contrib: 225 files 135 MB 2s
     pool/main: 58590 files 81.2 GB 1h 1min 26s
    Packages done, Starting contents.
    Done. 87.8 GB in 59479 archives. Took 1h 3min 51s
  • Noch die udeb-Installerpakete aktualisieren, dafür braucht es eine eigenen config
    cat > config-udeb <<< EOF
    # A config-deb file.
    
    # Points to where the unpacked DVD-1 is.
    Dir {
        ArchiveDir "cd";
       OverrideDir "cd/indices";
       CacheDir "cd/indices";
    };
    
    # Sets the top of the .deb directory tree.
    TreeDefault {
       Directory "pool/";
    };
    
    BinDirectory "pool/main" {
       Packages "dists/bullseye/main/debian-installer/binary-amd64/Packages";
       BinOverride "override.bullseye.main.debian-installer";
    };
    
    # We are only interested in .deb files (.udeb for udeb files).
    Default {
       Packages {
           Extensions ".udeb";
        };
    };
    EOF
  • apt-ftparchive generate config-udeb
  • Ergibt
     pool/main: 260 files 60.2 MB 1min 59s
    Packages done, Starting contents.
    Done. 60.2 MB in 260 archives. Took 1min 59s
  • Dann die MD5-Hashes aus der Release-Datei entfernen:
  • sed -i '/MD5Sum:/,$d' cd/dists/bullseye/Release
  • Release-Datei neu generieren
  • apt-ftparchive release cd/dists/bullseye » cd/dists/bullseye/Release
  • non-free zum Release hinzufügen
  • sed -i 's/main contrib/main contrib non-free/' cd/dists/bullseye/Release
  • Da der Stack im Folgenden bei der Menge an Dateien zu klein wäre und es nur ein unwirsches -bash: /usr/bin/md5sum: Argument list too long gäbe, Stack vergrößern
  • ulimit -s 65536
  • MD5-Summen berechnen:
  • cd cd; md5sum `find ! -name „md5sum.txt“ ! -path „./isolinux/*“ -follow -type f` > md5sum.txt; cd ..
  • Wer möchte kann mit Strg-A; d den screen detachen und dem Fortschritt bei md5sum begutachten
  • tail -f cd/md5sum.txt
  • ggf. zurück in den screen
  • screen -x debmax
  • Bootblock sichern
  • dd if=debian-11.0.0-amd64-BD-1.iso bs=1 count=432 of=isohdpfx.bin
  • Checksums für Jigdo/xorriso extrahieren
  • BASEDIR=/usr/share/debian-cd/ /usr/share/debian-cd/tools/grab_md5 cd amd64 bullseye stable checksum-check
  • Versteckte Info-Dateien anpassen
  • echo „Debian GNU/Linux 11.0.0 „Bullseye“ - Official amd64 BD Binary Max 20210814-10:04“ > cd/.disk/info
  • echo „xorriso -report_about UPDATE -follow on -as mkisofs -r -checksum_algorithm_iso sha256,sha512 -V 'Debian 11.0.0 amd64 max' -o debian-11.0.0-amd64-BD-max.iso -md5-list checksum-check -jigdo-force-md5 /pool/ -jigdo-min-file-size 1024 -jigdo-exclude 'README*' -jigdo-exclude /doc/ -jigdo-exclude /md5sum.txt -jigdo-exclude /.disk/ -jigdo-exclude /pics/ -jigdo-exclude 'Release*' -jigdo-exclude 'Packages*' -jigdo-exclude 'Sources*' -jigdo-jigdo debian-11.0.0-amd64-BD-max.jigdo -jigdo-template debian-11.0.0-amd64-BD-max.template -jigdo-map Debian=cd/debian/ -J -joliet-long -isohybrid-mbr isohdpfx.bin -b isolinux/isolinux.bin -c isolinux/boot.cat -boot-load-size 4 -boot-info-table -no-emul-boot -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat -isohybrid-apm-hfsplus cd“ > cd/.disk/mkisofs
  • MD5-Summen anpassen
  • cat cd/md5sum.txt | grep -v ./.disk/ > md5sum.tmp
  • cd cd; md5sum ./.disk/* » ../md5sum.tmp; cd ..; mv md5sum.tmp cd/md5sum.txt
  • Schließlich und endlich, ISO erstellen mit xorriso
    xorriso \
    -report_about UPDATE \
    -follow on \
    -as mkisofs \
    -r \
    -checksum_algorithm_iso sha256,sha512 \
    -V 'Debian 11.0.0 amd64 max' \
    -o debian-11.0.0-amd64-BD-max.iso \
    -md5-list checksum-check \
    -jigdo-force-md5 /pool/ \
    -jigdo-min-file-size 1024 \
    -jigdo-exclude 'README*' \
    -jigdo-exclude /doc/ \
    -jigdo-exclude /md5sum.txt \
    -jigdo-exclude /.disk/ \
    -jigdo-exclude /pics/ \
    -jigdo-exclude 'Release*' \
    -jigdo-exclude 'Packages*' \
    -jigdo-exclude 'Sources*' \
    -jigdo-jigdo debian-11.0.0-amd64-BD-max.jigdo \
    -jigdo-template debian-11.0.0-amd64-BD-max.template \
    -jigdo-map Debian=cd/debian/ \
    -J \
    -joliet-long \
    -isohybrid-mbr isohdpfx.bin \
    -b isolinux/isolinux.bin \
    -c isolinux/boot.cat \
    -boot-load-size 4 \
    -boot-info-table \
    -no-emul-boot \
    -eltorito-alt-boot \
    -e boot/grub/efi.img \
    -no-emul-boot \
    -isohybrid-gpt-basdat \
    -isohybrid-apm-hfsplus \
    cd
  • Wenn alles geklappt hat:
    xorriso : UPDATE :  99.96% done
    xorriso : UPDATE :  99.99% done
    xorriso : UPDATE : Thank you for being patient. Working since 4799 seconds.
    xorriso : UPDATE : Thank you for being patient. Working since 4800 seconds.
    xorriso : UPDATE : Thank you for being patient. Working since 4801 seconds.
    xorriso : UPDATE : Thank you for being patient. Working since 4802 seconds.
    ISO image produced: 43188789 sectors
    Written to medium : 43188789 sectors at LBA 0
    Writing to 'stdio:debian-11.0.0-amd64-BD-max.iso' completed successfully.
    
    
    real    82m1.203s
    user    78m23.269s
    sys     17m31.109s
  • ls -lh debian*max.*
    -rw-r--r--  1 user      user  83G Sep  3 21:55 debian-11.0.0-amd64-BD-max.iso
    -rw-r--r--  1 user      user 5.1M Sep  3 21:55 debian-11.0.0-amd64-BD-max.jigdo
    -rw-r--r--  1 user      user 161M Sep  3 21:55 debian-11.0.0-amd64-BD-max.template
  • file -k debian*max.iso
    debian-11.0.0-amd64-BD-max.iso: DOS/MBR boot sector; partition 2 : ID=0xef, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 548604, 5184 sectors ISO 9660 CD-ROM filesystem data (DOS/MBR boot sector) 'Debian 11.0.0 amd64 max' (bootable) DOS/MBR boot sector Apple Driver Map, blocksize 2048, blockcount 37008, devtype 0, devid 0, driver count 0, contains[@0x200]:, contains[@0x400]:, contains[@0x600]:, contains[@0x800]: Apple Partition Map, map block count 2, start block 1, block count 2, name Apple, type Apple_partition_map, valid, allocated, contains[@0xA00]:, contains[@0xC00]:, contains[@0xE00]:, contains[@0x1000]: Apple Partition Map, map block count 2, start block 137151, block count 1296, name EFI, type Apple_HFS, valid, allocated, readable, mount at startup FoxPro FPT, blocks size 37008, next free block index 1163003904 (Lepton 3.x), scale 0-0, spot sensor temperature 0.000000, unit celsius, color scheme 0, calibration: offset 0.000000, slope 0.000000 (Lepton 2.x), scale 0-0, spot sensor temperature 0.000000, unit celsius, color scheme 0, calibration: offset 0.000000, slope 0.000000\012- data
  • (hoffentlich) Fertig!
project/debianmax.txt · Zuletzt geändert: 2021-09-04 05:44 von neos