Difference between revisions of "Debootstrap to LiveCD"
Rickbronson (Talk | contribs) |
Rickbronson (Talk | contribs) |
||
Line 1: | Line 1: | ||
=PREAMBLE= | =PREAMBLE= | ||
− | *This script | + | *This script can be run using any debian based distro, including the [http://www.knopper.net/knoppix-mirrors/index-en.html Knoppix 5.1] boot cd. |
− | *This has been updated by: [[User: | + | *This has been updated by: [[User:Rickbronson|Rickbronson]] 20:43, 24 Apr 2007 (GMT) |
*Knoppix Sources http://debian-knoppix.alioth.debian.org/ | *Knoppix Sources http://debian-knoppix.alioth.debian.org/ | ||
*Please note that this howto is not without a few flaws, please revise and suggest as necessary. | *Please note that this howto is not without a few flaws, please revise and suggest as necessary. | ||
Line 19: | Line 19: | ||
=GETTING STARTED= | =GETTING STARTED= | ||
− | All dotted boxes below are to be put into a script, or into a shell directly. | + | NOTE: You will need about 9 Gigabytes of free disk space. All dotted boxes below are to be put into a script, or into a shell directly. |
==Setup The Environment== | ==Setup The Environment== | ||
=====Hash Bang===== | =====Hash Bang===== | ||
Line 25: | Line 25: | ||
#!/bin/bash | #!/bin/bash | ||
− | You will need | + | You will need KNOPPIX_V5.1.0CD-2006-12-30-EN.iso (or whatever version one you want) |
− | + | ||
− | + | ||
=====Script Variables===== | =====Script Variables===== | ||
*More info see: [http://tldp.org/LDP/abs/html/variables.html BASH Variables] | *More info see: [http://tldp.org/LDP/abs/html/variables.html BASH Variables] | ||
+ | * cd somewhere appropriate and become superuser | ||
+ | cd $HOME | ||
+ | export KNXISO=KNOPPIX_V5.1.0CD-2006-12-30-EN.iso | ||
+ | wget http://www.kernel.org/pub/dist/knoppix/${KNXISO} | ||
+ | ln -s `pwd`/${KNXISO} /tmp/${KNXISO} # make link for later | ||
+ | su # become superuser | ||
+ | ! type extract_compressed_fs && [[apt-get]] cloop-utils # You will need cloop | ||
+ | ! type qemu && [[apt-get]] qemu # Optional, you might need qemu | ||
KNXROOT=[[`pwd`]]/knxstrap | KNXROOT=[[`pwd`]]/knxstrap | ||
OLDSRCDIR=${KNXROOT}/oldsrc/KNOPPIX | OLDSRCDIR=${KNXROOT}/oldsrc/KNOPPIX | ||
Line 38: | Line 44: | ||
DEBIAN_RELEASE=sid # (http://www.debian.org/releases/unstable/) | DEBIAN_RELEASE=sid # (http://www.debian.org/releases/unstable/) | ||
DEBIAN_MIRROR=http://http.us.debian.org/debian | DEBIAN_MIRROR=http://http.us.debian.org/debian | ||
− | DEBIAN_MIRROR=http://debian.osuosl.org/debian | + | # DEBIAN_MIRROR=http://debian.osuosl.org/debian # or use this mirror |
− | =====Make directories, mount CD image, copy files over to | + | =====Make directories, mount CD image, copy files over to the Master dir===== |
− | mkdir -p ${MASTERDIR} ${NEWSRCDIR}/usr/src ${OLDSRCDIR}/knxfiles ${KNXROOT}/mnt | + | mkdir -p ${MASTERDIR} ${NEWSRCDIR}/usr/src \ |
− | mount -t iso9660 -o ro,loop=/dev/loop/0 / | + | ${OLDSRCDIR}/knxfiles ${KNXROOT}/mnt |
− | cd ${KNXROOT}/mnt && find . -size -10000k -type f -exec cp -p --parents '{}' ${MASTERDIR} \; | + | mount -t iso9660 -o ro,loop=/dev/loop/0 /tmp/${KNXISO} ${KNXROOT}/mnt |
+ | cd ${KNXROOT}/mnt && find . -size -10000k -type f -exec \ | ||
+ | cp -p --parents '{}' ${MASTERDIR} \; | ||
=====Extract compressed Knoppix filesystem===== | =====Extract compressed Knoppix filesystem===== | ||
− | extract_compressed_fs ${KNXROOT}/mnt/KNOPPIX/KNOPPIX > ${KNXROOT}/KNOPPIX.src.iso | + | extract_compressed_fs ${KNXROOT}/mnt/KNOPPIX/KNOPPIX > \ |
+ | ${KNXROOT}/KNOPPIX.src.iso | ||
cd ${KNXROOT}; umount ${KNXROOT}/mnt | cd ${KNXROOT}; umount ${KNXROOT}/mnt | ||
− | mount -t iso9660 -o ro,loop=/dev/loop/0 ${KNXROOT}/KNOPPIX.src.iso ${KNXROOT}/mnt | + | mount -t iso9660 -o ro,loop=/dev/loop/0 \ |
+ | ${KNXROOT}/KNOPPIX.src.iso ${KNXROOT}/mnt | ||
− | =====Copy files over to | + | =====Copy files over to old source dir===== |
cp -Rp ${KNXROOT}/mnt/* ${OLDSRCDIR} | cp -Rp ${KNXROOT}/mnt/* ${OLDSRCDIR} | ||
umount ${KNXROOT}/mnt | umount ${KNXROOT}/mnt | ||
rmdir ${KNXROOT}/mnt | rmdir ${KNXROOT}/mnt | ||
− | =====Go into | + | =====Go into old source dir and reconstruct Knoppix specific packages===== |
chroot ${OLDSRCDIR} | chroot ${OLDSRCDIR} | ||
dpkg --get-selections > dpkg.selections.txt | dpkg --get-selections > dpkg.selections.txt | ||
Line 61: | Line 71: | ||
KNOPPIX_PACKAGES=`dpkg -l "*knoppix*" | grep ^ii |awk '{print $2} '` | KNOPPIX_PACKAGES=`dpkg -l "*knoppix*" | grep ^ii |awk '{print $2} '` | ||
KNOPPIX_PACKAGES+=`dpkg -l "*2\.6*" | grep "^ii" |awk '{print $2} '` | KNOPPIX_PACKAGES+=`dpkg -l "*2\.6*" | grep "^ii" |awk '{print $2} '` | ||
− | # The following list is based on knoppix 5.1, you may have to change it for other versions | + | # The following list is based on knoppix 5.1, you may have to change |
+ | # it for other versions | ||
KNOPPIX_PACKAGES+="linux-kernel-headers \ | KNOPPIX_PACKAGES+="linux-kernel-headers \ | ||
linux-sound-base \ | linux-sound-base \ | ||
Line 68: | Line 79: | ||
ndiswrapper-utils" | ndiswrapper-utils" | ||
− | + | Make packages from original Knoppix version. You will get lots of errors that it can't find necessary files (mostly in /usr/share...) on this next step; you can safely ignore them. | |
cd knxfiles | cd knxfiles | ||
for PACKAGE in ${KNOPPIX_PACKAGES}; | for PACKAGE in ${KNOPPIX_PACKAGES}; | ||
Line 76: | Line 87: | ||
exit | exit | ||
− | Get | + | Get bootstrap files, copy selections and /usr/src over to new source dir |
debootstrap --arch ${ARCH} ${DEBIAN_RELEASE} ${NEWSRCDIR} ${DEBIAN_MIRROR} | debootstrap --arch ${ARCH} ${DEBIAN_RELEASE} ${NEWSRCDIR} ${DEBIAN_MIRROR} | ||
cp -prd ${OLDSRCDIR}/knxfiles ${OLDSRCDIR}/dpkg.selections.txt ${NEWSRCDIR} | cp -prd ${OLDSRCDIR}/knxfiles ${OLDSRCDIR}/dpkg.selections.txt ${NEWSRCDIR} | ||
cp -Rp ${OLDSRCDIR}/usr/src/* ${NEWSRCDIR}/usr/src | cp -Rp ${OLDSRCDIR}/usr/src/* ${NEWSRCDIR}/usr/src | ||
− | + | chroot to new source dir | |
chroot ${NEWSRCDIR} /usr/bin/env -i HOME=/root TERM=$TERM \ | chroot ${NEWSRCDIR} /usr/bin/env -i HOME=/root TERM=$TERM \ | ||
PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login | PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login | ||
− | Install | + | Install dependencies required for Knoppix, answer "y" to all queries |
− | apt-get update | + | [[apt-get]] update |
− | apt-get install \ | + | [[apt-get]] install \ |
gawk \ | gawk \ | ||
perl \ | perl \ | ||
Line 114: | Line 125: | ||
po-debconf \ | po-debconf \ | ||
modutils | modutils | ||
− | |||
useradd -m knoppix | useradd -m knoppix | ||
− | echo 'deb-src http://debian-knoppix.alioth.debian.org ./' >> /etc/apt/sources.list | + | echo 'deb-src http://debian-knoppix.alioth.debian.org ./' \ |
− | echo 'deb http://debian-knoppix.alioth.debian.org ./' >> /etc/apt/sources.list | + | >> /etc/apt/sources.list |
+ | echo 'deb http://debian-knoppix.alioth.debian.org ./' \ | ||
+ | >> /etc/apt/sources.list | ||
Update and install knoppix specific deb's, you will get some errors in the dpkg step, ignore them | Update and install knoppix specific deb's, you will get some errors in the dpkg step, ignore them | ||
− | apt-get update | + | [[apt-get]] [[apt-get#update|update]] |
− | dpkg -i /knxfiles/* # Say "NO" to "stop install since..." | + | [[dpkg]] -i /knxfiles/* # Say "NO" to "stop install since..." |
rm -rf /knxfiles | rm -rf /knxfiles | ||
− | + | NOTE: The following will install EVERYTHING that was in the original CD! At this point you are going to start seeing errors. Mostly because the configure scripts are trying to do things to your run-time system and they are failing since you are in a chroot. If the errors are from dmraid samba, telnetd-ssl, etc then you can safely ignore them. | |
− | apt-get -f install | + | [[apt-get]] -f install |
− | for pkg in `grep "\binstall$" dpkg.selections.txt | awk '{print $1} '`; do apt-get -y --force-yes install $pkg; done | + | for pkg in `grep "\binstall$" dpkg.selections.txt | awk '{print $1} '`; \ |
+ | do apt-get -y --force-yes install $pkg; done | ||
dselect update | dselect update | ||
− | apt-get dselect-upgrade | + | [[apt-get]] dselect-upgrade |
− | + | Install extra stuff if you want (optional). | |
− | + | ||
− | + | [[apt-get]] install whatever | |
− | + | ||
− | + | ||
+ | Now it's time for a sanity check, if you do: | ||
+ | [[dpkg]] --status xserver-xorg-video-nv | ||
+ | |||
+ | and it tells you it's not installed then something is wrong and you need to force dpkg to install this (and many more probably missing) | ||
+ | |||
Clean up if you want to get rid of some space so it fits on a CD | Clean up if you want to get rid of some space so it fits on a CD | ||
− | apt-get remove kde-i18n* # this is optional | + | chmod 755 /etc/X11/xinit/xinitrc # fix mode on xinitrc |
− | deborphan | xargs apt-get -y remove # do this until nothing left to orphan | + | [[apt-get]] remove kde-i18n* # this is optional |
− | COLUMNS=200 dpkg -l |grep ^rc |awk '{print $2} ' | xargs dpkg -P | + | deborphan | xargs [[apt-get]] -y remove # do this until nothing left to orphan |
− | apt-get clean | + | COLUMNS=200 [[dpkg]] -l |grep ^rc |awk '{print $2} ' | xargs [[dpkg]] -P |
+ | [[apt-get]] [[apt-get#clean|clean]] | ||
# this is optional, if you need space: | # this is optional, if you need space: | ||
cd /var/lib/apt/lists; rm -f *Packages *Release *Release.gpg | cd /var/lib/apt/lists; rm -f *Packages *Release *Release.gpg | ||
− | rm -rf /var/lib/dpkg/*old /var/cache/debconf/*old /var/cache/apt/*bin /usr/share/doc/* | + | rm -rf /var/lib/dpkg/*old /var/cache/debconf/*old \ |
+ | /var/cache/apt/*bin /usr/share/doc/* | ||
exit | exit | ||
− | == | + | ==Finalize== |
Prep startup rc startup scripts, [http://man.linuxquestions.org/index.php?query=inittab&type=2§ion=5 inittab] | Prep startup rc startup scripts, [http://man.linuxquestions.org/index.php?query=inittab&type=2§ion=5 inittab] | ||
rm -rf ${NEWSRCDIR}/etc/rc* ${NEWSRCDIR}/etc/inittab ${NEWSRCDIR}/etc/passwd | rm -rf ${NEWSRCDIR}/etc/rc* ${NEWSRCDIR}/etc/inittab ${NEWSRCDIR}/etc/passwd | ||
− | cp -ax ${OLDSRCDIR}/etc/inittab ${OLDSRCDIR}/etc/passwd ${OLDSRCDIR}/etc/rc* ${NEWSRCDIR}/etc | + | cp -ax ${OLDSRCDIR}/etc/inittab ${OLDSRCDIR}/etc/passwd \ |
+ | ${OLDSRCDIR}/etc/rc* ${NEWSRCDIR}/etc | ||
We're basically done but if you want to make any changes with how Knoppix starts or what comes up when it starts, this is the place to do it. You could just copy stuff to /etc/skel so that you have it on your new cd under /home/knoppix | We're basically done but if you want to make any changes with how Knoppix starts or what comes up when it starts, this is the place to do it. You could just copy stuff to /etc/skel so that you have it on your new cd under /home/knoppix | ||
Line 158: | Line 176: | ||
*Make the compressed KNOPPIX CLOOP file | *Make the compressed KNOPPIX CLOOP file | ||
− | mkisofs -R -U -V "Knoppix" -publisher "yourname" -hide-rr-moved \ | + | [[mkisofs]] -R -U -V "Knoppix" -publisher "yourname" -hide-rr-moved \ |
− | -cache-inodes -no-bak -pad ${NEWSRCDIR} | nice -5 \ | + | -cache-inodes -no-bak -pad ${NEWSRCDIR} | nice -5 \ |
− | /usr/bin/create_compressed_fs - 65536 > ${MASTERDIR}/KNOPPIX/KNOPPIX | + | /usr/bin/create_compressed_fs - 65536 > ${MASTERDIR}/KNOPPIX/KNOPPIX |
Create the knoppix.iso file | Create the knoppix.iso file |
Revision as of 18:53, 24 April 2007
Contents
PREAMBLE
- This script can be run using any debian based distro, including the Knoppix 5.1 boot cd.
- This has been updated by: Rickbronson 20:43, 24 Apr 2007 (GMT)
- Knoppix Sources http://debian-knoppix.alioth.debian.org/
- Please note that this howto is not without a few flaws, please revise and suggest as necessary.
CONVENTIONS USED
The following conventions are used, within dotted box:
Commands & paramaters Text within this dotted box can be put directly into a script
Some commands are linked, if you require further explanation of the command or parameter click the link. Example shown below:
apt-get
GETTING STARTED
NOTE: You will need about 9 Gigabytes of free disk space. All dotted boxes below are to be put into a script, or into a shell directly.
Setup The Environment
Hash Bang
- As required at the beginning of a script (UNIX), a Hash Bang
#!/bin/bash
You will need KNOPPIX_V5.1.0CD-2006-12-30-EN.iso (or whatever version one you want)
Script Variables
- More info see: BASH Variables
- cd somewhere appropriate and become superuser
cd $HOME export KNXISO=KNOPPIX_V5.1.0CD-2006-12-30-EN.iso wget http://www.kernel.org/pub/dist/knoppix/${KNXISO} ln -s `pwd`/${KNXISO} /tmp/${KNXISO} # make link for later su # become superuser ! type extract_compressed_fs && apt-get cloop-utils # You will need cloop ! type qemu && apt-get qemu # Optional, you might need qemu KNXROOT=`pwd`/knxstrap OLDSRCDIR=${KNXROOT}/oldsrc/KNOPPIX NEWSRCDIR=${KNXROOT}/newsrc/KNOPPIX MASTERDIR=${KNXROOT}/master ARCH=i386 DEBIAN_RELEASE=sid # (http://www.debian.org/releases/unstable/) DEBIAN_MIRROR=http://http.us.debian.org/debian # DEBIAN_MIRROR=http://debian.osuosl.org/debian # or use this mirror
Make directories, mount CD image, copy files over to the Master dir
mkdir -p ${MASTERDIR} ${NEWSRCDIR}/usr/src \ ${OLDSRCDIR}/knxfiles ${KNXROOT}/mnt mount -t iso9660 -o ro,loop=/dev/loop/0 /tmp/${KNXISO} ${KNXROOT}/mnt cd ${KNXROOT}/mnt && find . -size -10000k -type f -exec \ cp -p --parents '{}' ${MASTERDIR} \;
Extract compressed Knoppix filesystem
extract_compressed_fs ${KNXROOT}/mnt/KNOPPIX/KNOPPIX > \ ${KNXROOT}/KNOPPIX.src.iso cd ${KNXROOT}; umount ${KNXROOT}/mnt mount -t iso9660 -o ro,loop=/dev/loop/0 \ ${KNXROOT}/KNOPPIX.src.iso ${KNXROOT}/mnt
Copy files over to old source dir
cp -Rp ${KNXROOT}/mnt/* ${OLDSRCDIR} umount ${KNXROOT}/mnt rmdir ${KNXROOT}/mnt
Go into old source dir and reconstruct Knoppix specific packages
chroot ${OLDSRCDIR} dpkg --get-selections > dpkg.selections.txt COLUMNS=200 KNOPPIX_PACKAGES=`dpkg -l "*knoppix*" | grep ^ii |awk '{print $2} '` KNOPPIX_PACKAGES+=`dpkg -l "*2\.6*" | grep "^ii" |awk '{print $2} '` # The following list is based on knoppix 5.1, you may have to change # it for other versions KNOPPIX_PACKAGES+="linux-kernel-headers \ linux-sound-base \ loop-aes-utils \ madwifi-tools \ ndiswrapper-utils"
Make packages from original Knoppix version. You will get lots of errors that it can't find necessary files (mostly in /usr/share...) on this next step; you can safely ignore them.
cd knxfiles for PACKAGE in ${KNOPPIX_PACKAGES}; { dpkg-repack ${PACKAGE} }; exit
Get bootstrap files, copy selections and /usr/src over to new source dir
debootstrap --arch ${ARCH} ${DEBIAN_RELEASE} ${NEWSRCDIR} ${DEBIAN_MIRROR} cp -prd ${OLDSRCDIR}/knxfiles ${OLDSRCDIR}/dpkg.selections.txt ${NEWSRCDIR} cp -Rp ${OLDSRCDIR}/usr/src/* ${NEWSRCDIR}/usr/src
chroot to new source dir
chroot ${NEWSRCDIR} /usr/bin/env -i HOME=/root TERM=$TERM \ PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login
Install dependencies required for Knoppix, answer "y" to all queries
apt-get update apt-get install \ gawk \ perl \ libdb4.4 \ perl-modules \ console-tools \ console-data \ console-common \ pciutils \ libpci2 \ udev \ libvolume-id0 \ pump \ dhcp3-common \ binutils \ debhelper \ dpkg-dev \ file \ gettext \ html2text \ intltool-debian \ libmagic1 \ make \ patch \ po-debconf \ modutils useradd -m knoppix echo 'deb-src http://debian-knoppix.alioth.debian.org ./' \ >> /etc/apt/sources.list echo 'deb http://debian-knoppix.alioth.debian.org ./' \ >> /etc/apt/sources.list
Update and install knoppix specific deb's, you will get some errors in the dpkg step, ignore them
apt-get update dpkg -i /knxfiles/* # Say "NO" to "stop install since..." rm -rf /knxfiles
NOTE: The following will install EVERYTHING that was in the original CD! At this point you are going to start seeing errors. Mostly because the configure scripts are trying to do things to your run-time system and they are failing since you are in a chroot. If the errors are from dmraid samba, telnetd-ssl, etc then you can safely ignore them.
apt-get -f install for pkg in `grep "\binstall$" dpkg.selections.txt | awk '{print $1} '`; \ do apt-get -y --force-yes install $pkg; done dselect update apt-get dselect-upgrade
Install extra stuff if you want (optional).
apt-get install whatever
Now it's time for a sanity check, if you do:
dpkg --status xserver-xorg-video-nv
and it tells you it's not installed then something is wrong and you need to force dpkg to install this (and many more probably missing)
Clean up if you want to get rid of some space so it fits on a CD
chmod 755 /etc/X11/xinit/xinitrc # fix mode on xinitrc apt-get remove kde-i18n* # this is optional deborphan | xargs apt-get -y remove # do this until nothing left to orphan COLUMNS=200 dpkg -l |grep ^rc |awk '{print $2} ' | xargs dpkg -P apt-get clean # this is optional, if you need space: cd /var/lib/apt/lists; rm -f *Packages *Release *Release.gpg rm -rf /var/lib/dpkg/*old /var/cache/debconf/*old \ /var/cache/apt/*bin /usr/share/doc/* exit
Finalize
Prep startup rc startup scripts, inittab
rm -rf ${NEWSRCDIR}/etc/rc* ${NEWSRCDIR}/etc/inittab ${NEWSRCDIR}/etc/passwd cp -ax ${OLDSRCDIR}/etc/inittab ${OLDSRCDIR}/etc/passwd \ ${OLDSRCDIR}/etc/rc* ${NEWSRCDIR}/etc
We're basically done but if you want to make any changes with how Knoppix starts or what comes up when it starts, this is the place to do it. You could just copy stuff to /etc/skel so that you have it on your new cd under /home/knoppix
Build The CD
- Make the compressed KNOPPIX CLOOP file
mkisofs -R -U -V "Knoppix" -publisher "yourname" -hide-rr-moved \ -cache-inodes -no-bak -pad ${NEWSRCDIR} | nice -5 \ /usr/bin/create_compressed_fs - 65536 > ${MASTERDIR}/KNOPPIX/KNOPPIX
Create the knoppix.iso file
mkisofs -pad -l -r -J -v -V "KNOPPIX" -no-emul-boot -boot-load-size 4 \ -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \ -hide-rr-moved -o ${KNXROOT}/knoppix.iso ${MASTERDIR}
Try it out
qemu -m 128 -cdrom ${KNXROOT}/knoppix.iso -boot d
Burn it
k3b ${KNXROOT}/knoppix.iso