2. Ρύθμιση του NanoBSD
Προηγ |  |

## 2. Ρύθμιση του NanoBSD

### 2.1. Η Σχεδίαση του NanoBSD

Αφού γραφτεί ένα είδωλο του NanoBSD σε κάποιο αποθηκευτικό μέσο, μπορεί να χρησιμοποιηθεί για να ξεκινήσει ένα σύστημα FreeBSD. Η προκαθορισμένη διαμόρφωση του μέσου εκκίνησης αποτελείται από τρία μέρη:

- Δύο διαμερίσματα εκκίνησης: `code#1` και `code#2`.

- Το διαμέρισμα ρυθμίσεων, Αυτό μπορεί να προσαρτηθεί στον κατάλογο `/cfg` την ώρα λειτουργίας του NanoBSD.

Αυτά τα τρία διαμερίσματα κανονικά είναι προσαρτημένα μόνο για ανάγνωση.

Οι κατάλογοι `/etc` και `/var` είναι εικονικοί δίσκοι md(4) (malloc).

Το διαμέρισμα ρυθμίσεων μπορεί να προσαρτηθεί στον κατάλογο `/cfg`. Περιέχει αρχεία τα οποία αντιγράφονται στον κατάλογο `/etc`. Κατά την εκκίνηση του συστήματος το διαμέρισμα ρυθμίσεων προσαρτάται προσωρινά μόνο για ανάγνωση και αντιγράφονται τα αρχεία του στον κατάλογο `/etc`. Οπότε για να είναι κάποια αλλαγή ρυθμίσεων πιο &#x201C;μόνιμη&#x201D; και να ισχύει ακόμα και μετά από επανεκκίνηση του συστήματος, πρέπει να αντιγράφεται από τον κατάλογο `/etc` στο διαμέρισμα ρυθμίσεων, αφού αυτό προσαρτηθεί για γράψιμο στον κατάλογο `/cfg`.

Παράδειγμα 1. Κάνοντας μόνιμες αλλαγές στο `/etc/resolv.conf`
`#` `vi /etc/resolv.conf` [...] `#` `mount /cfg` `#` `cp /etc/resolv.conf /cfg` `#` `umount /cfg`

### Σημείωση:

Το διαμέρισμα το οποίο περιέχει τον κατάλογο `/cfg` πρέπει να προσαρτάται μόνο κατά την εκκίνηση και όταν έχουν προτεραιότητα τα αρχεία ρυθμίσεων του `/cfg`.

Δεν είναι καλή ιδέα να μένει μόνιμα προσαρτημένο το διαμέρισμα `/cfg`. Αν ένα διαμέρισμα είναι προσαρτημένο για γράψιμο και το αποθηκευτικό μέσο του NanoBSD επιτρέπει περιορισμένο αριθμό κύκλων εγγραφής (όπως π.χ. μερικές κάρτες CF), μπορεί να επηρεαστεί αρνητικά το αποθηκευτιμό μέσο επειδή ο πυρήνας γράφει κάθε λίγο στους δίσκους του συστήματος (syncer).

### 2.2. Δημιουργία Ενός Προσαρμοσμένου Συστήματος NanoBSD

Το είδωλο του NanoBSD δημιουργείται από ένα απλό σενάριο κονσόλας, το `nanobsd.sh`, το οποίο μπορεί να βρεθεί στον κατάλογο `/usr/src/tools/nanobsd`. Αυτό το σενάριο δημιουργεί ένα είδωλο δίσκου, το οποίο μπορεί να αντιγραφεί απευθείας σε κάποιο αποθηκευτικό μεσο χρησιμοποιώντας το πρόγραμμα dd(1).

Οι απαραίτητες εντολές προκειμένου να δημιουργηθεί ένα είδωλο του NanoBSD είναι οι εξής:

`#` `cd /usr/src/tools/tools/nanobsd` `#` `sh nanobsd.sh` `#` `cd /usr/obj/nanobsd.full` `#` `dd if=_.disk.full of=/dev/da0 bs=64k`

| Αλλαγή από τον τρέχοντα κατάλογο στον βασικό κατάλογο του σεναρίου δημιουργίας του NanoBSD.
| Εκκίνηση της δημιουργίας του ειδώλου.
| Αλλαγή από τον τρέχοντα κατάλογο στον κατάλογο που περιέχει το είδωλο του NanoBSD.
| Αντιγραφή του NanoBSD σε ένα μέσο αποθήκευσης.

