User:Ml


From Knoppix Documentation Wiki
Jump to: navigation, search

cdarboceltol i worked on a customized knoppix cd, based on knoppix 4.0.2. I'm posting my changes here in case they might be of use to others.


grub gfx boot

i wanted the cd to boot using grub instead of isolinux (can be used for repairs/diagnostics). morphix and kanotix are both using a cute graphic grub menu, which gives easy access to various knoppix cheatcodes, documentation etc. This one's based on morphix, with slight ui changes (added dvorak keyboard layout, kept only french and english languages, updated doc and menus)

http://matthieu.lucotte.free.fr/myknoppix/gfxboot/grub_gfx_sml.png To try the bootloader in qemu, download gfxboot.iso.bz2, extract it and run
qemu -cdrom gfxboot.iso

grub files need to be setup under boot/grub on the knoppix cd.

note: remember to make final iso image with :

mkisofs -pad -l -f -r -J -V "MYKNOPPIX" -b boot/grub/iso9660_stage1_5 -c boot/grub/boot.cat -o
../myknoppix.iso -no-emul-boot -boot-load-size 1 -boot-info-table  knoppix_iso_directory

boot/grub/message is a cpio archive which controls the ui. to recreate it you need the tools from gfxboot_2.4.orig.tar.gz.

Then you can use gfxboot-grub-0.1_my.tgz to recreate message (based on morphix-iso-grubtheme_0.1-2.tar.gz)

dev setup

i wanted an easy way to test the remastered version from hd without having to reboot or create an iso each time, so i had another machine boot from the network just like knoppix terminal server, except with the current state of my remastered version.

