Debootstrap to LiveCD


From Knoppix Documentation Wiki
Revision as of 17:13, 24 April 2007 by Rickbronson (Talk | contribs)

Jump to: navigation, search

PREAMBLE

  • Debian Releases:
    • etch = stable realease
    • lenny = testing release
    • sid = unstable release

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

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 cloop-utils and KNOPPIX_V5.1.0CD-2006-12-30-EN.iso

apt-get cloop-utils
wget http://www.kernel.org/pub/dist/knoppix/KNOPPIX_V5.1.0CD-2006-12-30-EN.iso
Script Variables
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
Make directories, mount CD image, copy files over to MASTERDIR
mkdir -p ${MASTERDIR} ${NEWSRCDIR}/usr/src ${OLDSRCDIR}/knxfiles ${KNXROOT}/mnt
mount -t iso9660 -o ro,loop=/dev/loop/0 /wherever/KNOPPIX_V5.1.0CD-2006-12-30-EN.iso ${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 OLDSRCDIR
cp -Rp ${KNXROOT}/mnt/* ${OLDSRCDIR}
umount ${KNXROOT}/mnt
rmdir ${KNXROOT}/mnt
Go into OLDSRCDIR 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"

Now setup the environment, make directories, run the debootstrap command and then change root. 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 boot strap files, copy selections and /usr/src over to NEWSRCDIR

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

Go to NEWSRCDIR and install, dependencies, knoppix specific and extra

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

Install extra stuff if you want. 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

NOTE: if doing:

dpkg --status xserver-xorg-video-nv

Tells you it's not installed then something is wrong and you need to force dpkg to install this (and many more probably missing)

chmod 755 /etc/X11/xinit/xinitrc  # fix mode on xinitrc

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
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

Exit Chroot & 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


SPECIAL THANKS & SUPPORT

  • If this was of help, feel free to post a message
  • Support
  • How do I find what files belong to what packages? answer