### 2.3. Προσαρμόζοντας το είδωλο του NanoBSD

Αυτό είναι πιθανότατα το πιο σημαντικό και πιο ενδιαφέρον χαρακτηριστικό του NanoBSD. Αυτό είναι και το μέρος της διαδικασίας ανάπτυξης του ειδώλου NanoBSD για το οποίο θα ξοδέψετε ένα μεγάλο ποσοστό του χρόνου προετοιμασίας του ειδώλου.

Η ακόλουθη εντολή θα κάνει το `nanobsd.sh` να διαβάσει τις ρυθμίσεις του από το αρχείο `myconf.nano` που βρίσκεται στο τρέχοντα κατάλογο:

`#` `sh nanobsd.sh -c myconf.nano`

Η προσαρμογή και παραμετροποίηση του NanoBSD γίνεται συνήθως με δύο τρόπους:

- Επιλογές διαμόρφωσης

- Προσαρμοσμένες συναρτήσεις

#### 2.3.1. Επιλογές διαμόρφωσης

Οι ρυθμίσεις του NanoBSD μπορούν να χρησιμοποιηθούν για να οριστούν προσαρμοσμένες επιλογές μεταγλώττισης και εγκατάστασης του FreeBSD. Αυτές οι επιλογές επηρεάζουν τα στάδια `buildworld` και `installworld` του NanoBSD, καθώς και άλλες επιλογές της δημιουργίας του τελικού ειδώλου. Με τις κατάλληλες ρυθμίσεις το NanoBSD μπορεί να μικρύνει αρκετά σε μέγεθος· μπορεί να χωρέσει ένα πολύ μικρό υποσύνολο του βασικού FreeBSD σε χώρο μικρότερο από 64MB. Μπορείτε επίσης να χρησιμοποιήσετε τις επιλογές του NanoBSD για να δημιουργήσετε ένα είδωλο που έχει μόνο τον πυρήνα και δυο-τρία αρχεία στο βασικό σύστημα.

Το αρχείο ρυθμίσεων του NanoBSD περιέχει εντολές οι οποίες ορίζουν νέες τιμές για κάποια προκαθορισμένη μεταβλητή ή επεκτείνουν τις υπάρχουσες ρυθμίσεις. Οι πιο σημαντικές μεταβλητές είναι οι εξής:

- `NANO_NAME` — Το όνομα του ειδώλου NanoBSD που θα δημιουργηθεί (χρησιμοποιείται για να φτιάξει τα ονόματα των κατάλογων εργασίας).

- `NANO_SRC` — Η διαδρομή του δέντρου πηγαίου κώδικα το οποίο θα χρησιμοποιηθεί για να μετγλωττιστεί το είδωλο.

- `NANO_KERNEL` — Το όνομα του αρχείου ρυθμίσεων πυρήνα το οποίο θα χρησιμοποιηθεί για να χτιστεί ο πυρήνας του ειδώλου.

- `CONF_BUILD` — Επιλογές που περνούν στο στάδιο `buildworld` της μεταγλώττισης του FreeBSD.

- `CONF_INSTALL` — Επιλογές που περνούν στο στάδιο `installworld` της προετοιμασίας του ειδώλου.

- `CONF_WORLD` — Επιλογές που περνούν και στα δύο στάδια της προετοιμασίας του ειδώλου, και στο `buildworld` και στο `installworld`.

- `FlashDevice` — Ορίζει τον τύπο του μέσου αποθήκευσης που θα χρησιμοποιηθεί. Για περισσότερες λεπτομέρειες δείτε το αρχείο `FlashDevise.sub`.

#### 2.3.2. Προσαρμοσμένες Συναρτήσεις

Στο αρχείο ρύθμισης του NanoBSD μπορεί να ρυθμιστεί σχεδόν κάθε λεπτομέρεια της προετοιμασίας του ειδώλου και του τελικού ειδώλου το οποίο θα δημιουργηθεί. Χρησιμοποιώντας μικρές συναρτήσεις φλοιού, μπορούμε να ρυθμίσουμε τα πάντα. Για παράδειγμα, μπορούμε να τρέξουμε δικές μας εντολές οι οποίες παραμετροποιούν το τελικό είδωλο ως εξής:

cust_foo () ( echo "bar=topless" > \ ${NANO_WORLDDIR}/etc/foo ) customize_cmd cust_foo

