- 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}/rootfsInstalleer enkele pakketten op het systeem:
sudo apt-get update
sudo apt-get install grub2 xorriso squashfs-toolsKopieer 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:
sudo apt-get install gparted testdisk wipe partimage xfsprogs reiserfsprogs jfsutils ntfs-3g dosfstools mtoolsUpdate 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.(chroot)
apt-get clean
(chroot)
find /var/log -regex '.*?[0-9].*?' -exec rm -v {} \;
(chroot)
find /var/log -type f | while read file do cat /dev/null | tee $file done
(chroot)
rm /etc/resolv.conf /etc/hostname
(chroot)
exit
Bereid de CD-directoryboom voor
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:
Opmerking: deze stap is alleen nodig als u het alomtegenwoordige Ubuntu-installatieprogramma hebt geïnstalleerd. Met deze stap worden twee bestanden gegenereerd (filesystem.manifest en filesystem.manifest-desktop).
(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
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="/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
Geen opmerkingen:
Een reactie posten
Opmerking: Alleen leden van deze blog kunnen een reactie posten.