Knoppix Remastering Howto Brazilian Portuguese
Este guia mostrará a você como remasterizar o Knoppix a partir do Live-CD original em inglês. Isto significa que muitas configurações precisarão ser feitas para deixar o sistema do jeito que você quer.
Se quiser evitar muito trabalho na remasterização (tal como adicionar ou remover programas), você pode começar a partir de uma versão customizada do Knoppix. Se for assim, consulte Knoppix Customizations, que trata de diversas distribuições adaptadas baseadas no Knoppix.
Observações:
- Este guia é uma tradução livre do texto original. Algumas observações foram acrescentadas a fim de esclarecer certos pontos "obscuros" ou citar experiências pessoais.
- Os comandos de terminal mostrados neste texto devem ser digitados em uma única linha, isto é, não pode haver quebras de linha.
- Se você tem algum comentário/sugestão, por favor, utilize a ferramenta Discussion.
- Se deseja criar um kernel personalizado, consulte Knoppix Custom Kernel Howto.
- Existe também um guia sobre este mesmo assunto em O'Reilly: Using and Customizing Knoppix.
Contents
- 1 Requisitos do Sistema
- 2 Instruções
- 3 Trabalhando dentro do ambiente como "chroot"
- 3.1 Acesso à Internet
- 3.2 Acesso ao SAMBA
- 3.3 Configurações do APT
- 3.4 Configurações de Usuário
- 3.5 Sair do "chroot"
- 3.6 Autoexecutando Programas
- 3.7 Editing the KNOPPIX auto-configuration script
- 3.8 X Session Configuration
- 3.9 Changing the boot graphic, boot message, and startup script text
- 3.10 Launching KDE to Change Menus, Icons, etc.
- 3.11 Leaving the Chroot
- 3.12 Remastering the ISO
- 4 Tips
- 5 Common Problems
- 6 See also
- 7 Conclusion
- 8 Thanks
- 9 Translations
Requisitos do Sistema
- CD-ISO
- 3 GB livres numa partição de disco formatada com sistema de arquivos Linux (ext2, ext3, reiserfs, xfs, etc.)
- DVD-ISO
- 5 GB livres de espaço de RAM+swap (para um DVD completo)
- 15 GB livres numa partição de disco formatada com sistema de arquivos Linux (ext2, ext3, reiserfs, xfs, etc.)
Instruções
Preparando a Remasterização
- Inicialize o computador a partir do CD do Knoppix
- Abra um "shell" como "root": KMenu => Knoppix => Root Shell
- Nota: Todos os comandos seguintes são executados dentro deste "shell" como "root".
- Configure sua conexão com a Internet (você precisará disto mais tarde).
- Nota 1: Se você usa DHCP, pode ser que a conexão já esteja configurada.
- Nota 2: Execute ifconfig para checar as configurações.
- Defina a partição que você utilizará no trabalho. Neste guia, ela será chamada de hda1. A partição deverá ter um mínimo de 3 GB de espaço livre.
- Monte a partição:
mount -rw /dev/hda1 /mnt/hda1
- Nota: O parâmetro -rw serve para habilitar a partição para leitura e escrita. Isso é importante, pois do contrário o comando chroot dará erros. Utilize o comando mount sem nenhum parâmetro para verificar essa habilitação.
- Crie um diretório-raiz para trabalhar nele:
mkdir /mnt/hda1/knx
- Nota: Se você puser todos os seus arquivos aqui será mais fácil fazer limpeza depois.
- Se você não tem RAM de 1 GB (verifique com egrep (MemTotal|SwapTotal) /proc/meminfo(=RAM+swap) ou cat /proc/meminfo (=RAM+swap)), então você precisará de um arquivo de trocas ("swap"):
cd /mnt/hda1/knx dd if=/dev/zero of=swapfile bs=1M count=750 mkswap swapfile swapon swapfile
- Crie outros dois diretórios, um para seu novo CD mestre e outro para a fonte, na partição de trabalho. Crie também subdiretórios chamados "KNOPPIX" dentro de cada um:
mkdir -p /mnt/hda1/knx/master/KNOPPIX
- Agora, copie os arquivos de "/KNOPPIX" para o diretório-fonte:
cp -Rp /KNOPPIX/* /mnt/hda1/knx/source/KNOPPIX
- Nota: Isto vai demorar muito, pois estamos copiando 2 GB.
- Aviso: Para fazer a cópia mais rápido, poderíamos utilizar o comando unionfs. Porém, a partir do Knoppix 4.0.2 há um erro no unionfs, o que impede a sua utilização. É melhor utilizar o comando cp mesmo.
- Adicionalmente, copie o diretório "boot" do CD:
cp -ar /cdrom/boot /mnt/hda1/knx/master/boot
- Nota: Você precisará destes arquivos para construir o arquivo ISO mais tarde.
- Para o Knoppix 5.0.1. você também deve copiar o diretório "modules":
cp -ar /cdrom/KNOPPIX/modules /mnt/hda1/knx/master/KNOPPIX/.
- Copie a página HTML principal para funcionar como página inicial:
cp /cdrom/index.html /mnt/hda1/knx/master/
- Copie todos os arquivos necessários, exceto o arquivo KNOPPIX (que tem cerca de 700 MB):
- Para Knoppix < 3.4:
cd /cdrom/KNOPPIX && find . -size -10000k -type f -exec cp -p --parents '{}' /mnt/hda1/knx/master/KNOPPIX/ \;
- Para Knoppix >= 3.4:
cd /cdrom && find . -size -10000k -type f -exec cp -p --parents '{}' /mnt/hda1/knx/master/ \;
- Nota: Para a versão em DVD, você terá de usar -size -15000k e copiar o diretório KNOPPIX2 assim: cp /cdrom/KNOPPIX/KNOPPIX2 /mnt/hda1/knx/master/KNOPPIX/
- Prepando o ambiente para o comando chroot:
mount --bind /dev /mnt/hda1/knx/source/KNOPPIX/dev
- Agora, você pode entrar como "chroot" dentro do diretório KNOPPIX copiado na partição (isto é, tornar o diretório "knx/source/KNOPPIX" a partição "root" do novo sistema):
chroot /mnt/hda1/knx/source/KNOPPIX
- Se você obtiver erros relativos a /dev/null aos montes, consulte a sessão common problems.
Neste ponto, você estará como "chroot". Portanto, o "/" é realmente "/mnt/hda1/knx/source/KNOPPIX".
Trabalhando dentro do ambiente como "chroot"
Lembre-se de que qualquer coisa que você faça ou crie no ambiente como "chroot" será "queimado" no CD. Se você faz alguma alteração (por exemplo, configurações no APT, no proxy, etc.), tome nota destas coisas para conseguir desfazer as mudanças antes da remasterização.
Acesso à Internet
Para usar a Internet você precisa editar o arquivo "/etc/resolv.conf" para adicionar o nome do servidor (ou saia do modo "chroot" e copie o arquivo "resolv.conf" exterior para o diretório de trabalho:
cp /etc/dhcpc/resolv.conf /mnt/hda1/knx/source/KNOPPIX/etc/dhcpc/resolv.conf
A configuração de proxy pode ser exportada com
export http_proxy=http://your.proxy.com:<porta-proxy>
Para confirmar a conexão com a Internet dentro do ambiente "chroot", teste algo como
ping google.com
Se o ICMP for barrado em algum firewall ou semelhante, tente
lynx http://www.google.com
e verifique se obtém a página após permitir "cookies".
Acesso ao SAMBA
Se deseja suporte ao serviço "smbd", altere o grupo de trabalho no arquivo "smb.conf" para o grupo de trabalho da rede local Windows. No caso do Windows XP, o padrão é "MSHOME".
Configurações do APT
Atualize a lista de pacotes do APT com "apt-get update".
- Nota: Se o comando "apt-get update" resultar no erro "FATAL -> Could not set non-blocking flag Bad file descriptor", você precisará se certificar de que seu ambiente "chroot" está montado sem a opção "nodev". Consulte o item sobre erros no "/dev/null" quando entra com ambiente "chroot" pela primeira vez.
- Aviso: O comando "apt-get upgrade<
- Nota: Se o "<tt>apt-get" resultar no erro "Dynamic NMap ran out of room", você pode tentar o seguinte truque, que já resolveu o problema em alguma situação:
echo 'APT::Cache-Limit "25168524";'>> /etc/apt/apt.conf
- Nota: Isso foi feito como "chroot" conforme descrito acima.
Antes de poder adicionar programas, você provavelmente precisará remover alguns pacotes. Para obter uma lista de pacotes instalados, tecle isto:
dpkg-query -l
Se você está procurando por pacotes instalados pelo tamanho, para identificar os que ocupam mais espaço, então utilize o comando a seguir, que vai listar os pacotes em ordem decrescente de tamanho:
dpkg-awk "Status: .* installed$" -- Package Installed-Size | \ awk '{print $2}' | egrep -v '^$' | xargs -n2 echo | \ perl -pe 's/(\S+)\s(\S+)/$2 $1/' | sort -rg
O comando a seguir é, pelo menos, dez vezes mais rápido:
dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -n
e você não precisa de "dpkg-awk" ou "awk" ou "perl"; entretanto, ele não exclui pacotes que não estejam instalados. Se você tiver problemas com o comando "sort" acima, tente usar "KPackage", expandido em todas as árvores e ordenado pela coluna de tamanho para encontrar os maiores pacotes.
Ou, você poderia usar este comando para obter velocidade no comando "dpkg-query" com os pacotes não-instalados que não forem listados:
dpkg-query -W --showformat='${Installed-Size} ${Package} ${Status}\n' | grep -v deinstall | sort -n | awk '{print $1" "$2}'
Ele faz a mesma coisa anterior, para os que não têm o "dpkg-awk".
Para remover um pacote (e todos os pacotes dependentes dele), tecle isto:
apt-get remove --purge name-of-package-to-remove
Para verificar se há pacotes órfãos, tecle isto:
deborphan
Se quer salvar mais espaço retirando os pacotes órfãos irritantes {?}(que crueldade!){?}, tecle isto (Cuidado: O "yes/no" não não aparecerá para confirmar a remoção destes pacotes. Quando você pressionar Enter depois deste comando, os pacotes terão desaparecido!):
deborphan | xargs apt-get -y remove
Se você não está seguro sobre o comando anterior e quer ver o que acontecerá sem fazer nenhuma mudança, simplesmente adicione a opção "-s" ao comando "apt-get" como isto (você pode fazer isto com todos os comandos "apt-get", e é um bom hábito usar esta opção antes de operações em massa como esta):
deborphan | xargs apt-get -s -y remove
Agora, a parte boa. Se você deseja adicionar um pacote, tecle isto:
apt-get install 'name-of-package-to-install
Então não sabe que pacotes instalar? Tecle isto:
apt-cache search .* | sort | less
Quando a lista aparecer, você pode examiná-la (mais de 13 mil linhas!) ou procurar por textos usando o comando "/": /texto-a-procurar.
Quando você terminar de remover e adicionar pacotes, uma boa maneira de limpar tudo é teclando isto:
COLUMNS=200 dpkg -l |grep ^rc |awk '{print $2} ' | xargs dpkg -P
Também, dado que o sistema de pacotes do Debian guarda em "cachê" os pacotes baixados, você pode querer fazer a seguinte limpeza daqueles arquivos inúteis:
apt-get clean
Configurações de Usuário
As configurações de usuário estão em "/etc/skel. Este diretório será copiado para fazer os diretórios "home" dos novos usuários.
- Dica: Não coloque arquivos em "/root" pois eles serão somente disponíveis (em tempo de execução) em "/KNOPPIX/root".
Observe que o usuário padrão "knoppix" não é criado com "adduser(1)", logo o diretório "/etc/skel" não é completamente copiado, mas seletivamente. Isto é, para fazer um arquivo ".xyrc" aparecer em "/home/knoppix" não é suficiente colocá-lo em "/etc/skel". Uma possibilidade é estender o código em "/etc/X11/Xsession.d/45xsession" o qual é responsável por preencher o diretório "/home/knoppix".
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.
Sair do "chroot"
{?}Isto estava na tradução do espanhol -- deve-se verificar a necessidade{?} Desmonte "/proc" -- isto é muito importante!
umount /proc
Pressione Ctrl+D para voltar à raiz original (ou seja, sair de "chroot").
Autoexecutando Programas
Quando você quer autoexecutar alguns programas, pode-se criar um script e pô-lo no diretório "/etc/rc5.d/", que executa itens antes de o ambiente X ser carregado. Pesquise o processo "init" para mais possibilidades.
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
The auto-configuration script sets the default KDE background image to be an image from the CD-ROM. An image that you can easily change when you are remastering KNOPPIX.
- In KNOPPIX 3.3 and below it is /cdrom/KNOPPIX/background.gif
- In KNOPPIX 3.4 and above it is /cdrom/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.
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 can be changed.
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.
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.
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
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.
- Change to the /mnt/hda1/knx/master/boot directory. Swap '/mnt/hda1/' for whatever disk you are using.
-
cd /mnt/hda1/knx/master/boot/isolinux
-
- Back up your old logo in case you break things.
-
mv logo.16 logo.16.backup
-
- 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 conver the graphic to 16 colors before doing the next step.
- Convert the GIF to lss16 using the tools included on the Knoppix CD.
-
giftopnm < 640x400x16.gif > logo.ppm
-
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 singly line of text that is no larger than the default one is a good idea.
- Change to the /mnt/hda1/knx/master/boot directory. Swap '/mnt/hda1/' for whatever disk you are using.
-
cd /mnt/hda1/knx/master/boot
-
- Back up your old message in case you break things.
-
cp boot.msg boot.msg.backup
-
- 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.
- Change to the /mnt/hda1/knx/master/boot directory. Swap '/mnt/hda1/' for whatever disk you are using.
-
cd /mnt/hda1/knx/master/boot
-
- Back up your old minirt.gz in case you break things.
-
cp minirt.gz minirt.gz.backup
-
- Uncompress minirt.gz
-
gunzip minirt.gz
-
- Make a temporary directory to mount the minirt filesystem.
-
mkdir todelete
-
- Mount the minirt filesystem as an ext2 filesystem.
-
mount minirt todelete -t ext2 -o=/dev/loop0
-
- 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
-
- unmount the minirt filesystem.
-
umount todelete
-
- Compress the minirt filesystem.
-
gzip -9 minirt
-
- Remove your temporary directory.
-
rmdir todelete
-
Launching KDE to Change Menus, Icons, etc.
While you are in the chroot environment you can load KDE and use the configuration tools to change buttons, icons, etc. Once you are finished you can exit KDE and copy /home/knoppix to /etc/skel to keep these changes. To load KDE do the following.
- If you are not at runlevel 2 (i.e. if you are already in KDE), switch to runlevel 2.
-
init 2
-
- Copy /etc/skel to /home/knoppix
-
cp -Rp /etc/skel /home/knoppix
-
- Change permissions to the user 'knoppix'
-
chown knoppix:knoppix -R /home/knoppix
-
- 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 /mnt/hda1/knx/source/KNOPPIX/etc/X11
-
Knoppix 3.7: I think it's XF86Config-4 rather than xorg.conf.
- (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
-
- Launch KDE
-
startx
-
- Do your KDE changes
- Exit KDE
- (Optional - do this step only if you did step #5) Exit su and switch back to user 'root'.
-
exit
-
- Copy /home/knoppix back to /etc/skel to keep the changes
-
mv /etc/skel /etc/skel-old
-
- Set the owner back to root
-
chown root:root -R /etc/skel
-
- Remove the xorg.conf file
-
rm /etc/X11/xorg.conf
-
Changing the ksplash KDE graphics
You can change the graphics that KDE shows via ksplash when it first loads. These graphics are in the /mnt/hda1/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.
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
-
rm -rf /mnt/hda1/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 "KNOPPIX.net filesystem" -publisher "KNOPPIX www.knoppix.net" \ -hide-rr-moved -cache-inodes -no-bak -pad /mnt/hda1/knx/source/KNOPPIX \ | nice -5 /usr/bin/create_compressed_fs - 65536 > /mnt/hda1/knx/master/KNOPPIX/KNOPPIX
the "www.knoppix.net" and "Knoppix.net filesystem" can be changed to what you want to call the file. You will get an error that it doesn't conform to ISO standards -- you can ignore this. Note that, to run create_compressed_fs, you'll need to have enough space to store the entire ISO in RAM/swap. Ensure you have at least 800M of free space before starting.
In Knoppix 3.4 the create_compressed_fs script has been updated so be sure to use it to obtain the best result. It has a new option -b (best), which enables the best compression by using different compression schemes and tries to optimize that way, but be careful, because that option is slow (10x slower).
Note: The above didn't work for me using the latest create_compressed_fs. I could create the ISO but it couldn't read the compressed image properly when booting (I/O errors when reading the cloop0 device). I think this was because create_compressed_fs didn't have enough RAM and it was just failing silently. The command below did work though. It uses a file rather than memory for temporary storage:
mkisofs -R -U -V "KNOPPIX.net filesystem" -publisher "KNOPPIX www.knoppix.net" \ -hide-rr-moved -cache-inodes -no-bak -pad /mnt/hda1/knx/source/KNOPPIX \ | nice -5 /usr/bin/create_compressed_fs -B \ 65536 -f /mnt/sda1/isotemp - /mnt/hda1/knx/master/KNOPPIX/KNOPPIX
Live CD ISO
If all went well, onto making the final CD-ROM Image:
cd /mnt/hda1/knx/master find -type f -not -name md5sums -not -name boot.cat -not -name isolinux.bin \ -exec md5sum '{}' \; > KNOPPIX/md5sums
(this will update the md5 hashes of the files included in the ISO, used for integrity checking) Now to burn the image; for Knoppix <= 3.3:
mkisofs -pad -l -r -J -v -V "KNOPPIX" -b KNOPPIX/boot.img -c KNOPPIX/boot.cat \ -hide-rr-moved -o /mnt/hda1/knx/knoppix.iso /mnt/hda1/knx/master
for Knoppix >= 3.4 or other isolinux based distributions:
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 /mnt/hda1/knx/knoppix.iso /mnt/hda1/knx/master
(the ISO is stored in /mnt/hda1/knx/knoppix.iso)
Burn the ISO using your favorite tools, and you're ready!
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) 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 /mnt/hda1/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 unstable by 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
- /dev/null: Permission Denied Chroot problems accessing device files
- 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 chroot
ed so, to solve this,
# NOT in your chroot environment cd /mnt/hda1/knx/source/KNOPPIX/dev MAKEDEV pty
# enter your chroot environment chroot /mnt/hda1/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://gnubox.dyndns.org:8080/~sunil/knoppix.php. Another Howto is at http://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: [8]
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.
- If you want to add a custom kernel, check out the Knoppix Custom Kernel Howto
- There also a guide at O'Reilly on the same topic : Using and Customizing Knoppix
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:
Translations
- German Version: Knoppix Remastering Howto Deutsch
- Spanish Version: Knoppix Remastering Howto Spanish en español
- French Version: Knoppix Remastering Howto French
- Indonesian Version: Knoppix Remastering Howto Indonesian
- Russian Version: Knoppix Remastering Howto Russian