Puppy Linux op COMPAQ 5100 Begin Probleem 1 is dat de COMPAQ 5100 een SCSI inteface voor zijn drive's heeft . Deze wordt standaard niet door Puppy onder steunt . De PCI blijkt code 1000|0001 tezijn hetgeen een Symbios Logic (vroeger NCR) te zijn . De driver hiervoor is ncr53c8xx onder (puppy 1.0.9) en heeft scsi_mod nodig . Onder puppy 2.0.2 heet het ineens sym53c8xx en heeft twee driver nodig . Ook bestaat er een ncr53c9xx (met scsi_mod) of die werkte weet ik niet meer . Het vervelende is dat drivers van puppy 1.x.x niet combatible zijn met 2.x.x . N.l. 1.x.x gebruiken iets met de ext .o of .o.gz tewijl 2.x.x. een .ko geeft . Wat het verschil is weet ik op dit moment niet . Goed start dus vanaf een CD versie 1.0.9 en haal uit modules-2.4.29-all (vanaf USBstick) de benodigde drivers . Past modules.dep aan door ncr53c8xx toetevoegen , anders snapt modprobe het niet . Misschien hoeft dit niet als insmod gebruikt . Na modprobe ncr53c8xx krijg je een verhaal dat er een scsi drive is gevonden etc . Je kunt in /proc/scsi zien hoe je drive heet . Je kunt de drive nu 'mounten' . Aangezien het hier om een ntsf systeem ging en ik wilde linux + swap heb ik m.b.v. cfdisk een linux en een swap partitie aangemaakt . Heb puppy gezegt een systeem te maken op de harddisk . (Denk er wel om dat daar de USB er eerst in zit dit sda wordt en de drive nu sdb is gaan heten .) Heb in een overmoedige bui (in Linux werkt toch alles) de GRUB loader laten instaleren op de MBR . Oef foutje , reboot werkte niet . Snel maar m.b.v. Window98 starter een fdisk /mbr gedaan , en ja ja het boote . (Vermoedelijk had ik tevens gevraagd om de GRUB loader te instaleren in een superblock) Nu boote het wel maar bleef om de cd vragen , achteraf wel logisch , maar nu nog even niet . Bootsequence Hoe boot Linux eigenlijk , de GRUB loader heeft een stuurbestand boot.lst waarin staat hoe en van wie geboot moet worden . (Na puppy geinstalerd te hebben) Iets als : kernel /boot/vmlinuz root=/dev/sdb1 ro intrd /boot/image.gz Dit werkt niet omdat sdb1 niet bestaat (onstaan door de USB stick) . Ook sda1 werkt niet omdat dit geen scsi drive door de standaart kernel (vmlinuz) wordt geladen . (Oke , er zijn kernels die dat kunnen , maar de puppy kernel heeft dat niet ) De volgorde waarin linux boot is , haal de kernel op (hier /boot/vmlinuz) voor deze uit . Aan het einde (of begin) wordt gekeken of er een linux syteem staat op een andere plek . N.l. wordt dit bewerkt stelld door de opdracht intrd . Deze geeft aan waar het uittevoeren linux systeem staat . Zal het laden en geeft de hele controlle over aan de drive vermeld in root= . Dit moet nu een ram drive zijn . (Ik had gehoopt dat intrd automatisch naar /dev/ram0 ging en de root= kon gebruiken om de feite nieuwe drive aantegeven . Maar dat lukte mij niet ) Het systeem wat d.m.v. intrd aan de /dev/ram0 gekoppeld is gaat nu uitvoeren wat zoal in het /sbin/init script staat . Dit script beindigd zich (meestal) met een 'geef de hele controlle over aan een ander device'(chroot) b.v. /dev/sda1 . Het eerste wat in init gebeurd is een mount /opt en een -remount root naar rw . Aha dat werkt niet daar de ram0 niet voorkomt in ftabs als root . Verander de GRUB nu in : kernel /boot/vmlinuz root=/dev/ram0 rw intrd /boot/image.gz Nu de modprobe toevoegen in je init . En uiteindelijk chroot() veranderen zodat het naar de harddisk verwijst . Je kunt je image.gz alsvolgt wijzigen . Ik heb het in de folder /boot gedaan . Maak een folder klad en gunzip image.gz dit geeft een bestand image . Mount image aan klad . (mount -t ext2 /boot/image /boot/klad -o loop) Nu kun je naar klad gaan waarin de hele inhoud van image staat . Wijzig wat je leuk vind . Unmount /boot/klad , gzip image en reboot . (Overigens hoef je image niet te zippen als je de GRUB loader maar verteld dat hij inplaats van image.gz image moet ophalen ) De chroot zet de root om van /dev/ram0 -> /dev/sda1 en zal een init uitvoeren welke op /dev/sda1 staat . De init zal op zijn beurt /etc/rc.d/rc.sysinit uitvoeren (op /dev/sda1) . mkdir /new_root #/dev/ram0 mount -t ext2 /dev/sda1 /new_root cd /new_root mkdir old_root #/dev/sda1 sync umount /proc pivot_root . /old_root exec chroot . sh -c "exec /bin/busybox init /dev/sda1" /dev/console 2>@1 Puppy rc.sysinit Barry heeft een knappe init gemaakt om van bijna alle device te kunnen starten en houd met bijna alles rekening . Behalve met dit uitzonderlijke geval (overigens zijn Jesse het voor 2.0.2 wel te kunnen doen .) In de image moet je er voor gezorgd hebben dat er geen /root0 wordt aangemaakt . Barry bepaald hiermee of het een harddisk boot is . Normaal gaat Barry er vanuit dat een harddisk boot geen image gebruikt dus ruimt hij /dev/ram0 niet op . Dat moet je nu dus wel doen inclusief de aangemaakte /old_root . Kijk of in rc.sysinit-hd wel de goede root drive staat . Nu zit in de oorsprongkelijke versie een vreemde grap . In rc.sysinit wordt een copy gemaakt van rc.reboot-hd -> /tmp en in rc.sysinit-hd wordt /tmp leeg gemaakt . Dus werkt het niet . Het is mij gebleken dat als je /tmp niet leeg maakt niet xwin start maar het console en als je het leeg maakt (daarna mag je er rc.reboot-hd wel heen copieren) wordt xwin opgestart . Geen idee waar dat bepaald wordt . (Heb ooit iets gezien maar het niet meer terug vinden ) Wat Nog Meer . De aangemaakte swap disk werkt na mkswap . Wat en waar mkswap iets heen schrijft kan ik niet vinden . Maar swapon /dev/xxx werkt dan . (swapon -a niet omdat het niet staat in fstab) Alsa kan zich niet instaleren om dat de folder /var/tmp er niet is . Na instalatie is deze ook niet meer nodig . Puppy herkent de PCI niet (1000:0001) geen idee in welke tabellen je dat zou moeten invullen . Ik heb wat gedaan in /lib/libhardware /lib/modules . Maar dat help niet . Nu alles werkt heb ik bij het opstarten het vreemde verschijnsel gekregen dat de SCSI inteface zegt pariteits fouten te hebben . De melding onstaat na een mount /devpts . Geen idee wat dat is . Overigens werkt alles ogenschijnlijk wel goed .