i got tired of having 2 different miniroots (one for the cd, one for netboot) so i merged the 2 together (of course, the actual netboot miniroot still needs the right network modules added to it to work, but that's the only difference)

Also, knoppix terminal server still required a KNOPPIX cloop file, which i didn't want to create each time, so i added a "nocloop" cheatcode to use the raw files instead.

There are issues when using nfs + unionfs directly (which normally don't occur in knoppix terminal server since it's nfs + cloop + unionfs - note: "nfsro" unionfs mount option seems to fix it, but shouldn't be needed), so i ended up putting the remastered files in an ext2 filesystem in a loop file (knoppix_loop) and accessing that from the diskless client.

note: the netboot client still uses pxelinux - grub's network stuff didn't work for me

Example setup

for reference, here's my setup using nbd (nfs would work fine as well)

  • /etc/dhcp3/dhcpd.conf (the etherboot image didn't work for me, fortunately etherboot supports pxe as well, so it works with both pxe and etherboot clients)
# dhcpd.conf for KNOPPIX terminalserver

# global settings
allow booting;
allow bootp;
default-lease-time 600;
max-lease-time 7200;

subnet 10.0.0.0 netmask 255.0.0.0 {
  next-server 10.0.0.101;
#  if substring (option vendor-class-identifier, 0, 9) = "Etherboot" { filename "etherboot.nbi"; }
#  else { filename "pxelinux.0"; }
  filename "pxelinux.0";
  option subnet-mask 255.0.0.0;
  range 10.0.0.201 10.0.0.250;
  option domain-name-servers  10.0.0.138;
  option routers  10.0.0.138;
}
  • /etc/nbd-server
NBD_PORT[0]=1234
NBD_FILE[0]=/mnt/space/samba/share/isos/knoppix_loop
NBD_SERVER_OPTS[0]=-r
  • add to /etc/inetd.conf
tftp            dgram   udp     wait    root    /usr/sbin/in.tftpd      in.tftpd -v -s /tftpboot
  • tftpboot/pxelinux.cfg/default:
DEFAULT vmlinuz
APPEND nocloop nbdhost=10.0.0.101 nbdport=1234 nodhcp lang=us ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=791 initrd=miniroot.gz quiet BOOT_IMAGE=knoppix keyboard=dvorak xkeyboard=dvorak
TIMEOUT 300

PROMPT 1
DISPLAY boot.msg
LABEL knoppix
KERNEL vmlinuz
APPEND nocloop nbdhost=10.0.0.101 nbdport=1234 nodhcp lang=us ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=791 initrd=miniroot.gz quiet BOOT_IMAGE=knoppix keyboard=dvorak xkeyboard=dvorak
LABEL normal
KERNEL vmlinuz
APPEND nocloop nbdhost=10.0.0.101 nbdport=1234 nodhcp lang=us ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=791 initrd=miniroot.gz quiet BOOT_IMAGE=knoppix
LABEL debug
KERNEL vmlinuz
APPEND nocloop nbdhost=10.0.0.101 nbdport=1234 nodhcp lang=us ramdisk_size=100000 init=/etc/init apm=power-off vga=normal initrd=miniroot.gz debug BOOT_IMAGE=debug keyboard=dvorak xkeyboard=dvorak
LABEL knoppix-txt
KERNEL vmlinuz
APPEND nocloop nbdhost=10.0.0.101 nbdport=1234 nodhcp lang=us ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=miniroot.gz BOOT_IMAGE=knoppix keyboard=dvorak xkeyboard=dvorak
LABEL expert
KERNEL vmlinuz
APPEND nocloop nbdhost=10.0.0.101 nbdport=1234 nodhcp lang=us ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=791 BOOT_IMAGE=expert initrd=miniroot.gz keyboard=dvorak xkeyboard=dvorak
LABEL fb1024x768
KERNEL vmlinuz
APPEND nocloop nbdhost=10.0.0.101 nbdport=1234 nodhcp lang=us ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=791 xmodule=fbdev initrd=miniroot.gz BOOT_IMAGE=knoppix keyboard=dvorak xkeyboard=dvorak
LABEL fb800x600
KERNEL vmlinuz
APPEND nocloop nbdhost=10.0.0.101 nbdport=1234 nodhcp lang=us ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=788 xmodule=fbdev initrd=miniroot.gz BOOT_IMAGE=knoppix keyboard=dvorak xkeyboard=dvorak
  • note: make sure you have the right network drivers inside miniroot.gz and the ips above are correct.

miniroot changes

i also wanted a way to boot from an iso image on the hd, without needing the physical cd at all (i have a notebook without cd drive, hence "bootfrom" cheatcode wouldn't work there). so i added a "fromiso" cheatcode, and direct support for reiserfs, ntfs and ext3 (i don't mind having a bigger miniroot)

lastly i merged changes from accelerated knoppix, see next section for that.

download new miniroot: miniroot.gz

linuxrc: new original diffs

warning: /home lives in unionfs in my version, not in ramdisk as in knoppix 4.0.2 (ie /home/knoppix already exists in the cloop image). If you don't want that, you should undo these diffs in linuxrc:

-mkdir -p /ramdisk/tmp /ramdisk/home/knoppix && chmod 1777 /ramdisk/tmp && chown knoppix.knoppix /ramdisk/home/knoppix && ln -snf /ramdisk/home /home && mv /tmp /tmp.old && ln -s /ramdisk/tmp /tmp && rm -rf /tmp.old
+mkdir -p /ramdisk/tmp && chmod 1777 /ramdisk/tmp && mv /tmp /tmp.old && ln -s /ramdisk/tmp /tmp && rm -rf /tmp.old
-   test "$i" = "home" -o "$i" = "tmp" && continue
+   test "$i" = "tmp" && continue

new cheatcodes documentation

* Alternative boot methods (ie not booting from cd).
Useful for testing while remastering knoppix.

knoppix nbdhost=10.0.0.1            mount filesystem on network block device
        nbdport=1234                (nbd) served by specified host.
knoppix nfsdir=10.0.0.1:/knoppix    mount nfs directory                  (*)
nodhcp                              don't ask for ip (diskless clients)  (*)
knoppix fromiso=/dir/file.iso	    boot from iso directly. doesn't need cd
                                    as bootfrom cheatcode.
knoppix nocloop                     don't mount a KNOPPIX cloop image. other
                                    cheatcodes determine directory to use
				    as /KNOPPIX
knoppix loopfile=/dir/image         mount filesystem on specified file
                                    (implies nocloop)

(*) : same cheatcodes as available on knoppix-terminal-server clients.


Examples
========

Boot from knoppix iso on hd:
(the whole cd iso, not the KNOPPIX cloop file - compare with just fromhd=...)
  knoppix fromhd=/dev/hda4 fromiso=/share/isos/knoppix_402.iso

Boot from ext2 filesystem in loop file /knoppix_loop on hd partition /dev/hda4:
  knoppix fromhd=/dev/hda4 loopfile=/knoppix_loop 

Boot from nfs on 10.0.0.101 serving content of knoppix cd (same as knoppix
terminal server):
  knoppix nfsdir=10.0.0.101:/mnt/tmp nodhcp 

Boot from nbd on 10.0.0.101 port 1234 serving same /knoppix_loop fileas above:
  knoppix nocloop nbdhost=10.0.0.101 nbdport=1234 nodhcp


Filesystems
===========

The cd's initrd image supports the following filesystems
  iso9660 reiserfs ext3 ext2 ntfs vfat
(original one only supports iso9660 ext2 vfat, so can't use fromhd on ntfs
for example. bootfrom has to be used instead, but requires the cd...)

Poor man's install, grub and ntfs

Let's say we have a windows only pc, with just one ntfs partition. We want a way to copy the cd to the hd so we don't need the cd anymore (poor man's install).

We'll install grub on hd so we don't even rely on the cd for booting. Except for that, we want minimal changes done to the machine. especially, no repartitioning.

  • First, we need a version of grub that can read ntfs, since that's the only place we can install it. From windows, install wingrub using the boot.ini method.
  • grub will look for things in C:/boot/grub. If there's a C:/grub instead, create boot directory and move it there.
  • copy boot/vmlinuz and boot/miniroot.gz from knoppix cd to C:/boot/knoppix/
  • copy cd's KNOPPIX/ directory to C:/
  • edit C:/boot/grub/menu.lst :
title           Windows
rootnoverify    (hd0,0)
makeactive
chainloader     +1

title           My Knoppix
root            (hd0,0)
kernel          /boot/knoppix/vmlinuz fromhd lang=us ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=791 quiet BOOT_IMAGE=knoppix dma
initrd          /boot/knoppix/miniroot.gz
  • If you don't want to install grub on the mbr stop here, otherwise go on.
  • In wingrub make sure you do the base install.
  • reboot, ntldr menu lets you choose between windows and grub. choose grub.
  • press ESC or c to go to command line. type
 root (hd0,0)
 setup (hd0) 

grub is now installed in mbr.

  • reboot under windows this time, rerun wingrub. uninstall grub from boot.ini

accelerated knoppix

The guys at http://www.alpha.co.jp/ac-knoppix/ have optimized the knoppix cd layout and boot process so it boots in under 50 seconds on some pcs. the cd layout optimization is done with a profiler, and it's possible to use it to speed up apps as well.

the main documentation is in japanese (which i don't speak), so here's what i figured of the optimization process from google automatic translation ( manual and a tutorial ).

Downloads: get lcat_1.0.tar.bz2 from http://sourceforge.jp/projects/lcat/

note: knoppix-terminal-server changes:

  • build miniroot from /cdrom/boot/miniroot.gz (or prompt user) instead of building from scratch (so we reuse whatever cloop module is in there)


new cheatcodes documentation

* Accelerated Knoppix

knoppix chkblk=10000		    enable cloop profiling. profile data is
				    available in /proc/cloop/
knoppix nocbr			    don't use cloop readahead
knoppix noac45			    don't use 45xession fixes
knoppix noacka			    don't use knoppix-autoconfig fixes
knoppix noacxs			    don't use xsession fixes
knoppix noacit			    don't use inittab fixes
knoppix noac			    don't use any boot script/progs fixes

qemu

installed qemu 0.7.2 with kqemu accelerator

installed qemu gui: qemu launcher

additional scripts needed for networking :

misc

  • added "xkeyboards" cheatcode to enable overriding of additional keyboard layouts (useful in addition to "keyboard" and "xkeyboard" cheatcodes if you want complete control over which layouts are there)
  • /home on unionfs instead of ramdisk to save ram (my /home/knoppix is much bigger after i install firefox extensions etc)
  • in most scripts, replaced

CMDLINE="$(cat /proc/cmdline)" with CMDLINE=" $(cat /proc/cmdline) " to prevent bugs with keywords at the beginning/end when a leading/trailing space delimiter is looked for.

  • script changes :


/etc/init.d/knoppix-autoconfig new orig diff "xkeyboards" cheatcode, create /dev/dvd
/etc/X11/Xsession.d/45xsession new orig diff changes needed to have /home on unionfs
/usr/sbin/knoppix-terminalserver new orig diff reuse miniroot from cd instead of building new one
/usr/sbin/mkxf86config new orig diff

putting it all together

  • now you need a KNOPPIX cloop file with the above changes in KNOPPIX/. I can't distribute mine because it has copyrighted material in it, however you can create your own (these remaster notes might be of use)
  • update md5sums:
find -type f -not -name md5sums -not -name boot.cat -not -name iso9660_stage1_5 -exec md5sum '{}' \; > KNOPPIX/md5sums
  • make final iso image with :
mkisofs -pad -l -f -r -J -V "MYKNOPPIX" -b boot/grub/iso9660_stage1_5 -c boot/grub/boot.cat -o
../myknoppix.iso -no-emul-boot -boot-load-size 1 -boot-info-table  knoppix_iso_directory
  • (optional) accelerated knoppix profiling (see above)