- Het voorbereiden van de omgeving
Stel enkele variabelen in
export WORK=~/work
export CD=~/cd
export FORMAT=squashfs
export FS_DIR=casper
De WORK-directory is waar onze tijdelijke bestanden en het koppelpunt zich zullen bevinden. De CD is de locatie van de CD-boom. FORMAT is het bestandssysteemtype. Wij gaan een gecomprimeerde squashfs gebruiken. FS_DIR is de locatie van de daadwerkelijke bestandssysteemimage binnen de cd-boom.
Maak de CD en de WORK-directorystructuur:
sudo mkdir -p ${CD}/{${FS_DIR},boot/grub} ${WORK}/rootfs
Installeer enkele pakketten op het systeem:
sudo apt-get update
sudo apt-get install grub2 xorriso squashfs-tools
Kopieer uw installatie naar het nieuwe bestandssysteem
sudo rsync -av --one-file-system --exclude=/proc/* --exclude=/dev/* \
--exclude=/sys/* --exclude=/tmp/* --exclude=/home/* --exclude=/lost+found \
--exclude=/var/tmp/* --exclude=/boot/grub/* --exclude=/root/* \
--exclude=/var/mail/* --exclude=/var/spool/* --exclude=/media/* \
--exclude=/etc/fstab --exclude=/etc/mtab --exclude=/etc/hosts \
--exclude=/etc/timezone --exclude=/etc/shadow* --exclude=/etc/gshadow* \
--exclude=/etc/X11/xorg.conf* --exclude=/etc/gdm/custom.conf \
--exclude=/etc/lightdm/lightdm.conf --exclude=${WORK}/rootfs / ${WORK}/rootfs
- Opmerking: rsync wordt gebruikt in plaats van cp om voordeel te halen uit de --one-file-system en --exclude opties.
- Als u een aparte opstartpartitie heeft, moet u deze kopiëren met behulp van de volgende opdracht:
sudo cp -av /boot/* ${WORK}/rootfs/boot
(Optioneel) Kopieer instellingen naar uw thuismap:
- Als u de instellingen van uw gebruikersaccount, die in uw thuismap zijn opgeslagen, wilt behouden, kunt u deze kopiëren naar ${WORK}/rootfs/etc/skel/. Maar eerst moeten we definiëren welke bestanden we willen kopiëren. Ik gebruik bijvoorbeeld cinnamon als mijn D|esktop beheerder, en het slaat alle instellingen op in een map met de naam .config in mijn thuismap, dus ik ga .config toevoegen aan de variabele $CONFIG:
(Optioneel)
CONFIG='.config .bashrc'
Kopieer nu de CONFIG-bestanden met behulp van de volgende opdracht (in een keer ingeven in de terminal): (optioneel)
cd ~ && for i in $CONFIG
do
sudo cp -rpv --parents $i ${WORK}/rootfs/etc/skel
done
Chroot in het nieuwe systeem en pas het systeem aan
- Chroot naar het gekopieerde systeem na het aankoppelen van proc en dev:
sudo mount --bind /dev/ ${WORK}/rootfs/dev
sudo mount -t proc proc ${WORK}/rootfs/proc
sudo mount -t sysfs sysfs ${WORK}/rootfs/sys
sudo mount -o bind /run ${WORK}/rootfs/run
sudo chroot ${WORK}/rootfs /bin/bash
N.B: Alle opdrachten die binnen een chroot worden uitgevoerd, worden gemarkeerd met (chroot).
- Nu u zich in de chroot-omgeving bevindt, typt u het volgende commando:
(chroot)
LANG=
- Installeer essentiele pakketten voor de live CD:
(chroot)
apt-get update
(chroot)
apt-get install casper
casper contains the live scripts.
3. (Optioneel) Als je wilt dat je live-cd een installatieprogramma heeft, installeer dan het Ubuntu-installatieprogramma:
(chroot)
apt-get install ubiquity ubiquity-frontend-gtk
Opmerking: mensen die kde gebruiken vervangen het vorige commando door:
(chroot)
apt-get install ubiquity ubiquity-frontend-kde
Eer voor deze tip gaat naar Fragadelic auteur van remastersys.
(Optionele stap)
Installeer alle pakketten die u op de cd wilt hebben. Sommige van de volgende pakketten zijn handig in noodsituaties:
apt-get install gparted testdisk wipe partimage xfsprogs reiserfsprogs jfsutils ntfs-3g dosfstools mtools
Update de initramfs:
Update eerst modules.dep:
(chroot)
depmod -a $(uname -r)
(chroot)
update-initramfs -u -k $(uname -r)
Zoals hierboven al vermeld, is initramfs verantwoordelijk voor een groot deel van de voorbereiding die nodig is tijdens het opstarten van de CD/DVD. De bijgewerkte initramfs bevatten nu de live scripts die met casper zijn geïnstalleerd.
Verwijder toegevoegde niet-systeemgebruikers
(chroot)
for i in `cat /etc/passwd | awk -F":" '{print $1}'`
do
uid=`cat /etc/passwd | grep "^${i}:" | awk -F":" '{print $3}'`
[ "$uid" -gt "998" -a "$uid" -ne "65534" ] && userdel --force ${i} 2> /dev/null
done
Niet-systeemgebruikers zijn door u aangemaakte gebruikers met een gebruikers-ID hoger dan 999.
N.B: Als er een gebruiker met uid 999 aanwezig is, verwijderen we deze ook omdat die uid behouden blijft voor de live cd-gebruiker.Maak het systeem schoon. Maak eerst de apt-cache schoon(chroot)
apt-get clean
Ruim alle extra logbestanden op
(chroot)
find /var/log -regex '.*?[0-9].*?' -exec rm -v {} \;
De resterende logbestanden worden op nul gezet, anders gaat het systeem klagen als ze worden verwijderd.
(chroot)
find /var/log -type f | while read file
do
cat /dev/null | tee $file
done
(chroot)
rm /etc/resolv.conf /etc/hostname
Verlaat chroot
(chroot)
exit
Bereid de CD-directoryboom voor
Kopieer de kernel, de bijgewerkte initrd en memtest voorbereid in de chroot:
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 cp -vp ${WORK}/rootfs/boot/memtest86+.bin ${CD}/boot
(optioneel) Genereer manifest:
(optineel)
sudo chroot ${WORK}/rootfs dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee ${CD}/${FS_DIR}/filesystem.manifest
(optineel)
sudo cp -v ${CD}/${FS_DIR}/filesystem.manifest{,-desktop}
(optineel)
REMOVE='ubiquity casper user-setup os-prober libdebian-installer4'
(optineel)
for i in $REMOVE
do
sudo sed -i "/${i}/d" ${CD}/${FS_DIR}/filesystem.manifest-desktop
done
(optineel) Deze twee bestanden worden door het ubiquity-installatieprogramma gebruikt bij installatie op de harde schijf. Deze twee bestanden zijn slechts lijsten met pakketten. Ubiquity vergelijkt deze twee bestanden en verwijdert pakketten die uniek zijn voor filesystem.manifest. Op deze manier worden bij installatie op de harde schijf pakketten zoals casper, die alleen nuttig zijn op een live-cd/dvd, verwijderd. Deze pakketten die tijdens de installatie worden verwijderd, worden gedefinieerd in de variabele $REMOVE
- Ontkoppelen, gekoppelde mappen:
sudo umount ${WORK}/rootfs/proc
sudo umount ${WORK}/rootfs/sys
sudo umount ${WORK}/rootfs/dev
Converteer de directorystructuur naar een squashfs:
sudo mksquashfs ${WORK}/rootfs ${CD}/${FS_DIR}/filesystem.${FORMAT} -noappend
Note: Make sure the resulting file size can fit into your live media.
- Maak filesystem.size
echo -n $(sudo du -s --block-size=1 ${WORK}/rootfs | tail -1 | awk '{print $1}') | sudo tee ${CD}/${FS_DIR}/filesystem.size
- bereken MD5
find ${CD} -type f -print0 | xargs -0 md5sum | sed "s@${CD}@.@" | grep -v md5sum.txt | sudo tee -a ${CD}/md5sum.txt
- Maak Grub the bootloader van de CD
- Maak the grub.cfg
sudo xed ${CD}/boot/grub/grub.cfg
- Kopieer de volgende tekst erin en sla deze op.
set default="0"
set timeout=30
set theme="/cdrom/boot/grub/theme/sinclair/theme.txt"
menuentry "Linux GUI" {
linux /casper/vmlinuz boot=casper quiet splash
initrd /casper/initrd.img
}
menuentry "Linux in safe mode" {
linux /casper/vmlinuz boot=casper xforcevesa quiet splash
initrd /casper/initrd.img
}
menuentry "Linux CLI" {
linux /casper/vmlinuz boot=casper textonly quiet splash
initrd /casper/initrd.img
}
menuentry "Linux GUI persistente mode" {
linux /casper/vmlinuz boot=casper persistent quiet splash
initrd /casper/initrd.img
}
menuentry "Linux GUI vanuit RAM" {
linux /casper/vmlinuz boot=casper toram quiet splash
initrd /casper/initrd.img
}
menuentry "Boot from the first hard disk" {
set root=(hd0)
chainloader +1
}
Maak de CD/DVD
- Make the ISO file met iso level 3 als deze groter is dan 4 Gb
sudo grub-mkrescue -o ~/live-cd.iso ${CD} -iso-level 3