Ένα πιο χρήσιμο παράδειγμα συνάρτησης φλοιού, η οποία ρυθμίζει κάποια παράμετρο του τελικού ειδώλου, είναι αυτό που ακολουθεί. Η συνάρτηση `cust_etc_size` αλλάζει την προεπιλεγμένη τιμή μεγέθους του καταλόγου `/etc` από 5MB σε 30MB:

cust_etc_size () ( cd ${NANO_WORLDDIR}/conf echo 30000 > default/etc/md_size ) customize_cmd cust_etc_size

Το σενάριο φλοιού που δημιουργεί το NanoBSD έχει μερικές έτοιμες συναρτήσεις φλοιού οι οποίες εκτελούν τέτοιες επιπλέον ρυθμίσεις:

- `cust_comconsole` — Απενεργοποιεί το getty(8) στις κονσόλες VGA (οι συσκευές `/dev/ttyv*`) και ενεργοποιεί την χρήση της σειριακής θύρας COM1 ως κονσόλα συστήματος.

- `cust_allow_ssh_root` — Επιτρέπει την είσοδο του χρήστη `root` μέσω του sshd(8).

- `cust_install_files` — Εγκαθιστά αρχεία από τον κατάλογο `nanobsd/Files`. Σε αυτό τον κατάλογο βρίσκονται μερικά χρήσιμα σενάρια φλοιού για τη διαχείριση ενός συστήματος NanoBSD.

#### 2.3.3. Προσθέτοντας Πακέτα

Σε ένα είδωλο NanoBSD μπορούν να προστεθούν και έτοιμα πακέτα, που έχουν φτιαχτεί από πριν χρησιμοποιώντας τη Συλλογή των Ports. Μια συνάρτηση φλοιού μπορεί να εγκαταστήσει έξτρα πακέτα την ώρα που προετοιμάζεται το είδωλο. Για παράδειγμα, η παρακάτω συνάρτηση θα εγκαταστήσει στο είδωλο όλα τα πακέτα που βρίσκονται στον κατάλογο `/usr/src/tools/tools/nanobsd/packages`:

