Difference between revisions of "Debootstrap to LiveCD"


From Knoppix Documentation Wiki
Jump to: navigation, search
Line 1: Line 1:
 
=PREAMBLE=
 
=PREAMBLE=
  
*This script was done using the [http://www.knopper.net/knoppix-mirrors/index-en.html Knoppix 5.1] boot cd.
+
*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:SNIa|SNIa]] 20:43, 8 Apr 2007 (GMT)
+
*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 cloop-utils and KNOPPIX_V5.1.0CD-2006-12-30-EN.iso
+
You will need KNOPPIX_V5.1.0CD-2006-12-30-EN.iso (or whatever version one you want)
apt-get cloop-utils
+
wget http://www.kernel.org/pub/dist/knoppix/KNOPPIX_V5.1.0CD-2006-12-30-EN.iso
+
  
 
=====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 MASTERDIR=====
+
=====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 /wherever/KNOPPIX_V5.1.0CD-2006-12-30-EN.iso ${KNXROOT}/mnt
+
  ${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 OLDSRCDIR=====
+
=====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 OLDSRCDIR and reconstruct Knoppix specific packages=====
+
=====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"
  
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.
+
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 boot strap files, copy selections and /usr/src over to NEWSRCDIR
+
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
  
Go to NEWSRCDIR and install, dependencies, knoppix specific and extra
+
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 Dependencies required for Knoppix, answer "y" to all queries
+
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
  
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.
+
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
  
NOTE: if doing:
+
Install extra stuff if you want (optional).
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)
+
[[apt-get]] install whatever
+
chmod 755 /etc/X11/xinit/xinitrc  # fix mode on xinitrc
+
  
 +
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
  
==Exit Chroot & Finalize==
+
==Finalize==
 
Prep startup rc startup scripts, [http://man.linuxquestions.org/index.php?query=inittab&type=2&section=5 inittab]
 
Prep startup rc startup scripts, [http://man.linuxquestions.org/index.php?query=inittab&type=2&section=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

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

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


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