Next Previous Contents

5. Πρόσθετο δωράκι : Εκκινώντας από cd-rom

Πολλά από τα παραπάνω εφαρμόζονται επίσης σε εκκίνηση από cd-rom. Μιά πού - έτσι κι αλλιώς - ήθελα να γράψω και για εκκίνηση από cd-rom, προσθέτω εδώ τις κατάλληλες πληροφορίες, ώστε να μην ξαναγράψω δυο φορές τα ίδια πράγματα.

Γιατί να θέλουμε να bootάρουμε έναν Η/Υ από cd-rom; Η εκκίνηση από cd-rom μας ενδιαφέρει σε περιπτώσεις, όπου θέλουμε να τρέξουμε μιά πολύ ειδική εφαρμογή, πχ ένα kiosk (σ.τ.μ. : Δες το Kiosk HowTo), ένα πρόγραμμα βάσης δεδομένων βιβλιοθήκης, ή ένα intenet cafe, και δεν έχουμε δίκτυο ή server, για να κάνουμε στήσιμο root over nfs.

5.1 Βασική αρχή

Η βασική αρχή πάλι είναι απλή : να εκκινήσουμε ως root μ' ένα cd-rom. Για να μπορέσουμε : Θα χρησιμοποιήσουμε την επέκταση rockridge, για να τοποθετήσουμε ένα unix-like filesystem επάνω στο cd, και την επέκταση Eltorito, για να κάνουμε το cd εκκινήσιμο.

Τα πράγματα δεν μπορεί να είναι τόσο απλά

Φυσικά, αυτό το στήσιμο παρουσιάζει μερικά προβλήματα. Τα περισσότερα είναι τα ίδια με τα παραπάνω :

  1. Θα χρειαστούμε πρόσβαση εγγραφής στα : /dev, /var & /tmp.
  2. Μερικές εφαρμογές χρειάζονται πρόσβαση εγγραφής στο /home.
  3. Το /etc/mtab πρέπει να μπορεί να γράφεται :

5.2 Φτιάχνοντας ένα δοκιμαστικό στήσιμο.

