Personalitzar el Knoppix Live CD - Remaster

  • warning: tempnam(): open_basedir restriction in effect. File() is not within the allowed path(s): (/srv/www/gilug.org/www/site.tree/) in /srv/www/gilug.org/www/site.tree/public/includes/file.inc on line 802.
  • warning: fopen(): Filename cannot be empty in /srv/www/gilug.org/www/site.tree/public/includes/file.inc on line 803.
  • El fitxer no s'ha pogut crear.

Personalitzar el CD Knoppix per actualitzar el programari que conté i també instal·lar drivers o utilitats que no estan inclosos en la distribució original, com el driver Nvidia, Adobe Flash per Firefox, kontact, etc...

Finalitat

Com a fan de Knoppix GNU/Linux voldria tenir el sistema actualitzat amb les últimes versions dels programes i afegir-hi també els drivers mès adequats al hardware i totes les utilitats que faig servir.

Partint del CD corresponent a la distribució Knoppix en Espanyol de Gener de 2007, l'actualitzo a la versió Debian “testing” i instal·lo els drivers Nvidia, Adobe Flash, ...

He escollit GRUB com el gestor d'arrancada perquè m'agrada com presenta la llista d'opcions i deixa triar amb les tecles del cursor, a més dona la possibilitat d'editar els paràmetres en el moment d'arrancar i inclús executar algunes ordres, en comptes de SysLinux, que porta la distribució original.

He seguit les instruccions que es troben en Knoppix Remastering Howto, afegint alguns trucs inventats per la meva part i altres extrets de fòrums.

COMPTE!!! La remasterització del Knoppix GNU/Linux és una tasca complicada, que porta molt de temps i s'ha d'executar amb molta cura. Abans de començar és molt aconsellable estudiar les opcions d'arrancada del sistema i la personalització de l'arrancada, perquè potser podem solucionar la situació sense fer tant d'enrenou.

Començar

Arranco amb el CD de Knoppix que he descarregat abans, i em disposo a copiar el sistema en un disc dur que té molt d'espai lliure (aconsellen com a mínim 3GB)

arranquem amb la consola del sistema, (amb Knoppix init 2), i usem l'usuari root (no necessitarem l'entorn gràfic, però treballar des de xconsole no crec que portés cap problema )

su

Primerament comprovo que hi ha prou memòria d'intercanvi per fer les operacions de crear la imatge comprimida, (per minimitzar les necessitats de memòria farem treballar el programa compressor sobre un fitxer del disc).

egrep "(MemTotal|SwapTotal)" /proc/meminfo

muntem la partició de disc sda5

mount -o rw /dev/sda5 /mnt/sda5

comprovem que hi ha espai

df

i fem una estructura de directoris per el nou CD Knoppix

mkdir /mnt/sda5/remaster
cd /mnt/sda5/remaster
mkdir -p /mnt/sda5/remaster/master/KNOPPIX
mkdir -p /mnt/sda5/remaster/source/KNOPPIX

copiem els fitxers del sistema

