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:code:
1
| echo $HOME |
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:
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:1
2
3
| rsync squashfs-tools upower |
code:
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)1
2
3
4
| rsync squahsfs-tools upower gnome |
Wens je je distro te kunnen installeren, voeg dan ook volgende pakketten toe:
code:
Als je deze toevoegt, is er een extra stap noodzakelijk (zie verder) anders crasht de installer.1
2
| calamares calamares-settings-debian |
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:
code:
(zorgt ervoor dat je in je home-map staat)1
| cd |
code:
Maak de bestanden livecd.sh en livecdchroot.sh uitvoerbaar:1
| sudo chown $USER:$USER livecd.sh livecdchroot.sh |
code:
Als je een andere localisatie wenst dan Nederlands, vervang dan in het bestand 'grub.cfg' tweemaal de tekst1
| sudo chmod 700 livecd.sh livecdchroot.sh |
code:
door de gewenste localisatie, bijvoorbeeld1
| locales=nl_NL.UTF-8 |
code:
1
| locales=en_US.UTF-8 |
Stap 3: Het maken van de distro zelf
Open een terminal en voer het volgende commando in:code:
Dit start het bouwen van de distro.1
| ./livecd.sh |
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:
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:1
| Druk op een toets om door te gaan |
code:
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:1
| sudo nano $HOME/work/rootfs/etc/calamares/modules/packages.conf |
code:
Dat bestand sla je op (CTRL +X, J en ENTER)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' |
Dan typ je
code:
waardoor het terminalvenster wordt afgesloten.1
| exit |
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).
Extra: voorbeeld
Een voorbeeld van hoe packages.txt eruit kan zien als je een minimale distro wenst:code:
Enige uitleg over het waarom van deze packages: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
| bc calamares calamares-settings-debian console-setup dmz-cursor-theme eject firefox-esr firmware-linux gvfs jgmenu jwm libfm-modules lxappearance lxdm lxpolkit lxterminal net-tools network-manager-gnome numlockx papirus-icon-theme pcmanfm picom pulseaudio rsync squashfs-tools sysstat upower volumeicon-alsa wpasupplicant wireless-tools wmctrl xserver-xorg-input-all xserver-xorg-video-all xterm yad |
bc - gebruikt voor het weergeven van een system-monitor in de taakbalk.
calamares - de installer.
console-setup - zorgt ervoor dat de toetsenbordindeling in de installer wordt weergegeven.
dmz-cursor-theme - een cursorthema.
eject - voor het uitwerpen van cd-roms of usb-sticks.
firefox-esr - een webbrowser.
firmware-linux - drivers nodig voor allerlei hardware.
gvfs - noodzakelijk.
jgmenu - ter vervanging van het standaard jwm-menu. voordeel van jgmenu is dat het autmatisch update als er software wordt bijgeïnstalleerd.
jwm - erg lichte windowmanager, lichter dan LXDE en vele malen lichter dan Gnome of KDE.
libfm-modules - zorgt voor het weergeven van de toepassingen in de file-manager.
lxappearance - stelt je o.a. in staat om het icoonthema en het cursurthema aan te passen.
lxdm - login manager van LXDE.
lxpolkit - lichte variant van policykit.
lxterminal - een terminalvenster van LXDE.
net-tools - zorgt o.a. voor ifconfig.
network-manager-gnome - beheert de beschikbare netwerkverbindingen.
numlockx - start numlock automatisch na het inloggen.
papirus-icon-theme - een icoonthema.
pcmanfm - een lichtgewicht file manager, gekend van LXDE.
picom - zorgt voor transparantie, indien geactiveerd.
pulseaudio - zorgt voor het geluid.
rsync - nodig voor de installer.
squashfs-tools - eveneens nodig voor de installer.
sysstat - ook gebruikt voor de system-monitor in de taakbalk.
upower - noodzakelijk voor laptops.
volumeicon-alsa - zorgt ervoor dat het geluidsniveau in te stellen is op de taakbalk.
wpasupplicant en wireless-tools - nodig voor wifi.
wmctrl - nodig voor keuzemenu bij het afsluiten.
xserver-xorg-video-all en xserver-xorg-input-all - nodig voor de Xserver.
xterm - nodig voor de system-monitor in de taakbalk.
yad - eveneens nodig voor keuzemenu bij het afsluiten.
Dit geeft na enige configuratie het volgende systeem:
:strip_exif()/f/image/2nAEyJaQ4i5xZPKeG4tOnctG.png?f=user_large)
En zo ziet de system-monitor in de taakbalk eruit:
:strip_exif()/f/image/TiIS6RiXyeNPp6SepUa7EzNN.png?f=user_large)
Zoals je kunt zien gebruikt dit systeem weinig RAM. Dat heeft als voordeel dat je met 1 GB RAM en 2 GB swapruimte een behoorlijk vlot systeem hebt. Batterijniveau wordt niet weergegeven omdat ik geen batterij heb.
[ Voor 61% gewijzigd door LievenD op 16-08-2026 22:14 . Reden: Toevoegen voorbeeld ]