Toon posts:

[linux] expertQ: root of /usr op bootable CD?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Zit wat te lezen over bootable CD's in combi met Linux. El Torito enzo.

Wat ik me afvraag: hoe weet de kernel welke CD-ROM ie moet mounten (als root (/) of als /usr als je een ramdisk gebruikt als root (/)). Ik heb 2 Plextors (CD-R, CD-RW) en hoe weet de kernel van welke ie geboot is (/dev/<ideCD|scsiCD>)? Hoe doen de 'echte' distro's dit? Kan een boot-loader dit aan de kernel doorgeven? Wil uiteindelijk iets maken dat zonder user-input automagisch aan de gang gaat.

  • Valium
  • Registratie: Oktober 1999
  • Laatst online: 09-08 08:59

Valium

- rustig maar -

1) De kernel weet niet van welke CD hij geboot is. El Torito regelt het bootproces. Wanneer de root gemount is (aangegeven door het bootproces) moeten verdere mountacties gemaakt worden door de init-scripts.

2) Als je DevFS gebruikt (aanwezig in alle 2.4 kernels) dan kun je er simpel voor zorgen dat /usr van de eerste CD wordt gekoppeld. Je zou ook zelf een scriptje kunnen maken wat kijkt welke CD de goede is en die dan automagisch koppelen. Dan moet je even in de init-scripts gaan zitten neuzen. Met DevFS is dat zeer eenvoudig omdat alle CDs in /dev/cdroms/ staan.

Verwijderd

Topicstarter
Op maandag 25 februari 2002 15:08 schreef Valium het volgende:
1) De kernel weet niet van welke CD hij geboot is. El Torito regelt het bootproces. Wanneer de root gemount is (aangegeven door het bootproces) moeten verdere mountacties gemaakt worden door de init-scripts.
De root wordt bepaald door de 'root=' parameter bij booten of door de in-de-kernel-gebakken-root-parameter, right? Dat is fixed en gaat dus fout als je 'toevallig' van de andere CD-ROM boot... ;( Niet zo mooi...
2) Als je DevFS gebruikt (aanwezig in alle 2.4 kernels) dan kun je er simpel voor zorgen dat /usr van de eerste CD wordt gekoppeld. Je zou ook zelf een scriptje kunnen maken wat kijkt welke CD de goede is en die dan automagisch koppelen. Dan moet je even in de init-scripts gaan zitten neuzen. Met DevFS is dat zeer eenvoudig omdat alle CDs in /dev/cdroms/ staan.
'.../usr van de eerste CD...' -> gaat dus fout als CD 'toevallig' in een andere speler zit en vereist weer user-input ;(

Scriptje: semi-handmatig alles (kan dus IDE _en_ SCSI zijn) gaan mounten en checken op failure of verkeerde CD... Klinkt niet echt efficient.

Iemand een idee hoe 'echte' distro's dit doen? Heb de boot.img van de Suse 7.1 El Torito uitgepakt en via '-o loop' gemount maar daar wordt ik niet veel wijzer van. Zit 1 'gehardlinkte' executable in die zowel linuxrc als de rest (/bin/*) is, voor zover ik het goed begrijp.

  • Valium
  • Registratie: Oktober 1999
  • Laatst online: 09-08 08:59

Valium

- rustig maar -

Ten eerste: Het booten gaat NIET fout omdat via El-torito een virtuele diskette wordt aangemaakt. Dus alles om compleet te booten is al aanwezig. Dit is de manier die RedHat, Mandrake, SuSe etc....gebruiken. De CDRom is nog helemaal niet bekend bij de kernel. Het is een ramdrive die wordt geladen. Dat zou je gewoon kunnen gebruiken.
(zo duidelijker?)
Ten tweede hoef je niet alles te proberen te mounten. Je zou gewoon de CD in de eerste CD-speler kunnen leggen. Probleem opgelost. Of je geeft een menuutje waarin de gebruiker zelf kan kiezen welke CD-speler het is.
SCSI of IDE of FireWire maakt allemaal niet uit met DevFS. ALLE CDROMS komen gewoon in /dev/cdroms te staan. Punt.

Wat wel een probleem kan zijn is of je wel alle drivers hebt voor de SCSI-apparaten. Hiervoor kun je OF een menuutje tonen waarin de gebruiker kan kiezen uit een lijstje met apparaten. Of je download KUDZU (RedHat hardware autodetectie) en hackt die om zodat die erop test en meteen laadt. Aan jou de keus dus.
(Trouwens, gewoon alle CDs proberen te mounten kan ook geen kwaad, tenzij je van plan bent om meerdere CDs tegelijk te gaan gebruiken.)

Laatste puntjes:
Als je je USR aansluit direct vanaf de CD, dan kun je die CD-speler NIET gebruiken op dat moment. De CD zit erin vast om te voorkomen dat je dingen probeert te starten terwijl de CD er niet in zit.
Dat hard-linked executable ding is busybox. Dat is een allround programma wat heel klein is en de meeste functionaliteit van de grote broers in zich heeft.

Verwijderd

en als je devfs kunt gebruiken heb je ook de beschikking over tmpfs (zitten inde zelfde kernel , nog wel ff mee bakken dus)
en dan kun je het je permiteren om / op de cdrom te hebben en
/root /etc /var /tmp en al het andere dat je schrijfbaar wilt maken te mounten met tmpfs
mount tmpfs -t tmpfs /etc (bijvoorbeeld)
en dan vervolgens alles wat schrijfbare file moet zijn vanuit een andere plek op de cd (bv /.realfs/etc/) copieren naar /etc en alles wat niet schrijfbaar hoeft te zijn symlinken