Je eigen Linux-distributie
Was je ooit van plan om zelf een Linux-distributie te maken?
Dan ben je hier aan het juiste adres, want dit topic legt uit hoe je zelf een Debian-distributie maakt.
Dit topic zal de eerstkomende dagen waarschijnlijk nog onvolledig zijn, maar ik vul aan naarmate ik tijd heb.
Ik ga ervan uit dat je Debian op je systeem hebt staan, maar normaal gezien zouden deze instructies ook moeten werken op een afgeleide van Debian, bijvoorbeeld Ubuntu, Linux Mint of Zorin OS.
Stap 1: Vereiste bestanden
Je hebt volgende vijf bestanden nodig, plaats die in je home-map. Dat is de map die verschijnt als je in een terminalvenster het volgende intikt:
Bestand 1: livecd.sh
Het eerste bestand geef je de naam livecd.sh. Daar plaats je volgende tekst in:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
| #!/bin/bash
export WORK=~/work
export CD=~/cdtree
export FORMAT=squashfs
export FS_DIR=live
if [ -d work ]
then
sudo rm -r work cdtree
fi
mkdir -p ${CD}/{${FS_DIR},boot/grub} ${WORK}/rootfs
sudo apt update
sudo apt install -y grub2 xorriso squashfs-tools mtools
sudo apt install -y debootstrap
sudo debootstrap stable ${WORK}/rootfs
sudo cp sources.list ${WORK}/rootfs/etc/apt
sudo cp livecdchroot.sh ${WORK}/rootfs
sudo cp packages.txt ${WORK}/rootfs
for i in /etc/resolv.conf /etc/hosts /etc/hostname; do sudo cp -pv $i ${WORK}/rootfs/etc/; done
CONFIG='.bashrc .config'
cd ~ && for i in $CONFIG
do
sudo cp -rpv --parents $i ${WORK}/rootfs/etc/skel
done
cd
sudo mount --bind /dev/ ${WORK}/rootfs/dev
sudo mount -t devpts devpts ${WORK}/rootfs/dev/pts
sudo mount -t proc proc ${WORK}/rootfs/proc
sudo mount -t sysfs sysfs ${WORK}/rootfs/sys
sudo chroot ${WORK}/rootfs /bin/bash -c "./livecdchroot.sh"
sudo rm ${WORK}/rootfs/packages.txt
sudo rm ${WORK}/rootfs/livecdchroot.sh
export kversion=`cd ${WORK}/rootfs/boot && ls -1 vmlinuz-* | tail -1 | sed 's@vmlinuz-@@'`
sudo cp -vp ${WORK}/rootfs/boot/vmlinuz-${kversion} ${CD}/${FS_DIR}/vmlinuz
sudo cp -vp ${WORK}/rootfs/boot/initrd.img-${kversion} ${CD}/${FS_DIR}/initrd.img
sudo umount ${WORK}/rootfs/proc
sudo umount ${WORK}/rootfs/sys
sudo umount ${WORK}/rootfs/dev/pts
sudo umount ${WORK}/rootfs/dev
sudo mksquashfs ${WORK}/rootfs ${CD}/${FS_DIR}/filesystem.${FORMAT} -noappend -comp xz
echo -n $(sudo du -s --block-size=1 ${WORK}/rootfs | tail -1 | awk '{print $1}') | sudo tee ${CD}/${FS_DIR}/filesystem.size
find ${CD} -type f -print0 | xargs -0 md5sum | sed "s@${CD}@.@" | grep -v md5sum.txt | sudo tee -a ${CD}/md5sum.txt
sudo cp grub.cfg ${CD}/boot/grub/grub.cfg
sudo grub-mkrescue -iso-level 3 -o ~/debian.iso ${CD} |
Bestand 2: livecdchroot.sh
Het tweede bestand geef je de naam livecdchroot.sh. Je plaatst er volgende tekst in:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| #!/bin/bash
LANG=
apt update
apt install -y linux-image-amd64 live-boot live-config user-setup systemd-sysv
cat packages.txt | xargs apt install -y
apt autoremove --purge -y
export kversion=`cd /boot && ls -1 vmlinuz-* | tail -1 | sed 's@vmlinuz-@@'`
depmod -a $kversion
update-initramfs -u -k $kversion
echo
echo "Druk op een toets om door te gaan"
read -n 1
apt clean
rm /etc/resolv.conf
rm /etc/hostname |
Bestand 3: sources.list
Het derde bestand geef je de naam sources.list met daarin volgende tekst:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| # See https://wiki.debian.org/SourcesList for more information.
deb http://deb.debian.org/debian stable main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian stable main contrib non-free non-free-firmware
deb http://deb.debian.org/debian stable-updates main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian stable-updates main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security/ stable-security main contrib non-free non-free-firmware
deb-src http://security.debian.org/debian-security/ stable-security main contrib non-free non-free-firmware
# Backports allow you to install newer versions of software made available for this release
deb http://deb.debian.org/debian stable-backports main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian stable-backports main contrib non-free non-free-firmware |
Bestand 4: grub.cfg
Het vierde bestand noem je grub.cfg. Je plaatst er volgende tekst in:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| set default="0"
set timeout=30
menuentry "Probeer of installeer Debian" {
linux /live/vmlinuz boot=live locales=nl_NL.UTF-8 quiet splash
initrd /live/initrd.img
}
menuentry "Debian (met persistence)" {
linux /live/vmlinuz boot=live locales=nl_NL.UTF-8 persistence quiet splash
initrd /live/initrd.img
} |
Bestand 5: packages.txt
Dit laatste bestand geef je de naam packages.txt.
Hierin komen de .deb-pakketten die je op je distro wenst, 1 pakket per lijn. Welke pakketten dat zijn, is aan jou. Ik raad aan om minstens de volgende pakketten op te nemen:
code:
1
2
3
| rsync
squashfs-tools
upower |
Zonder deze gaat je distro waarschijnlijk niet naar behoren werken. Uiteraad ga je meer pakketten nodig hebben. Als je een grafische omgeving wenst, ga je ook een desktopomgeving (gnome, kde, cinnamon, xfce4, ...) of window-manager toevoegen, X11 of wayland, een icon-theme, een browser, en ga zo maar door. Welke pakketten in jouw geval precies noodzakelijk zijn, is een beetje gissen en missen. Zo kwam ik erachter dat ik op mijn systeem het pakket firmware-amd-graphics moest toevoegen, omdat de schermresolutie op mijn AMD-systeem anders te laag was. Als je erg twijfelt wat er nodig is, probeer dan eens het volgende:
code:
1
2
3
4
| rsync
squahsfs-tools
upower
gnome |
Dat laatste pakket installeert de gnome-desktopomgeving, met een heleboel reeds meegeleverde pakketten, waardoor je met deze 4 reeds een werkende live-omgeving zou moeten krijgen. Het kan zelfs zijn dat gnome alleen ook voldoende is, op voorwaarde dat de andere 3 pakketten in de reeds meegeleverde pakketten zitten. (nog te testen)
Wens je je distro te kunnen installeren, voeg dan ook volgende pakketten toe:
code:
1
2
| calamares
calamares-settings-debian |
Als je deze toevoegt, is er een extra stap noodzakelijk (zie verder) anders crasht de installer.
Als je een probleem tegenkomt, kan om het even wat zijn, geef dan zeker mee welke pakketten je hebt staan in packages.txt, zo kan er nagegaan worden wat je eventueel mist.
Stap 2: Voorbereiding
Check vooraleer je begint of je thuismap geen mappen bevat met de naam 'work' of 'cdtree'.
Die zullen immers verwijderd worden bij het bouwen van de distro. Heb je deze mappen reeds staan omdat je al een distro op basis van deze instructies bouwde, dan hoef je die check uiteraard niet meer te doen.
Open een terminalvenster en zorg er voor dat je de eigenaar bent van livecd.sh en livecdchroot.sh:
(zorgt ervoor dat je in je home-map staat)
code:
1
| sudo chown $USER:$USER livecd.sh livecdchroot.sh |
Maak de bestanden livecd.sh en livecdchroot.sh uitvoerbaar:
code:
1
| sudo chmod 700 livecd.sh livecdchroot.sh |
Als je een andere localisatie wenst dan Nederlands, vervang dan in het bestand 'grub.cfg' tweemaal de tekst
door de gewenste localisatie, bijvoorbeeld
Stap 3: Het maken van de distro zelf
Open een terminal en voer het volgende commando in:
Dit start het bouwen van de distro.
Er zal heel wat tekst over je terminalvenster scrollen, dit is normaal. Als je een waarschuwing krijgt, maar het bouwen gaat verder is er niets aan de hand. Na enige tijd zal je toetsenbordindeling gevraagd worden, kies de gewenste indeling.
Nog even later zal het bouwen van de distro pauzeren. Er komt volgende tekst:
code:
1
| Druk op een toets om door te gaan |
Normaal mag je onmiddellijk door gaan, maar niet als je de installer in je lijst met packages hebt staan. In dat geval open je een ander terminalvenster (het reeds openstaande venster NIET afsluiten) en typ je het volgende:
code:
1
| sudo nano $HOME/work/rootfs/etc/calamares/modules/packages.conf |
In dat bestand verwijder je de 4 regels met het woord 'config' in en voeg je onderaan één regel toe, zodat er het volgende staat:
code:
1
2
3
4
5
6
7
8
9
10
11
| backend: apt
operations:
- remove:
- 'live-boot'
- 'live-boot-doc'
- 'live-tools'
- 'live-task-localisation'
- 'live-task-recommended'
- 'calamares-settings-debian'
- 'calamares' |
Dat bestand sla je op (CTRL +X, J en ENTER)
Dan typ je
waardoor het terminalvenster wordt afgesloten.
Je keert terug naar het andere terminalvenster (waarin je aan het bouwen bent), en drukt daarin op een toets.
Het bouwen gaat verder, en afhankelijk van de snelheid van je computer, is je distro over enkele ogenblikken klaar (als de terminal output stopt en de prompt terug verschijnt).
Ik voeg straks nog meer info toe, o.a. over hoe je de distro op je USB-stick zet.
[
Voor 37% gewijzigd door
LievenD op 21-07-2026 14:55
]