Τώρα, που γνωρίζουμε τί να κάνουμε και πώς, ήρθε η στιγμή να φτιάξουμε ένα δοκιμαστικό στήσιμο :

  1. Κατ' αρχήν, πάρτε έναν Η/Υ απ' αυτούς που θέλετε να χρησιμοποιήσετε, και βάλτε μέσα έναν μεγάλο σκληρό δίσκο κι ένα cd recorder.
  2. Βάλτε το Linux που σας αρέσει επάνω σ' αυτό το μηχάνημα, κι αφήστε ελεύθερη μιά partition των 650 MB για το δοκιμαστικό στήσιμο. Αυτή η εγκατάσταση θα φανεί χρήσιμη στο να φτιάξουμε το iso-image του cd και να το ρίξουμε στα cd's εκκίνησης, άρα εγκαταστήστε τα απαραίτητα εργαλεία. Επίσης, θα μας χρειαστεί στο να διορθώσουμε όλα τα bugs, που δεν μας επιτρέπουν να bootάρουμε το μηχάνημα της δοκιμής.
  3. Εγκαταστήστε το Linux της επιλογής σας επάνω στην partition των 650 MB, με το στήσιμο που θέλετε να περάσει και στο cd. Αυτό θα είναι και το στήσιμο που θα χρησιμοποιήσουμε στις δοκιμές.
  4. Ξεκινήστε από τη δοκιμαστική partition.
  5. Κάντε compile έναν πυρήνα, όπως περιγράψαμε στο τμήμα 3.1 . Ακολουθήστε όλα τα βήματα, διότι οι απαραίτητες αλλαγές για το devfs εξακολουθούν να χρειάζονται! Στο βήμα 3 του τμήματος 3.1, προσθέστε τα εξής :
  6. Ρυθμίστε το δοκιμαστικό στήσιμο :
  7. Δοκιμάστε το ότι όλα δουλεύουν σωστά.
  8. Εκκινήστε την κυρίως εγκατάσταση και κάντε mount την partition των 650 MB στο directory /test της κυρίως εγκατάστασης.
  9. Βάλτε τα παρακάτω σ' ένα αρχείο, με το όνομα /test/etc/rc.d/rc.iso . Το source αυτού του αρχείου μπαίνει στην αρχή του rc.sysinit, για να φτιάξει το /var .
    #/var
    echo Ftiaxnoume to /var ...
    mke2fs -q -i 1024 /dev/ram1 1024
    mount /dev/ram1 /var -o defaults,rw
    cp -a /lib/var /
    
    #Epanaferoume tis ry8miseis tou devfs, xreiazomaste to proc
    mount -t proc /proc /proc
    /etc/rc.d/rc.devfs restore /etc/sysconfig
    umount /proc
      
    

  10. Διορθώνουμε το /test/etc/rc.sysinit , βάζοντας σχόλιο στις γραμμές όπου ο root φορτώνεται rw, και προσθέτουμε τις ακόλουθες 2 γραμμές αμέσως μετά τον ορισμό του PATH :
    #gia na bootaroume apo cdrom
    . /etc/rc.d/rc.iso
      
    

  11. Αντιγράφουμε τα παρακάτω σ' ένα script και το εκτελούμε. Αυτό θα φτιάξει ένα πρότυπο για το /var και θα δημιουργήσει τα links των /tmp και /etc/mtab.
    #!/bin/sh
    echo tmp
    rm -fR /test/tmp
    ln -s var/tmp /test/tmp
    
    ###
    echo mtab
    touch /test/proc/mounts
    rm /test/etc/mtab
    ln -s /proc/mounts /test/etc/mtab
    
    ###
    echo var
    mv /test/var/lib /test/lib/var-lib
    mv /test/var /test/lib
    mkdir /test/var
    ln -s /lib/var-lib /test/lib/var/lib
    rm -fR /test/lib/var/catman
    rm -fR /test/lib/var/log/httpd
    rm -f /test/lib/var/log/samba/*
    for i in `find /test/lib/var/log -type f`; do cat /dev/null > $i; done
    rm `find /test/lib/var/lock -type f`
    rm `find /test/lib/var/run -type f`
    
      
    

  12. Αφαιρώντας τη δημιουργία του /etc/issue* από το /test/etc/rc.local, απλά θα το αναγκάσουμε να αποτύχει.
  13. Τώρα επανεκκινούμε τη δοκιμαστική partition, η οποία θα διαβαστεί απλά σαν ένα cd-rom. Αν κάτι δεν δουλέψει, επανεκκινήστε με την κυρίως partition, διορθώστε το, ξαναδοκιμάστε το, κ.ο.κ. . Ή, μπορείτε να κάνετε remount / rw τη δοκιμαστική partition, να το διορθώσετε, και να επανεκκινήσετε κατευθείαν με τη δοκιμαστική partition ξανά. Για να κάνετε remount / rw , δώστε :
    mount -o remount,rw /

5.3 Φτιάχνοντας το cd

Φτιάχνοντας ένα boot image

Πρώτα-πρώτα, εκκινήστε με την κυρίως partition. Για να φτιάξετε ένα εκκινήσιμο cd, θα χρειαστείτε ένα image μιας bootable δισκέτας. Δεν θα δουλέψει το απλό dd σ' ένα zimage, επειδή ο loader στην αρχή του zimage δεν φαίνεται ν' αγαπάει την ψεύτικη δισκέτα, που δημιουργεί το εκκινήσιμο cd. Έτσι, θα χρησιμοποιήσουμε το syslinux :

  1. Παίρνουμε το boot.img από ένα cd του RedHat
  2. Κάνουμε mount το boot.img κάπου ανάμεσα στο loopback, δίνοντας :
    mount boot.img kapou -o loop -t vfat
  3. Αφαιρούμε ο,τιδήποτε από το boot.img , εκτός από τα :
  4. Αντιγράφουμε το kernel image της δοκιμαστικής partition στο boot.img .
  5. Διορθώνουμε το syslinux.cfg , ώστε να περιέχει τα εξής (αντικαθιστώντας, φυσικά, το zImage με το κατάλληλο όνομα image) :
    default linux 
    
    label linux
    kernel zImage
    append root=/dev/<balte edw to onoma tou cdrom sas>
      
    

  6. Umount boot.img:
    umount kapou
  7. Αν το /etc/mtab σας είναι link για το /proc/mounts , το umount δεν θ' αφήσει αυτόματα ελεύθερο το /dev/loop0 , συνεπώς ελευθερώστε το δίνοντας :
    losetup -d /dev/loop0

Δημιουργώντας το iso image

Αφού έχουμε το boot image και μιά εγκατάσταση που μπορεί να ξεκινήσει από ένα readonly mount, έφτασε η στιγμή να φτιάξουμε ένα iso image του cd :

  1. Αντιγράψτε το boot.img στο /test
  2. Κάντε cd στο directory, όπου θέλετε ν' αποθηκεύσετε το image. Βεβαιωθείτε ότι βρίσκεται επάνω σε μιά partition με αρκετό ελεύθερο χώρο.
  3. Τώρα, φτιάξτε το image, πληκτρολογώντας :
    mkisofs -R -b boot.img -c boot.catalog -o boot.iso /test

Επαληθεύοντας το iso image

  1. Κάντε mount το image ανάμεσα στο loopback device, δίνοντας :
    mount boot.iso kapou -o loop -t iso9660
  2. Τώρα επιβεβαιώστε ότι τα περιεχόμενα είναι εντάξει.
  3. Κάντε umount το boot.iso :
    umount kapou
  4. Αν το /etc/mtab σας είναι link προς το /proc/mounts , το umount δεν θ' απελευθερώσει αυτόματα το /dev/loop0 . Αυτό ελευθερώστε το, πληκτρολογώντας :
    losetup -d /dev/loop0

Γράφοντας το CD

Υποθέτοντας ότι έχετε εγκαταστήσει και ρυθμίσει το cdrecord για τον εγγραφέα σας, δώστε :

cdrecord -v speed=<epi8umhth taxuthta eggrafhs> dev=<path pros to generic scsi device tou eggrafea sas> boot.iso

5.4 Bootάρετε το CD και δοκιμάστε το

Ε, ο τίτλος αυτής της παραγράφου τα λέει όλα! ;)


Next Previous Contents