Difference between revisions of "Debootstrap to LiveCD"


From Knoppix Documentation Wiki
Jump to: navigation, search
m (Reverted edits by Brianpalmer2010 (Talk); changed back to last version by Clinton)
 
(204 intermediate revisions by 5 users not shown)
Line 1: Line 1:
==Preamble==
+
=PREAMBLE=
  
So far I have created a script to boot from Knoppix, then debootstrap and create a new livecd.
+
*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 in time will be further simplified to debootstrap to livecd.
+
*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.
  
==Script==
+
*Debian Releases:
#!/bin/bash
+
**[http://www.debian.org/releases/stable/ etch] = stable realease
SOURCEDIR=/mnt/hda1/source
+
**[http://www.debian.org/releases/testing/ lenny] = testing release
MASTERDIR=/mnt/hda1/master
+
**[http://www.debian.org/releases/unstable/ sid] = unstable release
  
mkdir ${SOURCEDIR}/KNOPPIX
+
=CONVENTIONS USED=
mkdir ${MASTERDIR}/KNOPPIX
+
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]]
  
debootstrap --arch i386 sid ${SOURCEDIR}/KNOPPIX http://http.us.debian.org/debian
+
=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 [http://en.wikipedia.org/wiki/Shebang_(Unix) Hash Bang]
 +
#!/bin/bash
  
KNOPPIX_PACKAGES="ash-knoppix-26 hwsetup udev pump modutils module-init-tools linux-image-2.6.17 loop-aes-module-2.6.17 madwifi-modules-2.6.17 ndiswrapper-modules-2.6.17 rt2x00-modules-2.6.17 unionfs-knoppix-modules-2.6.17 zr364xx-modules-2.6.17 zydas-modules-2.6.17 linux-image-2.6.17 linux-kernel-headers-knoppix linux-sound-base gawk dhcp3-common console-tools console-data console-common pciutils"
+
You will need KNOPPIX_V5.1.0CD-2006-12-30-EN.iso (or whatever version one you want)
  
for PACKAGE in ${KNOPPIX_PACKAGES};
+
=====Script Variables=====
{
+
*More info see: [http://tldp.org/LDP/abs/html/variables.html BASH Variables]
for ITEM in `dpkg --listfiles ${PACKAGE} | grep -v "\.$" | grep -v "divert"`;
+
* cd somewhere appropriate and become superuser
{
+
cd $HOME
  if [ -d ${ITEM} ];
+
export KNXISO=KNOPPIX_V5.1.0CD-2006-12-30-EN.iso
  then
+
wget http://www.kernel.org/pub/dist/knoppix/${KNXISO}
    mkdir -p ${SOURCEDIR}/KNOPPIX${ITEM};
+
ln -s `pwd`/${KNXISO} /tmp/${KNXISO} # make link for later
  else
+
su  # become superuser
    cp -ax ${ITEM} ${SOURCEDIR}/KNOPPIX${ITEM};
+
! type extract_compressed_fs && [[apt-get]] cloop-utils # You will need cloop
  fi;
+
! 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
  
cd ${SOURCEDIR}/KNOPPIX/etc && rm -rf init* rc* passwd* group* shadow* hotplug sysconfig modu*
+
=====Make directories, mount CD image, copy files over to the Master dir=====
cd /KNOPPIX
+
mkdir -p ${MASTERDIR} ${NEWSRCDIR}/usr/src \
cp -ax init* rc* passwd* group* shadow* hotplug sysconfig modu* ${SOURCEDIR}/KNOPPIX/etc/.
+
  ${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} \;
  
rm -rf ${SOURCEDIR}/KNOPPIX/dev
+
=====Extract compressed Knoppix filesystem=====
cp -ax /KNOPPIX/dev ${SOURCEDIR}/KNOPPIX/.
+
extract_compressed_fs ${KNXROOT}/mnt/KNOPPIX/KNOPPIX > \
cp -ax /KNOPPIX/lib/modules/*  ${SOURCEDIR}/KNOPPIX/lib/modules/.
+
  ${KNXROOT}/KNOPPIX.src.iso
cp -ax /KNOPPIX/lib/linux-sound-base ${SOURCEDIR}/KNOPPIX/lib/.
+
  cd ${KNXROOT}; umount ${KNXROOT}/mnt
cp -ax /KNOPPIX/usr/src/* ${SOURCEDIR}/KNOPPIX/usr/src/.
+
  mount -t iso9660 -o ro,loop=/dev/loop/0 \
mkdir ${SOURCEDIR}/KNOPPIX/cdrom
+
   ${KNXROOT}/KNOPPIX.src.iso ${KNXROOT}/mnt
mkdir  ${SOURCEDIR}/KNOPPIX/floppy
+
mkdir ${SOURCEDIR}/KNOPPIX/dvb
+
cp -ax /KNOPPIX/vmlinuz   ${SOURCEDIR}/KNOPPIX/.
+
cp -ax /KNOPPIX/tftpboot  ${SOURCEDIR}/KNOPPIX/.
+
  
 +
=====Copy files over to old source dir=====
 +
cp -Rp ${KNXROOT}/mnt/* ${OLDSRCDIR}
 +
umount ${KNXROOT}/mnt
 +
rmdir ${KNXROOT}/mnt
  
mkisofs -R -U -V "Knoppix" -publisher "SNIaKNOPPIX" -hide-rr-moved -cache-inodes -no-bak -pad ${SOURCEDIR}/KNOPPIX/ | nice -5 /usr/bin/create_compressed_fs - 65536 > /mnt/hda1/master/KNOPPIX/KNOPPIX
+
=====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"
  
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 knoppix.iso master/
+
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]] [[apt-get#update|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]] [[apt-get#clean|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, (dead link)
 +
 
 +
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 [http://www.knoppix.net/wikinew/index.php?title=Talk:Debootstrap_to_LiveCD&action=edit&section=new message]
 +
*[http://www.knoppix.net/wikinew/index.php?title=Talk:Debootstrap_to_LiveCD&action=edit&section=new Support]
 +
*How do I find what files belong to what packages? [[whatpackage|answer]]
 +
[[Category: Remastering Knoppix ]]

Latest revision as of 16:28, 16 February 2011

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, (dead link)

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