install_packages () ( mkdir -p ${NANO_WORLDDIR}/packages cp /usr/src/tools/tools/nanobsd/packages/* ${NANO_WORLDDIR}/packages chroot ${NANO_WORLDDIR} sh -c 'cd packages; pkg_add -v *;cd ..;' rm -rf ${NANO_WORLDDIR}/packages ) customize_cmd install_packages

#### 2.3.4. Παράδειγμα Αρχείου Ρυθμίσεων του NanoBSD

Ένα πλήρες παράδειγμα αρχείου ρυθμίσεων για το NanoBSD, με διάφορες ρυθμίσεις για τη μεταγλώττιση του FreeBSD και την προετοιμασία του τελικού ειδώλου, μπορεί να μοιάζει κάπως έτσι:

NANO_NAME=custom NANO_SRC=/usr/src NANO_KERNEL=MYKERNEL NANO_IMAGES=2 CONF_BUILD=' NO_KLDLOAD=YES NO_NETGRAPH=YES NO_PAM=YES ' CONF_INSTALL=' NO_ACPI=YES NO_BLUETOOTH=YES NO_CVS=YES NO_FORTRAN=YES NO_HTML=YES NO_LPR=YES NO_MAN=YES NO_SENDMAIL=YES NO_SHAREDOCS=YES NO_EXAMPLES=YES NO_INSTALLLIB=YES NO_CALENDAR=YES NO_MISC=YES NO_SHARE=YES ' CONF_WORLD=' NO_BIND=YES NO_MODULES=YES NO_KERBEROS=YES NO_GAMES=YES NO_RESCUE=YES NO_LOCALES=YES NO_SYSCONS=YES NO_INFO=YES ' FlashDevice SanDisk 1G cust_nobeastie() ( touch ${NANO_WORLDDIR}/boot/loader.conf echo "beastie_disable=\"YES\"" >> ${NANO_WORLDDIR}/boot/loader.conf ) customize_cmd cust_comconsole customize_cmd cust_install_files customize_cmd cust_allow_ssh_root customize_cmd cust_nobeastie

### 2.4. Ενημερώνοντας το NanoBSD

Η διαδικασία ενημέρωσης του NanoBSD είναι σχετικά απλή:

1. Δημιουργία ενός νέου ειδώλου NanoBSD, με το συνηθισμένο τρόπο.

2. Ανέβασμα του νέου ειδώλου σε μια αχρησιμοποίητη κατάτμηση μιας συσκευής που τρέχει NanoBSD.

   Η πιο σημαντική διαφορά αυτού του σημείου από την αρχική εγκατάσταση του NanoBSD είναι ότι τώρα αντί του αρχείου `_.disk.full` (το οποίο περιέχει το είδωλο ενός ολόκληρου δίσκου), εγκαταστάθηκε το αρχείο `_.disk.image` (το οποίο περιέχει το είδωλο μιας μόνο κατάτμησης του δίσκου).

3. Κλείσιμο και επανεκκίνηση του συστήματος από την νέα εγκατεστημένη κατάτμηση.

4. Αν όλα πάνε καλά, η αναβάθμιση τελείωσε.

5. Αν οτιδήποτε πάει στραβά, επανεκκινήστε τη συσκευή από την προηγούμενη κατάτμηση (η οποία περιέχει το παλιό είδωλο, που λειτουργεί σωστά). Έτσι μπορείτε να επαναφέρετε άμεσα το σύστημα σε λειτουργική κατάσταση. Διορθώστε οποιαδήποτε προβλήματα έχει το νέο είδωλο, και επαναλάβετε την διαδικασία.

Για να εγκατασταθεί το νέο είδωλο σε ένα σύστημα NanoBSD, το οποίο ήδη βρίσκεται σε λειτουργία, μπορεί να χρησιμοποιηθεί είτε το σενάριο `updatep1` είτε το `updatep2`. Αυτά τα δύο σενάρια φλοιού βρίσκονται στον κατάλογο `/root`.

Ανάλογα με τις υπηρεσίες του συστήματος στο οποίο δημιουργείται ένα είδωλο NanoBSD, μπορεί να μεταφερθεί ένα νέο είδωλο στο τελικό σύστημα με διάφορους τρόπους:

#### 2.4.1. Χρησιμοποιώντας το ftp(1)

Αν σας ενδιαφέρει η καλή ταχύτητα μεταφοράς, χρησιμοποιήστε το FTP για τη μεταφορά του ειδώλου:

`#` `ftp myhost get _.disk.image "| sh updatep1"`

#### 2.4.2. Χρησιμοποιώντας το ssh(1)

Αν σας ενδιαφέρει η μεταφορά του ειδώλου να γίνει με ασφαλή τρόπο και δεν έχετε αφαιρέσει από το αρχικό είδωλο το ssh(1), προτιμήστε τη μεταφορά μέσω SSH:

`#` `ssh myhost cat _.disk.image.gz | zcat | sh updatep1`

#### 2.4.3. Χρησιμοποιώντας το nc(1)

Αν το σύστημα στο οποίο έχει δημιουργηθεί το νέο είδωλο του NanoBSD δεν τρέχει ούτε ftpd(8) ούτε sshd(8), μπορείτε να χρησιμοποιήσετε άλλα εργαλεία για τη μεταφορά, όπως το nc(1):

1. Πρώτα ανοίξτε ένα εξυπηρετητή TCP στο σύστημα το οποίο θα παρέχει το νέο είδωλο, και ορίστε το νέο είδωλο ως είσοδο για τη μεταφορά που θα γίνει αργότερα:

   myhost`#` `nc -l `2222` < _.disk.image`

   ### Σημείωση:

   Πριν από αυτό βεβαιωθείτε ότι η θύρα που χρησιμοποιείτε για τον εξυπηρετητή μπορεί να δεχθεί εισερχόμενες συνδέσεις από το σύστημα NanoBSD προς το σύστημα του εξυπηρετητή, και δεν εμποδίζεται, για παράδειγμα, από κάποιο τείχος προστασίας (&#x201C;firewall&#x201D;).

2. Συνδεθείτε από το NanoBSD στον εξυπηρετητή, ο οποίος είναι ήδη έτοιμος να παρέχει το νέο είδωλο, και τροφοδοτείστε το σενάριο φλοιού `updatep1` με την έξοδο του εργαλείου nc(1):

   `#` `nc myhost `2222` | sh updatep1`

Προηγ |  |
Εισαγωγή στο NanoBSD | Αρχή |

Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την τεκμηρίωση πριν να επικοινωνήσετε με την <questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην <doc@FreeBSD.org>.