cp -Rp /KNOPPIX/* /mnt/sda5/remaster/source/KNOPPIX
cp -ar /cdrom/KNOPPIX/modules /mnt/sda5/remaster/master/KNOPPIX/.
cp /cdrom/index.html /mnt/sda5/remaster/master/
cd /cdrom && find . -size -10000k -type f -exec cp -p --parents '{}' /mnt/sda5/remaster/master/ \;

Gestor d'arrancada

vull que el gestor d'arrancada sigui GRUB, el copiaré de Debian que tinc instal·lat en el disc sda1

mount /dev/sda1 /mnt/sda1
mkdir -p /mnt/sda5/remaster/master/boot/grub
cp -ar /mnt/sda1/boot /mnt/sda5/remaster/master/boot
rm -f /mnt/sda5/remaster/master/boot/*
cp /mnt/sda1/usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grub
umount /dev/sda1
cp /cdrom/KNOPPIX/boot/isolinux/* iso/boot

hem de preparar els directoris d'arrancada i editar menu.lst segons Opcions del Kernel Knoppix, menu.lst.

Després preparem un entorn chroot per treballar amb la còpia

mount --bind /dev /mnt/sda5/remaster/source/KNOPPIX/dev
mount --bind /proc /mnt/sda5/remaster/source/KNOPPIX/proc 
chroot /mnt/sda5/remaster/source/KNOPPIX

Posem la IP del servidor de noms al resolv.conf

vi /etc/resolv.conf

Provem que fa correctament la resolució de noms

ping google.com

escrivint un fitxer preferences

vi /etc/apt/preferences

Actualitzem a versió Debian testing

apt-get update

La següent instrucció no és tant senzilla com sembla, molts paquets donen problemes perquè no troben fitxers o no encerten la manera d'arrancar i parar serveis.

apt-get upgrade

La experiència i inventiva de l'instal·lador ajuda a solucionar-los.

Personalització

Personalitzem la distribució, actualitzant Java de Sun a versió 6, posant Adobe flash i treient els locales que no farem servir

apt-get install aptitude
aptitude remove --purge sun-java5*
dpkg-reconfigure locales

Instal·lem aptitude perquè dona un bon interfase de text per gestionar els paquets i a més té una classificació de tasques que és molt útil per comprovar la coherència del sistema. Afegirem els paquets kontact flashplugin-nonfree sun-java6

aptitude install kontact flashplugin-nonfree \
   sun-java6-bin sun-java6-jdk sun-java6-jre sun-java6-plugin

Busquem i eliminem la documentació,

dpkg-query -l | grep '.-doc'
dpkg-query -l | grep '.-doc'| xargs aptitude -y remove --purge

Driver Nvidia

Volem posar el driver Nvidia, es necessita el paquet linux-headers corresponent al kernel, el trobarem en el DVD de Knoppix. Prèviament hem arrancat amb el DVD, i hem copiat el paquet, i també els mòduls i els patch del kernel. Ara instal·lem el paquet linux-headers

dpkg -i /usr/src/linux-headers-2.6.19*.deb
ln -sf /usr/src/linux-headers-2.6.19 /lib/modules/2.6.19/build
ln -sf /usr/src/linux-headers-2.6.19 /lib/modules/2.6.19/source

Descarreguem el driver de Nvidia

cd /usr/src
wget http://us.download.nvidia.com/XFree86/Linux-x86/1.0-9755/NVIDIA-Linux-x86-1.0-9755-pkg1.run

I l'instal·lem,

sh NVIDIA-Linux-x86-1.0-9755-pkg1.run -k 2.6.19

ja no necessitarem el linux-headers

apt-get remove –-purge linux-headers-2.6.19
rm -f /usr/src/linux-headers-2.6.19*.deb

Actualització del kernel

Si el nostre ordinador necessita funcionalitats especials que s'han d'incloure en el kernel, hem de recompilar-lo afegint arreglos o moduls per aquestes funcionalitats. Sinò podem anar a la secció Netejar

Posarem la última versió disponible del kernel

Preparació

En el DVD de Knoppix trobarem els mòduls i també els patch que han fet servir per el kernel original. Prèviament l'hem arrancat, i ho hem copiat. Descarreguem els fonts de Linux que necessitem des de http://www.kernel.org/pub/linux/kernel/v2.6/ , si volem la versió 2.6.19

wget http://www.fr.kernel.org/pub/linux/kernel/v2.6/linux-2.6.19.7.tar.bz2

o sinó, si voleu la 2.6.20:

wget http://www.fr.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.3.tar.bz2

Desempaquetem els fonts:

tar xjf linux-2.6.19.7.tar.bz2

Aquestes son les configuracions que he revisat per el kernel 2.6.19.7 i també per el 2.6.20.3 Guardem la que correspongui amb el nom ”.config” al directori corresponent /usr/src/linux-2.6.19.7

aptitude install dpatch patchutils

Configuració

cd /usr/src/linux-2.6.19.7

Preparem el kernel-packag

vi /etc/kernel-pkg.conf

afegim les opcions,

do_initrd=YES
config_target=menuconfig
#patch_the_kernel=AUTO

La revisem per comprovar que s'adapta al nostre equip,

make menuconfig

Guardem la configuració i sortim. Hem d'actualitzar cada mòdul addicional a la última versió disponible, alguns els podem treure de svn o cvs, altres son estàndard en Debian i podem descarregar-los amb aptitude

cd /tmp
svn checkout http://svn.madwifi.org/branches/madwifi-old-openhal madwifi
cvs -z3 -d:pserver:anonymous@aufs.cvs.sourceforge.net:/cvsroot/aufs co -P aufs
cvs -z3 -d:pserver:anonymous@rt2400.cvs.sourceforge.net:/cvsroot/rt2400 co -P rt2x00

Substituïm el codi antic per el nou.

Ara comprovem les versions disponibles per aquests mòduls:

apt-cache policy cloop-source
apt-cache policy loop-aes-source
apt-cache policy kqemu-source

i si n'hi ha de noves les descarreguem i les substituïm,

aptitude install cloop-source -t experimental
aptitude install kqemu-source/unstable
cd /usr/src
rm -Rf modules/cloop
tar xjf cloop.tar.bz2

Dintre dels patch de sistema operatiu veiem que fuse.patch no és correcte, falla a la primera compilació, tornarem a començar i deixarem fuse tal com és a l'estàndard.

Compilar

compilarem,

cd /usr/src/linux-2.6.19.7

patch -p0 -i ../kernel-patches/ksize.patch
patch -p0 -i ../kernel-patches/lhash.patch
patch -p1 -i ../kernel-patches/knoppix-kernel.patch
patch -p1 -i ../kernel-patches/dvb_patch1_5
patch -p1 -i ../kernel-patches/dvb_patch2_5
patch -p1 -i ../kernel-patches/dvb_patch3_5
patch -p1 -i ../kernel-patches/dvb_patch4_5
patch -p1 -i ../kernel-patches/dvb_patch5_5
NO patch -p1 -i ../kernel-patches/fuse*

export KPKGPARMS='--added-modules
   aufs-cvs,cloop-2.05,loop-aes,madwifi-svn,ndiswrapper-svn,rt2x00-cvs-2006103115 --initrd'

make-kpkg $KPKGPARMS debian && \
make-kpkg $KPKGPARMS clean && \
make-kpkg $KPKGPARMS kernel_image

make-kpkg $KPKGPARMS modules_clean && \
make-kpkg $KPKGPARMS modules_image

make-kpkg $KPKGPARMS kernel_headers

compilarem altres mòduls,

cd /usr/src/modules

Instal·lar

Instal·lem el nostre kernel:

dpkg -i ../*2.6.19.7*.deb
dpkg -i ../modules/*2.6.19.7*.deb
dpkg -i ../modules/*utils*.deb

Si el sistema està ben configurat, farà la instal·lació al directori /boot, i també crearà un ramdisk

Altres mòduls

Descarregarem el driver Nvidia

cd /usr/src
wget http://us.download.nvidia.com/XFree86/Linux-x86/1.0-9755/NVIDIA-Linux-x86-1.0-9755-pkg1.run

I l'instal·lem,

sh NVIDIA-Linux-x86-1.0-9755-pkg1.run -K -k 2.6.19.7

Neteja del kernel

Suprimim la versió anterior del kernel

aptitude remove --purge linux-image-2.6.19

Minirt

Hem de crear el ramdisk mini per aquest nou kernel. En comptes del minirt.gz original aconsello el minirt_511a.gz descarregat del fòrum knoppix.net , ja que porta vàries millores en els escripts d'arrancada

mkdir -p /media/sda5/remaster/minirt_511a
cd /media/sda5/remaster/minirt_511a
wget http://s94002264.onlinehome.us/grub/minirt_511a.gz
gzip -d minirt_511a.gz

el muntem en un directori,.

mkdir dir
# mount -o loop minirt_511a dir/

observem que es tracta de una imatge de format ext2fs,.

# mount
/media/sda5/remaster/minirt_511a/minirt_511a on /media/sda5/remaster/minirt_511a/dir type ext2 (rw,loop=/dev/loop1)

muntem la imatge,

mkdir -p /media/sda5/remaster/minirt
cd /media/sda5/remaster/minirt
cp -R ../minirt_511a/dir/* .
umount /media/sda5/remaster/minirt_511a/dir

Copiar els mòduls del nou kernel

#!/bin/bash
# copia-moduls.sh

uname="2.6.19.7"
for file in $( find /media/sda5/remaster/minirt/modules -type f )
do
  name=`basename $file`
  echo "$file basename $name"
  if [[ `find /mnt/sda5/remaster/source/KNOPPIX/lib/modules/$uname -type f -name $name \
    | grep $name` ]] ; then
    namefound=`find /mnt/sda5/remaster/source/KNOPPIX/lib/modules/$uname -type f -name $name`
    echo "found $name $namefound";
    cp -vf $namefound $file
  fi
done

exit 0

Comprimim el mini ramdisk

cd /media/sda5/remaster/
mkdir dir
export COUNT=$[$(du -s minirt | awk '{ print $1 }' )*2+1000]
echo $COUNT
dd if=/dev/zero of=image count=$COUNT
mke2fs -F image
mount -o loop image dir
cp -a minirt/* dir
umount dir
gzip -c image > minirt.gz

TODO: Hem de crear el ramdisk mini per aquest nou kernel

Netejar

Comprovem que no quedin llibreries que no es fan servir,

deborphan

I les borrem,

deborphan | xargs apt-get -y remove

Purguem els paquets que han estat des-instal·lats,

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

Netejem el cau dels paquets,

apt-get clean

Tornem a editar el fitxer que hem canviat,

vi /etc/resolv.conf

Purguem les llistes de paquets,

for i in /var/lib/apt/lists/*_{Release,Packages,Sources}; do >$i; \
touch -t 198103190000.00 $i; done; apt-get check 

i si hem creat o canviat altres fitxers per conseguir l'actualització, ho hem de deixar com abans,

Sortir de chroot

Sortim de l'entorn chroot

umount /dev
umount /proc
exit

Continuar netejant

Farem alguns llistats per comprovar quins fitxers hem afegit,

cd /mnt/sda5/remaster
du -a /KNOPPIX > files-KNOPPIX.txt
du -a /mnt/sda5/remaster/source/KNOPPIX > files-source.txt
cat files-KNOPPIX.txt | awk '{print $2}' | sort > files-KNOPPIX-2.txt
cat files-source.txt | sed 's/\/mnt\/sda5\/remaster\/source//' | awk '{print $2}' | sort > files-source-2.txt

Per la diferencia entre la instal·lació original i la nova trobem els noms dels fitxers nous

diff files-KNOPPIX-2.txt files-source-2.txt | grep '^>' | awk '{print $2}' > files-diff.txt

revisarem files-diff.txt deixant només els noms dels fitxers que s'han d'esborrar, com la documentació, els fitxers temporals, els de copia de seguretat, .. I ho gravarem en files-diff-delete.txt. Un cop hem fet aquesta llista, amb les ordres següents esborrarem els fitxers

cat files-diff-delete.txt | sed 's/\/KNOPPIX/\/mnt\/sda5\/remaster\/source\/KNOPPIX/' > files-diff-delete-2.txt
cat files-diff-delete-2.txt | xargs rm -vRf

Construir el CD

Preparar el gestor d'arrancada

TODO: Preparar

cp /mnt/sda5/remaster/minirt.gz /mnt/sda5/remaster/master/boot/minirt.gz
cp /mnt/sda5/remaster/source/KNOPPIX/boot/linux-2.6.19.7 /mnt/sda5/remaster/master/boot/linux

Comprimir el CD

Comprimim el nou Knoppix

mkisofs -R -l -U -V "KNOPPIX.net filesystem" -publisher "KNOPPIX www.knoppix.net"  \
  -input-charset ISO-8859-15 -allow-leading-dots -hide-rr-moved -cache-inodes -no-bak  \
   -pad /mnt/sda5/remaster/source/KNOPPIX | create_compressed_fs -B 131072 \
   -f /mnt/sda5/remaster/isotemp - /mnt/sda5/remaster/master/KNOPPIX/KNOPPIX

I farem la imatge ISO del CDROM

cd /mnt/sda5/remaster/master
find -type f -not -name md5sums -not -name boot.cat -not -name isolinux.bin \
   -exec md5sum '{}' \; > KNOPPIX/md5sums

mkisofs -R -pad -l -r -J -v -V "KNOPPIX" -no-emul-boot -boot-load-size 4 \
   -boot-info-table -b boot/grub/stage2_eltorito -c boot/grub/boot.cat \
   -hide-rr-moved -o /mnt/sda5/remaster/knoppix.iso /mnt/sda5/remaster/master

la imatge resultant és a /mnt/sda5/remaster/knoppix.iso. Grabem la imatge en un CD i ja està.

Opcions del kernel Knoppix, menu.lst

Examinant les opcions del fitxer boot/isolinux/isolinux.cfg que hi ha en el CD original es pot veure que es conserven característiques corresponents a maquinari molt antic, com per exemple la baixa resolució de pantalla a 1024x768, la incompatibilitat del DMA, o posar APM en comptes de ACPI. La meva configuració serà més actual; activarà el DMA, i altes resolucions de pantalla.
En el cas de que posem el paràmetre screen=1920x1440, no implica que el sistema engegui amb aquesta resolució sinó que configurarà la màxima resolució que permeti la pantalla.
En el paràmetre hostname posem un identificador personalitzat, per exemple el nostre nom, només pot tenir lletres de la a a la z, i guions al mitg de les lletres.

#
title Knoppix casa
  kernel /boot/linux desktop=beryl xmodule=nvidia ramdisk_size=100000 screen=1280x1024 depth=24
     hostname= elnostrenom init=/etc/init lang=ca home=scan noeject noprompt vga=791 initrd=minirt.gz loglevel=0
     quiet BOOT_IMAGE=knoppix
  initrd /boot/minirt.gz
  boot
#
title Knoppix highres
  kernel /boot/linux ramdisk_size=100000 screen=1920x1440 init=/etc/init lang=ca home=scan hostname=elnostrenom 
      noeject noprompt vga=791
  initrd /boot/minirt.gz
#
title Knoppix 1024x768
  kernel /boot/linux ramdisk_size=100000 init=/etc/init lang=ca home=scan hostname=elnostrenom noeject noprompt 
      vga=791
  initrd /boot/minirt.gz
#
title Knoppix console
  kernel /boot/linux ramdisk_size=100000 init=/etc/init lang=ca home=scan hostname=elnostrenom noeject vga=normal 2
  initrd /boot/minirt.gz

Conclusió

Hem actualitzat el Knoppix GNU/Linux amb les últimes versions del kernel i de les aplicacions; també hem afegit programes i drivers que no tenen una llicència estrictament lliure; i, a més a més, hem posat algunes aplicacions addicionals. Tot presentat amb el gestor d'arrancada GRUB queda una distribució encara més utilitzable.
Diuen que ja és a punt de sortir la versió 5.2. A veure si també ens animem a fer el remaster.

Referències

Knoppix Web,Knoppix
Knoppix Informació, fòrums
debian-knoppix mailing list Development of the Knoppix Live CD/DVD
KNOPPIX 5.1 - Live Linux Filesystem On CD Característiques de la versió 5.1
Knoppix_Remastering_Howto Reconstruir el CDROM amb les nostres aplicacions preferides i/o actualitzacions de lo que ja hi ha instal·lat
Remaster Knoppix Reconstruir el CDROM amb les nostres aplicacions preferides i/o actualitzacions de lo que ja hi ha instal·lat
Knoppix/grub menu.lst Arrancar Knoppix amb GRUB
Another Unionfs sistema de fitxers sobreposats. escrit des de zero per Junjiro Okajima, substitueix a unionfs

Ompliu els Buits

Podeu estar segurs de que aquesta pàgina és incompleta i inexacte, si us plau, feu comentaris amb correccions o afegits

Molt interessant

En quant tingui una estona ho provaré de fer.

--
Salut,

March.
------------------------------
Linux registered user: #356760
------------------------------

Molt interessant

Si no actualitzem el kernel podem estar-hi quatre o cinc hores, i si volem actualitzar el kernel segur que més del doble,
-
Igualment, Salut,
-
Jordi