Next
Previous
Contents
Πολλά από τα παραπάνω εφαρμόζονται επίσης σε εκκίνηση από cd-rom. Μιά
πού - έτσι κι αλλιώς - ήθελα να γράψω και για εκκίνηση από cd-rom,
προσθέτω εδώ τις κατάλληλες πληροφορίες, ώστε να μην ξαναγράψω δυο φορές
τα ίδια πράγματα.
Γιατί να θέλουμε να bootάρουμε έναν Η/Υ από cd-rom; Η εκκίνηση από
cd-rom μας ενδιαφέρει σε περιπτώσεις, όπου θέλουμε να τρέξουμε μιά πολύ
ειδική εφαρμογή, πχ ένα kiosk (σ.τ.μ. : Δες το Kiosk HowTo), ένα πρόγραμμα
βάσης δεδομένων βιβλιοθήκης, ή ένα intenet cafe, και δεν έχουμε δίκτυο ή
server, για να κάνουμε στήσιμο root over nfs.
Η βασική αρχή πάλι είναι απλή : να εκκινήσουμε ως root μ' ένα cd-rom.
Για να μπορέσουμε : Θα χρησιμοποιήσουμε την επέκταση rockridge, για να
τοποθετήσουμε ένα unix-like filesystem επάνω στο cd, και την επέκταση
Eltorito, για να κάνουμε το cd εκκινήσιμο.
Τα πράγματα δεν μπορεί να είναι τόσο απλά
Φυσικά, αυτό το στήσιμο παρουσιάζει μερικά προβλήματα. Τα περισσότερα
είναι τα ίδια με τα παραπάνω :
- Θα χρειαστούμε πρόσβαση εγγραφής στα : /dev, /var & /tmp.
- Θα χρησιμοποιήσουμε τις ίδιες λύσεις, όπως για το root over nfs
(δες παραπάνω) :
- Για το /dev , θα χρησιμοποιήσουμε το Devfs .
- Για τα /var και /tmp , θα χρησιμοποιήσουμε ένα διαμοιρασμένο
(shared) ramdisk του 1 MB. Το κάνουμε shared, για να χρησιμοποιήσουμε τον
χώρο όσο αποτελεσματικότερα γίνεται. Το /tmp αντικαθίσταται μ' ένα symlink
προς το /var/tmp , για να καταστήσουμε δυνατό τον διαμοιρασμό.
- Δουλεύει εξ ίσου καλά το να γεμίσουμε το ramdisk με tarballs, ή
πρότυπα (template) directories. Όμως, είναι πολύ ευκολότερο να κάνουμε
αλλαγές με τα πρότυπα dirs, άρα θα χρησιμοποιήσουμε αυτά.
- Μερικές εφαρμογές χρειάζονται πρόσβαση εγγραφής στο /home.
- Βάλτε στο /var τα home directories των χρηστών που θα τρέξουν τις
εφαρμογές αυτές, και γεμίστε τα με τα υπόλοιπα περιεχόμενα του /var σε
κάθε επανεκκίνηση.
- Το /etc/mtab πρέπει να μπορεί να γράφεται :
- Φτιάξετε ένα link προς το /proc/mounts και δημιουργήστε ένα άδειο
αρχείο mounts στο /proc, όπως παραπάνω.
Τώρα, που γνωρίζουμε τί να κάνουμε και πώς, ήρθε η στιγμή να φτιάξουμε
ένα δοκιμαστικό στήσιμο :
- Κατ' αρχήν, πάρτε έναν Η/Υ απ' αυτούς που θέλετε να χρησιμοποιήσετε,
και βάλτε μέσα έναν μεγάλο σκληρό δίσκο κι ένα cd recorder.
- Βάλτε το Linux που σας αρέσει επάνω σ' αυτό το μηχάνημα, κι αφήστε
ελεύθερη μιά partition των 650 MB για το δοκιμαστικό στήσιμο. Αυτή η
εγκατάσταση θα φανεί χρήσιμη στο να φτιάξουμε το iso-image του cd και να το
ρίξουμε στα cd's εκκίνησης, άρα εγκαταστήστε τα απαραίτητα εργαλεία. Επίσης,
θα μας χρειαστεί στο να διορθώσουμε όλα τα bugs, που δεν μας επιτρέπουν να
bootάρουμε το μηχάνημα της δοκιμής.
- Εγκαταστήστε το Linux της επιλογής σας επάνω στην partition των 650
MB, με το στήσιμο που θέλετε να περάσει και στο cd. Αυτό θα είναι και το
στήσιμο που θα χρησιμοποιήσουμε στις δοκιμές.
- Ξεκινήστε από τη δοκιμαστική partition.
- Κάντε compile έναν πυρήνα, όπως περιγράψαμε στο τμήμα 3.1 .
Ακολουθήστε όλα τα βήματα, διότι οι απαραίτητες αλλαγές για το devfs
εξακολουθούν να χρειάζονται! Στο βήμα 3 του τμήματος 3.1, προσθέστε τα εξής :
- isofs compiled μέσα στον πυρήνα
- devfs compiled μέσα στον πυρήνα
- υποστήριξη cdrom compiled μέσα στον πυρήνα
- ό,τι άλλο χρειάζεστε, είτε compiled μέσα στον πυρήνα, είτε ως module.
- Ρυθμίστε το δοκιμαστικό στήσιμο :
- Δημιουργήστε τον χρήστη, που θα τρέξει την εφαρμογή.
- Βάλτε το home directory του στο /var.
- Αν χρειαστεί, εγκαταστήστε την εφαρμογή.
- Αν χρειαστεί, κάντε ρυθμίσεις για την εφαρμογή.
- Κάντε τις ρυθμίσεις του συγκεκριμένου χρήστη, ώστε η εφαρμογή να
τρέξει αυτόματα μετά το login.
- Ρυθμίστε το Linux, ώστε αυτόματα να κάνει login για τον χρήστη.
- Ρυθμίστε ο,τιδήποτε άλλο χρειάζεται ρύθμιση.
- Δοκιμάστε το ότι όλα δουλεύουν σωστά.
- Εκκινήστε την κυρίως εγκατάσταση και κάντε mount την partition των
650 MB στο directory /test της κυρίως εγκατάστασης.
- Βάλτε τα παρακάτω σ' ένα αρχείο, με το όνομα /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
- Διορθώνουμε το /test/etc/rc.sysinit , βάζοντας σχόλιο στις γραμμές
όπου ο root φορτώνεται rw, και προσθέτουμε τις ακόλουθες 2 γραμμές αμέσως
μετά τον ορισμό του PATH :
#gia na bootaroume apo cdrom
. /etc/rc.d/rc.iso
- Αντιγράφουμε τα παρακάτω σ' ένα 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`
- Αφαιρώντας τη δημιουργία του /etc/issue* από το /test/etc/rc.local,
απλά θα το αναγκάσουμε να αποτύχει.
- Τώρα επανεκκινούμε τη δοκιμαστική partition, η οποία θα διαβαστεί
απλά σαν ένα cd-rom. Αν κάτι δεν δουλέψει, επανεκκινήστε με την κυρίως
partition, διορθώστε το, ξαναδοκιμάστε το, κ.ο.κ. . Ή, μπορείτε να κάνετε
remount / rw τη δοκιμαστική partition, να το διορθώσετε, και να
επανεκκινήσετε κατευθείαν με τη δοκιμαστική partition ξανά. Για να κάνετε
remount / rw , δώστε :
mount -o remount,rw /
Φτιάχνοντας ένα boot image
Πρώτα-πρώτα, εκκινήστε με την κυρίως partition. Για να φτιάξετε ένα
εκκινήσιμο cd, θα χρειαστείτε ένα image μιας bootable δισκέτας. Δεν θα
δουλέψει το απλό dd σ' ένα zimage, επειδή ο loader στην αρχή του zimage
δεν φαίνεται ν' αγαπάει την ψεύτικη δισκέτα, που δημιουργεί το εκκινήσιμο
cd. Έτσι, θα χρησιμοποιήσουμε το syslinux :
- Παίρνουμε το boot.img από ένα cd του RedHat
- Κάνουμε mount το boot.img κάπου ανάμεσα στο loopback, δίνοντας :
mount boot.img kapou -o loop -t vfat
- Αφαιρούμε ο,τιδήποτε από το boot.img , εκτός από τα :
- Αντιγράφουμε το kernel image της δοκιμαστικής partition στο boot.img .
- Διορθώνουμε το syslinux.cfg , ώστε να περιέχει τα εξής
(αντικαθιστώντας, φυσικά, το zImage με το κατάλληλο όνομα image) :
default linux
label linux
kernel zImage
append root=/dev/<balte edw to onoma tou cdrom sas>
- Umount boot.img:
umount kapou
- Αν το /etc/mtab σας είναι link για το /proc/mounts , το umount δεν θ'
αφήσει αυτόματα ελεύθερο το /dev/loop0 , συνεπώς ελευθερώστε το δίνοντας :
losetup -d /dev/loop0
Δημιουργώντας το iso image
Αφού έχουμε το boot image και μιά εγκατάσταση που μπορεί να ξεκινήσει
από ένα readonly mount, έφτασε η στιγμή να φτιάξουμε ένα iso image του cd :
- Αντιγράψτε το boot.img στο /test
- Κάντε cd στο directory, όπου θέλετε ν' αποθηκεύσετε το image.
Βεβαιωθείτε ότι βρίσκεται επάνω σε μιά partition με αρκετό ελεύθερο χώρο.
- Τώρα, φτιάξτε το image, πληκτρολογώντας :
mkisofs -R -b boot.img -c boot.catalog -o boot.iso /test
Επαληθεύοντας το iso image
- Κάντε mount το image ανάμεσα στο loopback device, δίνοντας :
mount boot.iso kapou -o loop -t iso9660
- Τώρα επιβεβαιώστε ότι τα περιεχόμενα είναι εντάξει.
- Κάντε umount το boot.iso :
umount kapou
- Αν το /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
Ε, ο τίτλος αυτής της παραγράφου τα λέει όλα! ;)
Next
Previous
Contents