Remaster knoppix aangepast

Bron: Knoppix Documentation Wiki


Dit document geeft uitleg over het remasteren van KNOPPIX versie 6.2. Alle commandos moeten op 1 regel getyped worden dus maximaliseer dit scherm voor het beste resultaat.

Suggesties en commentaar  zijn altijd welkom.


Misschien wil je starten vanaf een reeds aangepaste versie van knoppix zodat je een paar stappen kunt overslaan, zoals het verwijderen van pakketten. Kijk voor een lijst van aangepaste KNOPPIX varianten op: Knoppix Customizations.


Instructies

Voorbereiden op het remasteren

  1. Zorg voor minimaal 1 GB aan RAM geheugen en boot vanaf de Knoppix 6.2 CD
  2. Open een terminal:
    • Menu: Kmenu->Accessories->LXTerminal
    • Log in als root met: 
      su -
    • Alle verdere commando's moeten als root worden gestart. Soms heb je een 2e terminal nodig waarop je ook als root inloged.
  3. Configureer je internet verbinding. Als je DHCP gebruikt, zou dit al automatisch moeten werken.
    • Geef het commando 
      ifconfig
      om dit te controleren.
  4. Gebruik het programma gparted om een partitie te maken en formateren en onthou de naam. Ik werk verder met /dev/sda1. Op deze partitie moet minimaal 3 GB beschikbaar zijn.
  5. Mount de partitie:
    mount -rw /media/sda1
    • Zorg dat /dev/sda1 read/write gemount wordt anders krijg je foutmeldingen als je later met chroot gaat werken. Controleer dit met het commando mount
  6. Maak 2 directories om in te werken, one for your new Master CD, one for the source, on a disk partition. Also, make additional directories under these named KNOPPIX: 
    mkdir -p /media/sda1/knx/master/KNOPPIX 
    mkdir -p /media/sda1/knx/source/KNOPPIX
  7. Now, copy the KNOPPIX files to your source directory :
    cp -Rp /KNOPPIX/* /media/sda1/knx/source/KNOPPIX
    • Note: This will take a long time (you are copying 2GB). Warning: you will be tempted to replace this copy command with a much faster procedure: create an empty directory, then use unionfs to merge the empty directory with /KNOPPIX in order to create the read-write copy. However, as of Knoppix 4.0.2, there is a bug in unionfs that causes this faster procedure to fail. For now, stick with the copy-command shown above.
  8. Additionally, copy the 'boot' folder from your cdrom - you'll need these files to build the ISO later. 
    cp -ar /mnt-system/boot /media/sda1/knx/master/boot
  9. Copy the main HTML page for the startup page: 
    cp /mnt-system/index.html /media/sda1/knx/master/
  10. Copy everything necessary files except the ~700 Mb KNOPPIX file.
    cd /mnt-system && find . -size -10000k -type f -exec cp -p --parents '{}' /media/sda1/knx/master/ \;
  11. setup the environment for chroot 
    mount --bind /dev /media/sda1/knx/source/KNOPPIX/dev 
    mount --bind /proc /media/sda1/knx/source/KNOPPIX/proc
     
    mount --bind /sys /media/sda1/knx/source/KNOPPIX/sys
  12. Now you can "chroot" into the copied KNOPPIX:
    chroot /media/sda1/knx/source/KNOPPIX

Working in the Chroot Environment

Remember that anything you do or create in the chrooted environment will get burned to the CD. If you make any changes (e.g,. to the APT configuration, proxy settings, etc.), make a note to back the changes out before remastering.

Internet Access

To use the Internet you need to edit /etc/resolv.conf to add your nameserver or exit the chroot and copy the outer resolv.conf into the chroot folder:

cp /etc/resolv.conf /media/sda1/knx/source/KNOPPIX/etc/resolv.conf
Om te controleren of je internet verbinding nu werkt:
links http://www.google.com

SMB access

Also change smb.conf to your MS group if you want smbd support (MSHOME is XP Home ed. usually, and WORKGROUP is 9x Windows)

APT

Update your package list with 

apt-get update.


Note: If 'apt-get update fails with "FATAL -> Could not set non-blocking flag Bad file descriptor", you need to make sure your chrooted environment is mounted without the "nodev" option. (see above where it talks about the /dev/null errors when entering the chroot environment for the first time)


Warning: apt-get upgrade is a BAD IDEA. It will, quite probably, render your KNOPPIX remaster unbootable, or broken in some way. A far safer method is to only upgrade packages as necessary.


Note: If apt-get fails with "Dynamic NMap ran out of room" you might try this little gem, which fixed the problem for me:

#echo 'APT::Cache-Limit "25168524";'>> /etc/apt/apt.conf

(I did this while chrooted as described above.)

Before you can add stuff, you will probably need to remove some packages. To get a list of packages installed, type this:

dpkg-query -l
Als je hulp wilt bij het selecteren van de grootste pakketten die je gaat verwijderen om plaats te maken voor nieuwe software kun je met dit commando een lijst krijgen waarbij de grootste pakketten onderaan staan.
dpkg-query -W --showformat='${Installed-Size} ${Package} ${Status}\n' | grep -v deinstall | sort -n | awk '{print $1" "$2}'

It does the same thing as above, I assume. I couldn't get the first one to work because I don't have dpkg-awk.

To remove a package (and all packages dependant on it), type this:

apt-get remove --purge name-of-package-to-remove

To check for orphaned packages, type this:

deborphan

Want to save more space by getting rid of those pesky orphans (how cruel!), type this (Warning, you won't be prompted yes/no to remove these packages. When you press Enter after this command, those packages will be gone):

deborphan | xargs apt-get -y remove

If you're uncertain about the previous command and want to see what will happen without making any changes, just add the -s option to the apt-get command like this (you can do this with all of the apt-get commands, and it's a good habit to use this option before mass operations like this one):

deborphan | xargs apt-get -s -y remove

Now the good stuff. If you wish to add a package, type this:

apt-get install 'name-of-package-to-install

Wil je de virtualbox additions toevoegen zodat je dat voortaan niet meer hoeft te doen nadat je de live cd start dan helpt dit verhaal je misschien: http://frii.nl/knoppix62vboxadditions


Je moet wel beschikken over het bestand linux-source-2.6.31.6.tar.bz2 die kun je op verschillende plaatsen downloaden. Hij staat ook op de KNOPPIX 6.2 dvd.

What, don't know what packages to install? Type this. When the list appears, you can peruse (over 13k lines!) or search for things using /search-term:

apt-cache search .* | sort | less

When you're done removing and adding packages, a good way to clean up is by typing this

COLUMNS=200 dpkg -l |grep ^rc |awk '{print $2} ' | xargs dpkg -P

Also, because the Debian package system keeps a cache of downloaded packages, you may want to run the following to clear out those spare files:

apt-get clean

User Settings

User settings are in /etc/skel. This directory will be copied to make new user home directories.


tip: don't put files in /root they will be only available (at runtime) in /KNOPPIX/root


Note that the default user 'knoppix' is not created by adduser(1), thus /etc/skel is not copied completely but rather selectively. That is, to make a file .xyrc appear in /home/knoppix, it is not sufficient to place it in /etc/skel. One possibility is to extend the code in /etc/X11/Xsession.d/45xsession which is responsible for filling /home/knoppix.

In Knoppix >= v6.0, the "knoppix" user's home directory appears to be taken as-is from the CD, instead of created each time the system is booted. This makes customization much easier -- just copy the configuration files you want to use to source/KNOPPIX/home/knoppix/, in your remastering tree.

Autorunning Programs

When you want to autorun some programs, one can create a script and put it in the directory /etc/rc5.d/ (This only loads items before X loads). Read up on the SysV init process for more possibilities. For v6.0 and later, put the script in /etc/init.d, then add it to the SERVICES variable in /etc/rc.local.

For X-programs consider /home/knoppix/.kde/Autostart but this may transfer form /etc/skel/.kde/Autostart on boot--12.106.237.2 18:08, 7 December 2007 (UTC)

Editing the KNOPPIX auto-configuration script

You can find a lot of interesting information about how KNOPPIX auto-configures you system by looking in the /etc/init.d/knoppix-autoconfig script. Of particular note are the following.

Changing the default KDE background image

In een terminal buiten de chroot omgeving kun je de achtergrond van je toekomstige linux distro aanpassen door een jpg bestand, in dit geval: /home/knoppix/Downloads/Background.jpg te kopieren over de background image in de master.

cp /home/knoppix/Downloads/Background.jpg /media/sda1/knx/master/KNOPPIX/background.jpg

Editing floppy and CD-ROM use or adding a custom script

The auto-configuration script sets up both your CD-ROM and your floppy disk. The commands for doing this are 'floppyconfig' and 'cdromconfig', respectively. The auto-configuration script will also run cdrom/KNOPPIX/knoppix.sh, which is an easy script to change when remastering KNOPPIX.

Knoppix 6.1 ignores the knoppix.sh file. use the overlay-(ext2)filesystem /mnt/system/KNOPPIX/knoppix-data.img instead.

Changing the default boot parameters

All boot parameters obtain default values from the /etc/init.d/knoppix-autoconfig script. This is one massive BASH script (you best know your BASH to play with this), but it is the place that you can edit any of the default boot parameters. For example, to switch from 'kde' to 'twm' as default desktop just search for the place where 'kde' is provided as default value (variable DESKTOP, IIRC). Another example would be changing the default language.

Note, if you are interested in changing the default language KDE uses, the easiest thing to do is to load KDE, instructions are below, and use the KDE configuration utility to select your language of interest. 

Eer refresh script om de desktop image te her laden

Telkens als de gebruiker het virtuele scherm groter of kleiner maakt wordt het script /usr/bin//VBoxRandR aangeroepen. dit script vul ik aan met 2 regels.
vi /usr/bin/VBoxRandR
Aan het eind van het script voeg ik deze regels toe:
#refresh the desktop image.
touch /tmp/VboxRefreshDestop
chmod 777 /tmp/VboxRefreshDestop
Deze toevoeging zorgt ervoor dat er een bestandje wordt gemaakt waaraan een het script /usr/bin/LXrefresh kan zien dat de resolutie is aangepast.
Het script LXrefresh is een doorlopend script dat kijkt of dit bestand bestaat. Heeft het script het bestand gevonden dan herstart het pcmanfm -d en verwijderd het signaalbestand.
vi /usr/bin/LXrefresh
Aan het eind van het script voeg ik deze regel toe:
#Keep checking for the file: /tmp/VboxRefreshDestop
#If one is found reload pcmanfm -d to refresh the desktop image

while true 
do
  if test -e /tmp/VboxRefreshDestop
  then
    killall pcmanfm
    pcmanfm -d&
    rm /tmp/VboxRefreshDestop
  fi
  sleep 1
done
Uiteraard maken we het script uitvoerbaar:
chmod +x /usr/bin/LXrefresh


X Session Configuration

When working with X-based programs you will have to make sure that your display is set appropriately. You can do this manually when remastering KNOPPIX. Also, two scripts related to X Session is where you can change or disable the startup and shutdown sounds. 

Start automagisch het refresh script

Als je automatisch programma's wilt laten starten door de knoppix gebruiker nadat de x sessie is gestart, dan kun je een .desktop bestand in de map ~/.config/autostart plaatsen. Bedenk ook even of je dit bestand ook in het skeleton wilt opnamen (/ect/skel/.config/autostart).


Ik maak een bestand:

vi /media/sda1/knx/source/KNOPPIX/home/knoppix/.config/autostart/refresh.desktop 

daarin komt te staan:

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=LXrefresh
GenericName=Vbox refresh desktop image
Comment=Vbox refresh desktop image
Exec=LXrefresh


Starting X-based programs

When testing X-based programs, you will have to

export DISPLAY=localhost:0.0

which will allow you to connect to your normal X session. Alternately (if you need to test window managers), you can create a nested X session. Outside of the chroot, run

Xnest -ac :1

Within the chroot, set your DISPLAY variable

export DISPLAY=localhost:1

Interesting stuff in /etc/init.d/xsession :

  • it ALSO sets background as /usr/local/lib/knoppix.gif

Modifying/Disabling the startup sound

The startup sound is played by /etc/X11/Xsession.d/45xsession. You can disable it by commenting out the following lines.

playsound(){ 
# Play sound if soundcore module present (checking /dev/sndstat is unreliable)
# OGGPLAY=/usr/bin/ogg123
# PLAY=/usr/bin/wavp
# [ -x "$PLAY" ] || PLAY=/usr/bin/play-sample
# [ -x "$PLAY" ] || PLAY=/usr/bin/play
# if [ -x "$OGGPLAY" -a -f /usr/share/sounds/startup.ogg ]; then
# case "$(lsmod)" in *sound*) { $OGGPLAY -q -p 64 /usr/share/sounds/startup.ogg >/
# elif [ -f /usr/share/sounds/startup.wav -a -x "$PLAY" ]; then
# case "$(lsmod)" in *sound*) { $PLAY /usr/share/sounds/startup.wav >/dev/null 2>&
# fi
}

Modifying/Disabling the shutdown sound

The shutdown sound is played by /etc/init.d/xsession. You can disable it by commenting out lines 210-220 from the script.

## Play informational sound if soundcore module present
## (checking /dev/sndstat is unreliable)
#OGGPLAY=/usr/bin/ogg123
#PLAY=/usr/bin/wavp
#[ -x "$PLAY" ] || PLAY=/usr/bin/play-sample
#[ -x "$PLAY" ] || PLAY=/usr/bin/play
#if [ -x "$OGGPLAY" -a -f /usr/share/sounds/shutdown.ogg ]; then
#case "$(</proc/modules)" in *sound*|*snd_*) { $OGGPLAY -q -p 64 /usr/share/sound
#elif [ -f /usr/share/sounds/shutdown.wav -a -x "$PLAY" ]; then
#case "$(</proc/modules)" in *sound*|*snd_*) { $PLAY /usr/share/sounds/shutdown.w
#fi

Change default window manager

Open /etc/init.d/knoppix-autoconfig and look for lines which look like these:

# Allow only supported windowmanagers 
# Actually, this check is useless because it's done again in 45xsession. -KK 
# case "$DESKTOP" in gnome|enlightenment|kde|larswm|xfce|xfce4|lg3d|ratpoison|blackbox|openbox|windowmaker|wmaker|icewm|fluxbox|twm|nx|rdp|kiosk) ;; *) DESKTOP="kde"; ;; esac 
[ -n "$DESKTOP" ] || DESKTOP="kde" 

Then, change "kde" in the last quoted line to whatever you like, for example to "fluxbox" or "twm".

Changing the boot graphic, boot message, and startup script text

While you are in the chroot environment you can easily change the boot messages, the boot graphic, and the default KDE background graphic.

Changing the boot graphic

The 'boot graphic' is the first image you see when the CD or DVD boots. It looks similar to ASCII art and it is normally something flashy that says 'Knoppix'. You can change this to be any graphic that you please, but you must use a 640x400 graphic that has only 16 colors.

  1. Change to the /media/sda1/knx/master/boot directory. Swap '/media/sda1/' for whatever disk you are using.
    • cd /media/sda1/knx/master/boot/isolinux
  2. Back up your old logo in case you break things.
    • mv logo.16 logo.16.backup
  3. Make a 640x400 pixel 16 color graphic and save it as a GIF, e.g. 'logo.16.gif'. GIMP can easily do this. Note, you can use a graphic that originally had more than 16 colors, but it is critical that you convert the graphic to 16 colors before doing the next step.
  4. Convert the GIF to lss16 using the tools included on the Knoppix CD.
    • giftopnm < 640x400x16.gif > logo.ppm
    • ppmtolss16 <logo.ppm > logo.16

Changing the boot message

The 'boot message' is the message that you see under the 'boot graphic' on the initial screen when the Knoppix CD or DVD loads. It normally says something along the lines of Knoppix with the version number and includes a link to the Knoppix website. You can change this text to be whatever you please, but you shouldn't add too much text or it will make the boot screen look funny. Restricting yourself to a single line of text that is no larger than the default one is a good idea.

  1. Change to the /media/sda1/knx/master/boot directory. Swap '/media/sda1/' for whatever disk you are using.
    • cd /media/sda1/knx/master/boot/isolinux
  2. Back up your old message in case you break things.
    • cp boot.msg boot.msg.backup
  3. Edit the message with a text editor. You'll see at the top of the message that it shows the graphic. Don't change this text, just the line under.
    • vi boot.msg

Changing the startup script text

The 'startup script text' is the text that you see after the initial boot screen, while Knoppix loads and configures your system. You can change as much of this text as you please. You can even add addition lines to the script; however, it is recommended that you don't play with this file. Limiting yourself to editing the 'Welcome to KNOPPIX' message is a good idea.

  1. Change to the /media/sda1/knx/master/boot directory. Swap '/media/sda1/' for whatever disk you are using.
    • cd /media/sda1/knx/master/boot/isolinux
  2. Back up your old minirt.gz in case you break things.
    • cp minirt.gz minirt.gz.backup
  3. Uncompress minirt.gz
    • gunzip minirt.gz
  4. Make a temporary directory to mount the minirt filesystem.
    • mkdir todelete
  5. Mount the minirt filesystem as an ext2 filesystem.
    • mount minirt todelete -t ext2 -o=/dev/loop0
    or if the above does not work use
    • mount minirt todelete -t ext2 -o loop
  6. Edit the linuxrc script to display the message you want. You'll find the default message approximately 2 pages down and it'll be using several colors, i.e. ${WHITE}, ${RED}, etc., so it might be slightly tricky to spot.
    • vi todelete/linuxrc
  7. unmount the minirt filesystem.
    • umount todelete
  8. Compress the minirt filesystem.
    • gzip -9 minirt
  9. Remove your temporary directory.
    • rmdir todelete

Launching KDE to Change Menus, Icons, etc.

While you are in the chroot environment you can load LXDE and use the configuration tools to change buttons, icons, etc. Once you are finished you can exit LXDE and copy /home/knoppix to /etc/skel to keep these changes. To load LXDE do the following.

  1. If you are not at runlevel 2 (i.e. if you are already in LXDE), switch to runlevel 2.
    • init 2
  2. Copy /etc/skel to /home/knoppix
    • cp -Rp /etc/skel /home/knoppix
  3. Change permissions to the user 'knoppix'
    • chown knoppix:knoppix -R /home/knoppix
  4. Copy over your X11 configuration to the chroot'd environment (press ctrl+alt+F2 to switch to a non-chroot'd terminal, then ctrl+alt+F1 to switch back when done)
    • cp /etc/X11/xorg.conf /media/sda1/knx/source/KNOPPIX/etc/X11

  5. (Optional)Switch to user 'knoppix'. If you want to uninstall packages, stay as root -- e.g. skip this step. If you want to configure the buttons, icons, background, etc., that you see when KDE boots, be sure to do this step.
    • su knoppix
    1. Launch X
      • startx
    2. Do your LXDE changes
    3. Exit X
    4. Exit su and switch back to user 'root'.
      • exit
  6. Copy /home/knoppix back to /etc/skel to keep the changes
    • mv /etc/skel /etc/skel-old
    • mv /home/knoppix /etc/skel
  7. Set the owner back to root
    • chown root:root -R /etc/skel
  8. Remove the xorg.conf file
    • rm /etc/X11/xorg.conf
  9. If you find that some of your settings are not persistent after booting the new image, check the initialization file at /etc/X11/Xsession.d/45xsession. By default, Knoppix does not simply copy over all files from /etc/skel. You may need to make modifications here if you wish to do something different.

Changing the ksplash KDE graphics

You can change the graphics that KDE shows via ksplash when it first loads. These graphics are in the /media/sda1/knx/source/KNOPPIX/usr/share/apps/ksplash/Themes/Default/directory. You'll most likely want to swap out splash_top.png for a custom 400x248 PNG graphic. Note that ksplash will not automatically put a border around your graphic. If you'd like a border, you have to manually add it to your graphic.

Leaving the Chroot

If you mounted it, you'll need to unmount /proc - very important!

umount /proc

Press CTRL+D to leave being chrooted.

Re-Entering the chroot

If you've left the chroot, but you want to go back in and modify some things...

Remount the local hard disk (if needed)

mount -rw /dev/hda1 /media/sda1

Setup the environment for chroot

mount --bind /dev /media/sda1/knx/source/KNOPPIX/dev
mount --bind /proc /media/sda1/knx/source/KNOPPIX/proc
mount --bind /sys /media/sda1/knx/source/KNOPPIX/sys

Now you can "chroot" into the copied KNOPPIX:

chroot /media/sda1/knx/source/KNOPPIX

Remastering the ISO

We've finished customizing and ready to burn! First do some cleanup:

  • remove any .bash_history files, tmp files, etc.
  • back out any changes you don't want burned back to the disc
  • make sure you 
    umount /media/sda1/knx/source/KNOPPIX/sys/
    umount /media/sda1/knx/source/KNOPPIX/dev
    rm -rf /media/sda1/knx/source/KNOPPIX/.rr_moved

KNOPPIX Compressed Image

Now we'll make the big KNOPPIX file which is an ISO 9660 filesystem compressed for use by the cloop driver: 

mkisofs -R -U -V "MyLinux filesystem" -publisher "MyLinux bs012.nl" \
-hide-rr-moved -cache-inodes -pad /media/sda1/knx/source/KNOPPIX \
| nice -5 /usr/bin/create_compressed_fs -m - 65536 > /media/sda1/knx/master/KNOPPIX/KNOPPIX

the "www.knoppix.net" and "Knoppix.net filesystem" can be changed to what you want to call the file.


Live CD ISO

If all went well, onto making the final CD-ROM Image:

First, update the file hashes used by the "testcd" boot option.

cd /media/sda1/knx/master

find -type f -not -name sha1sums -not -name boot.cat -not -name isolinux.bin \
-exec sha1sum '{}' \; > KNOPPIX/sha1sums

Now to create the image;

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 /media/sda1/knx/knoppix.iso /media/sda1/knx/master

(the ISO is stored in /media/sda1/knx/knoppix.iso)

Burn the ISO using your favorite tools, and you're ready! 


Als je een iso bestand via het netwerk wilt copieren naar een andere pc (b.v. je host pc omdat je KNOPPIX virtueel draait in Virtualbox volg dan 1 van de volgende instukties:

Als je Windows als host systeem gebruikt deel dan en map b.v. "data" en zorg dat iedereen er toegang toe heeft. Vanuit je knoppix guest kun je het programma smbclient gebruiken om het bestand te kopieren


Het je een Linux debian based distributie als host dan kun je het beste een ssh-server instaleren. dat doe je met het commando:

  sudo apt-get install openssh-server

daarna kun je vanuit Knoppix het iso bestand kopieren met het ssh commando:


How to add new device driver to KNOPPIX

Recently in a client project, I added the Digital Persona’s finger print driver to the Knoppix 5.1 distribution as an embedded solution to this project. This is a typical case where both the kernel level driver and the user level drivers and libraries are involved.

Most of the Knoppix books and online documentation have documented about how to keep a persistent storage of user configuration and user data. But those persistent configuration only saves the data in /home and /etc directories. If you have added kernel level drivers and/or other system libraries which are not in above two directories, you have to save the file images as a whole right after the boot. The saved file image can be big and may not what you want as a regular usage model. If you are building a customed Knoppix image for a long term solution, definitely you want to remaster the Knoppix to make the new drives be a permanent part of it.

The Digital Persona’s OneTouch SDK for their finger print scanner driver comes with a kernel level driver source code, plus a set of user level application libraries, as well as a sample test application. The SDK do not have a ready made binary for Debian or Knoppix. So I have to compile it from the source SDK. However, the CD version of Knoppix 5.1 do not even come with the source include header files to compile a kernel level driver. So I have to compile it under the DVD version of the Knoppix 5.1 and copy the compiled binary to the CD version of Knoppix 5.1 to do testing and remastering. The steps I have tried to make it work under Knoppix are as follows:

1. First compile the driver under DVD version of the Knoppix. Change the source code build scripts so that the include files and library path are matching what we have in Knoppix. The details are specific to the OneTouch SDK itself. If you are interested about this detail, write to me.

2. Install the just built kernel driver, the user libraries to their regular location as we will show in following step 4. And then build and run their sample applications per Digital Persona’s instruction. This proves that the basic kernel module build steps are built correctly and the user level libraries are working properly in a standard installation. This is important before we moved to chroot environment to make this changes permanent to our remastered Knoppix.

3. Then I followed the Knoppix remastering instructions documented in the book of “Live Linux CD” by Christoper Negus.

4. In the above remastering instructions, there is a step to update all the Debian packages and other software under the chroot environment. It is at this step that I re-run the drivers installation steps like I have done in above step 2 in the real root environment. In this particular case, it is make a directory and copy the kernel module file mod_usbdpfp.ko to that directory as follows:

mkdir /lib/modules/2.6.19/kernel/drivers/biometric cp mod_usbdpfp.ko /lib/modules/2.6.19/mod_usbdpfp.ko

And also copy all those Digital Persona user level libraries to following location:

cp libdpfp* /usr/lib

5. I then run /sbin/depmod to let system detects the new kernel mode driver I have installed. This will refresh the /dev directory so it will have entries like:

/dev/usbdpfpPNP /dev/usbdpfp0

At this time, if all works right, when you run command lsmod, you will also see something like:

mod_usbdpfp

shows up in the loaded module list

6. At this time, you are ready to make a remaster of the Knoppix. Next time when you boot up with this remastered Knoppix, it will have the kernel driver and user level libraries setup ready for you to run the sample applications. Just as if you have done above step 2 and step 4 right after a refresh reboot from the original Knoppix CD.

John Xu, USA. ( johnxu at n2k.net )

Tips

I have had good results remastering working from the CD as root working from fluxbox. Just say "knoppix 2" at the boot prompt and it will boot you to a root prompt where you can then say "startx /usr/bin/fluxbox". I like to use the xterm unicode shell.

Package Management

While working chroot doing the remastering I like to use

apt-get remove --purge pkg-name

to remove packages because before it does anything it will stop and show details on what it is fixing to remove and let you say "yes or no".

If you don't use the above "apt-get" instructions and have a lot to cleanup and purge, here's the easy way to do it:

COLUMNS=200 dpkg -l |grep ^rc |awk '{print $2} ' > topurge

That will make a list of all removed packages to purge and then you just say

dpkg -P `< topurge `

and you're all done.

COLUMNS=200 dpkg -l |grep ^rc |awk '{print $2} ' | xargs dpkg -P

is a one-line version of this. Also use

deborphan | xargs dpkg -P .

Alternatives for Low-Memory Machines

You don't really need 1G swap as there are two new tools to create compressed filesystems. Here are some candidates to make compressed fs:

  • Valentijn's rewrite [1]
  • Quozl's port of compressloop for Knoppix 3.4 [2]
  • Quozl's distributed compressloop (use more than one processor to speed things up) [3] or [4]
  • Justin's patch [5] (link broken, archive.org backup) I also just wrote a distributed cloop compressor(or for smp) It's in that same directory.

Test CD Image Without Burning a CD

If you have a spare partition with at least 700MB free space formatted with ext2, ext3 or Vfat, you can use this for test by booting from a floppy disk. A floppy boot will look for a partiton with /KNOPPIX/ in the root, and the compressed image /KNOPPIX/KNOPPIX. Instead of using the sub-directory /media/sda1/knx/master/KNOPPIX/ as described above, it should be called /mnt/hda2/KNOPPIX/ . The root index.html will then be located at /mnt/hda2/index.html and the compressed image will be at /mnt/hda2/KNOPPIX/KNOPPIX . Now you can boot from floppy and use /mnt/hda2 as your image. For further information see Hd BasedHowTo.

If you don't have an extra partition or you don't want to do so much for it, you can use Qemu ( see [6] ) with the ISO image like this:

qemu -m 128 -cdrom /temp/knoppix-custom.iso -boot d -net user

You even do not have to build a hard disk image before, just install Qemu and try this. Amazing!

Test remastered version without creating cloop file/iso

i use a setup similar to knoppix terminal server to test the remastered files without having to recreate a cloop image every time: the remastered files live in an ext2 filesytem in a loopfile (knoppix_loop) mounted rw (this is where i chroot in). when i want to test the current setup, i have another machine network boot and use the files from the loopfile directly (needs another miniroot.gz). See User:Ml#dev_setup

If you want to use only one machine, you'll have to reboot (or use qemu) and use the "loopfile" and "fromhd" cheatcodes (see User:Ml#miniroot_changes). For example, this is what my grub boot entry looks like:

title Remastered Knoppix
root (hd0,0)
kernel /boot/myknoppix/vmlinuz fromhd=/dev/hda4 loopfile=/samba/share/isos/knoppix_loop lang=us ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=791 quiet BOOT_IMAGE=knoppix
initrd /boot/myknoppix/miniroot.gz

Booting Knoppix images with GRUB

  • First copy /boot off the Knoppix cd to your boot partition (or even your dos partition). I named mine boot.knoppix

Copy the master/KNOPPIX directory to your root directory of any hard disk. You may place it somewhere other than the boot partition (ext2/3, reiserfs, vfat are supported).

  • for Knoppix <= 3.3, put the following in your /boot/grub/menu.lst:
title KNOPPIX
root (hd0,0)
kernel /boot.knoppix/vmlinuz 2 fromhd=/dev/hda4 lang=us
initrd /boot.knoppix/miniroot.gz
  • for Knoppix >= 3.4 or other isolinux based distributions:
title KNOPPIX
root (hd0,0)
kernel /boot.knoppix/isolinux/linux 2 fromhd=/dev/hda4 lang=us
initrd /boot.knoppix/isolinux/minirt.gz
  • notice the fromhd parameter: it's the location of the /KNOPPIX directory
  • reboot and have fun.

Helpful Scripts


This is the recommended directory layout for remastering KNOPPIX:

. (invoke ../remaster from here)
|-- master (invoke ../../umountbootimage from here)
| |-- KNOPPIX
| | |-- KNOPPIX (compressed image)
| | |-- boot.img (boot floppy image)
| | `-- (other files snipped)
| `-- index.html
`-- source
`-- KNOPPIX (this directory can be chrooted into)
|-- bin
|-- boot
|-- cdrom
|-- dev
|-- etc
|-- floppy
|-- home
|-- initrd
|-- lib
|-- mnt
|-- none
|-- opt
|-- proc
|-- root
|-- sbin
|-- tmp -> /var/tmp
|-- usr
|-- var
`-- vmlinuz -> boot/vmlinuz-2.4.22-xfs

the following script "remaster" will do the remaster process for you. Use as root, or you will end up with wrong access rights in the image.

The script has last been tried out on Debian sid on 2004-04-02.

#!/bin/bash -x
# This script builds a new KNOPPIX ISO image.
# Copyright (C) 2004 by Marc Haber <mh+knoppix-remaster@zugschlus.de>
# License: GPL V2

ROOT="$PWD"
SOURCE="$ROOT/source/KNOPPIX"
MASTER="$ROOT/master"
CLOOPTARGET="$ROOT/master/KNOPPIX/KNOPPIX"
TARGET="$ROOT"
EXCLUDELIST="$ROOT/source/excludelist"

rm -rf $SOURCE/.rr_moved

cd $SOURCE
mkisofs -R -U -V "KNOPPIX.net filesystem" \
-P "KNOPPIX www.knoppix.net" \
-hide-rr-moved -cache-inodes -no-bak -pad \
-exclude-list $EXCLUDELIST \
. | nice -5 /usr/bin/create_compressed_fs - 65536 > $CLOOPTARGET

cd $MASTER
rm -f KNOPPIX/md5sums
find -type f -not -name md5sums -not -name boot.cat -exec md5sum {} \; >> KNOPPIX/md5sums
mkisofs -pad -l -r -J -v -V "KNOPPIX" -b KNOPPIX/boot.img \
-c KNOPPIX/boot.cat -hide-rr-moved -o $TARGET/knoppix.iso $MASTER

The following script will loop-mount boot floppy image and initrd image for modification. The umount function will build a new initrd image and put it back on the boot floppy image.

The script has last been tried out on Debian sid on 2004-01-13.

#!/bin/bash -x
# This script will loop-mount boot floppy and initrd image
# Copyright (C) 2004 by Marc Haber <mh+knoppix-remaster@zugschlus.de>
# License: GPL V2
unset CDPATH || true

# if not root, re-invoke self as root
if "`id -u`" -ne 0 ; then
export LOCUSER="$USER"
export LOCHOME="$HOME"
if [[ "${SHELLOPTS/xtrace/}" != "$SHELLOPTS" ]]; then
sudo bash -x $0 $@
exit $?
else
sudo $0 $@
exit $?
fi
else
LOCUSER="${LOCUSER:-$USER}"
LOCHOME="${LOCHOME:-$HOME}"
fi
set -e

KNOPPIXDIR="KNOPPIX"
BOOTIMGFILE="$KNOPPIXDIR/boot.img"
BOOTIMGFS="vfat"
BOOTIMGDIR="boot.img"
INITRDGZ="$BOOTIMGDIR/miniroot.gz"
INITRDFILE="$KNOPPIXDIR/miniroot"
INITRDFS="ext2"
INITRDDIR="miniroot"

mountbootimage() {
if ! modprobe loop; then
echo >&2 "ERR: cannot load loop module"
exit 1
fi

if ! -e "$BOOTIMGFILE" ; then
echo >&2 "ERR: no $BOOTIMGFILE found"
exit 1
fi

for nofile in $BOOTIMGDIR $INITRDGZ $INITRDFILE $INITRDDIR; do
if -e "$nofile" ; then
echo >&2 "ERR: $nofile already exists"
exit 1
fi
done

mkdir -p $BOOTIMGDIR
mount -o loop,uid=$LOCUSER -t $BOOTIMGFS $BOOTIMGFILE $BOOTIMGDIR

< $INITRDGZ gunzip > $INITRDFILE
mkdir -p $INITRDDIR
mount -o loop -t $INITRDFS $INITRDFILE $INITRDDIR
}

umountbootimage() {
dd if=/dev/zero of=$INITRDDIR/nullfile || true
sync
rm $INITRDDIR/nullfile
umount $INITRDDIR
rmdir $INITRDDIR
< $INITRDFILE gzip --best > $INITRDGZ
rm -f $INITRDFILE

umount $BOOTIMGDIR
rmdir $BOOTIMGDIR

syslinux KNOPPIX/boot.img
}

case "`basename $0`" in
mountbootimage)
mountbootimage
;;
umountbootimage)
umountbootimage
;;
*)
echo >&2 "ERR: called with unknown name `basename $0`"
exit 1
;;
esac

Tips around apt-get to install/update/remove applications

(by gnarvaja)

  • If you booted from CD, even on a HD install (example: Pivot Install) instead of copying the original CD and KNOPPIX directory to the HD, you can use them directly from their mount points.
  • Another alternative is to mount an ISO image of the original CD as a loop device and mount the KNOPPIX image as a cloop device. You will save close to 2GB of space. Script to mount from an ISO image:
#!/bin/bash
# Assumes that the current directory is the working space
# original.iso is an image of the CD we will be using as master
mount -t iso9660 original.iso ./oldcd -o ro,loop
# initialize the compressed loop device
losetup /dev/cloop1 ./oldcd/KNOPPIX/KNOPPIX
mount -t iso9660 /dev/cloop1 ./KNOPPIX -o ro,loop
  • Get apt-spy and use it to modify the sources.list file with the best mirrors for your particular region. This will speed up the downloading. Backup the original sources.list just in case.
  • Another technique is to modify sources.list. Replace the string .de. in the ftp addresses (ftp.de.debian.org) with the code corresponding to your country. Examples: USA -> .us. (ftp.us.debian.org), Brazil -> .br. (ftp.br.debian.org). Check the Debian site for debian.org mirrors in your country.
  • Remember to uncomment the linuxtag ftp addresses to get the latest and greatest from Knoppix
  • Use apt-get update to get the lists with the latest releases and patches. Do not update a package if you don't need to, it may lead to the use of additional disk space (precious commodity when you want to keep everything below 700MB) and you may brake something else without knowing. Abuse the -s option to simulate the installation.
  • Before doing the update, I modified my default releases to testing, that means that the software I'll be using will have a good balance of stability and features. Knoppix uses unstableby default, which is too risky for my personal taste.
  • Get [apt-get install] locale and configure it with the locales you are going to use. It will save lots of space when downloading applications with plenty of locale modules and localized manual pages.
  • I use aptitude to get/remove applications, it is character based so it works with init 2. As you mark packages for install/update/removal, it will tell you how much disk space you will save/use, try to solve depencies problems and give you plenty control to fix them manually when possible.
  • When installing applications it is likely that your /etc/rc?.d directories will have new entries, many of them unwanted or unplanned. Make sure you check them and remove the new entries based on your preferences. I usually leave /etc/rc2.d and /etc/rc5.d as close as the originals as possible and modify /etc/rc3.d and /etc/rc4.d to test new stuff. Example: You may want to have ntfs installed, but not necessarily running by default. Same with apache, mysql and many others.
  • When removing/purging applications, they may leave behind non-empty directories. Usually this is announced by aptitude, apt-get or any other installation utilty. Make sure to check the messages and manually remove those directories.
  • After you are done, aptitude may leave some files behind. Here's a clean up script I use:
# !/bin/bash
# Clean package files generated by aptitude
rm /var/log/aptitude
rm /var/lib/apt/lists/*debian*
rm /var/lib/apt/lists/*knoppix*

Common Problems

  • You've startx'd (into whatever window manager you like) and you start a terminal (gnome-terminal, konsole, xterm). Nothing happens (such is the case in fluxbox, and you'll see an error in you ~/.xsession-errors file). Or perhaps the error is helpfully displayed:
get_pty: not enough ptys

I had plenty yesterday... but then I chrooted so, to solve this,

# NOT in your chroot environment
cd /media/sda1/knx/source/KNOPPIX/dev
MAKEDEV pty
# enter your chroot environment
chroot /media/sda1/knx/source/KNOPPIX/
# and mount /dev/pts
mount -t devpts /dev/pts/ /dev/pts

it might give that same "fstab not found" error as mounting proc does. so do what you'd do then, disregard.

start your X up again and try your terminal, should work. thanks to: technovelty[7] for the final enlightenment

See also

If my howto is too confusing, or you'd like a second opinion, check out charan's very nice remastering howto: http://brainstorms.in/?page_id=84 Another Howto is athttp://www.stirnimann.com/mystuff/doc/knoppix.txt

There is a wizard, which knows all the unpacking, compressing and CD-recording steps mentioned here. It also shows a shell where you can update the uncompressed KNOPPIX system using debian's standard software installation tools. It is called mmkcdrom and part of the plugscript package. In the past, that was hosted at http://rcswww.urz.tu-dresden.de/~holzhey/plugscript but that appears to no longer be available.

Yet another HOWTO, for shell freaks, is at http://quozl.linux.org.au/knoppix/

Be sure to check out the Knoppix Customization Forum for ideas and help with remastering.

Conclusion

Thats it. This is an updated version of my previous howto. This is not meant for linux beginners, you will need to know your way around linux to get this to work. I'll update this as corrections/improvements/etc come through.

Thanks

Thanks to aay, charan, Tech2k, and #knoppix for some corrections and tips and ideas. Feel free to edit or add to this howto. Note about swap:


Comments