3.6. Ρύθμιση του Υλικού και του Λειτουργικού συστήματος πριν την εγκατάσταση

This section will walk you through pre-installation hardware setup, if any, that you will need to do prior to installing Debian. Generally, this involves checking and possibly changing BIOS/UEFI/system firmware settings for your system. The «BIOS/UEFI» or «system firmware» is the core software used by the hardware; it is most critically invoked during the bootstrap process (after power-up).

3.6.1. Επιλογή συσκευής εκκίνησης

3.6.2. ARM firmware

Όπως αναφέρθηκε ήδη, δυστυχώς δεν υπάρχει ένα συγκεκριμένο πρότυπο για το υλισμικό του συστήματος σε συστήματα ARM systems. Ακόμα και η συμπεριφορά διαφορετικών συστημάτων που τυπικά χρησιμοποιούν το ίδιο λογισμικό μπορεί να είναι αρκετά διαφορετική. Αυτό απορρέει από το γεγονός ότι ένα μεγάλο μέρος των συσκευών που χρησιμοποιούν την αρχιτεκτονική ARM είναι "εμβαπτισμένα" συστήματα, για τα οποία οι κατασκευαστές συνήθως δημιουργούν εξαιρετικά προσαρμοσμένες εκδόσεις υλισμικού και περιλαμβάνουν patches για την κάθε συγκεκριμένη συσκευή.Δυστυχώς οι κατασκευαστές συχνά δεν υποβάλλουν τις αλλαγές τους και τις επεκτάσεις τους στους κύριους προγραμματιστές του υλισμικού, οπότε οι αλλαγές αυτές δεν ενσωματώνονται σε νεώτερες εκδόσεις του αρχικού υλισμικού.

Ως αποτέλεσμα, ακόμα και πρόσφατα αποκτημμένα συστήματα χρησιμοποιούν συχνά υλισμικό που βασίζεται σε μια πολλών ετών τροποποιημένη από τον κατασκευαστή έκδοση ενός υλισμικού που ο κύριος κώδικάς του έχει εξελιχθεί κατά πολύ στο ενδιάμεσο διάστημα και προσφέρει επιπλέον γνωρίσματα ή παρουσιάζει διαφορετική συμπεριφορά από συγκεκριμένες απόψεις. Επιπρόσθετα, η ονομασία των συσκευών στη μητρική δεν είναι συνεπής μεταξύ διαφορετικών τροποποιημένων από τους κατασκευαστές εκδόσεων του ίδιου υλισμικού, συνεπώς είναι σχεδόν αδύνατον να προσφερθούν χρήσιμες ανεξάρτητες προϊόντος οδηγίες για συστήματα βασισμένα στην αρχιτεκτονική ARM.

3.6.3. Ρύθμιση της διεύθυνσης MAC του ethernet για U-Boot

Η διεύθυνση MAC κάθε διεπαφής ethernet θα πρέπει, κανονικά, να είναι καθολικά, και πρέπει, επίσης, να είναι τεχνικά μοναδική εντός του πεδίου του ethernet broadcast.Για να επιτευχθεί αυτό, ο κατασκευαστής αντιστοιχίζει συνήθως ένα μπλοκ διευθύνσεων MAC από μια κεντρικά διαχειριζόμενη "δεξαμενή" διευθύνσεων (για την οποία θα πρέπει να πληρωθεί ένα σχετικό τίμημα) και προρυθμίζει μια από αυτές τις διευθύνσεις σε κάθε ένα από τα αντικείμενα που έχουν πουληθεί.

Στην περίπτωση μητρικών ανάπτυξης, ο κατασκευαστής θέλει, μερικές φορές, να αποφύγει την πληρωμή αυτού του τιμήματος και έτσι παρέχει διευθύνσεις που δεν είναι καθολικά μοναδικές. Σ' αυτές τις περιπτώσεις οι χρήστες θα πρέπει να ορίσουν οι ίδιοι διευθύνσεις MAC για τα συστήματά τους. Αν δεν έχει οριστεί μια διεύθυνση MAC για μια διεπαφή ethernet, μερικοί οδηγοί δικτύου παράγουν μια τυχαία τέτοια διεύθυνση που μπορεί να αλλάζει σε κάθε επανεκκίνηση, και αν συμβαίνει αυτό η δικτυακή πρόσβαση θα μπορούσε να είναι εφικτή ακόμα και όταν ο χρήστης δεν έχει ορίσει μια διεύθυνση με το χέρι, αλλά, για παράδειγμα, η απόδοση μιας ημι-στατικής διεύθυνσης IP μέσω DHCP βασισμένη στην διεύθυνση MAC του αιτούντος συστήματος-πελάτη προφανώς δεν θα δούλευε αξιόπιστα.

Για να αποφευχθούν ασυμφωνίες με υπάρχουσες διευθύνσεις MAC που έχουν αποδοθεί επίσημα, υπάρχει μια δεξαμενή διευθύνσεων που είναι δεσμευμένη για τις λεγόμενες «τοπικά διαχειριζόμενες» διευθύνσεις. Καθορίζεται από την τιμή δύο συγκεκριμένων bit στο πρώτο byte της διεύθυνσης (το άρθρο «MAC address» στην αγγλική Wikipedia προσφέρει μια καλή εξήγηση). Στην πράξη αυτό σημαίνει ότι πχ. οποιαδήποτε διεύθυνση που αρχίζει με ένα δεκαεξαδικό ca (τέτοια όπως ca:ff:ee:12:34:56) μπορεί να χρησιμοποιηθεί ως μια τοπικά διαχειριζόμενη διεύθυνση.

Σε συστήματα που χρησιμοποιούν το U-Boot ως υλισμικό συστήματος, η διεύθυνση MAC του ethernet τοποθετείται στην μεταβλητή περιβάλλοντος «ethaddr». Μπορεί να ελεγχθεί στο προτρεπτικό εντολής του U-Boot με την εντολή «printenv ethaddr» και μπορεί να καθοριστεί με την εντολή «setenv ethaddr ca:ff:ee:12:34:56». Αφού έχει ρυθμιστεί η τιμή, η εντολή «saveenv» κάνει την απόδοση αυτή μόνιμη.

3.6.4. Ζητήματα μετεγκατάστασης Kernel/Initrd/Device-Tree για U-Boot

Σε μερικά συστήματα με παλιότερες εκδόσεις του U-Boot μπορεί να υπάρχουν προβλήματα με την κανονική μετεγκατάσταση του πυρήνα του Linux kernel, την αρχική εικόνα δίσκου μνήμης RAM ramdisk και το αντικείμενο του δέντρου-συσκευών (blob) στην μνήμη πριν τη διαδικασία εκκίνησης. Σ' αυτή την περίπτωση, το U-Boot εμφανίζει το μήνυμα «Starting kernel ...», αλλά το σύστημα "παγώνει", στη συνέχεια, χωρίς να παράγει κάποια έξοδο. Τα ζητήματα αυτά έχουν επιλυθεί με νεώτερες εκδόσεις του U-Boot ξεκινώντας από την έκδοση v2014.07 και μετά.

Αν το σύστημα είχε αρχικά χρησιμοποιήσει μια έκδοση του U-Boot παλιότερη από την έκδοση v2014.07 και έχει αναβαθμιστεί σε μια νεώτερη έκδοση αργότερα, τπ πρόβλημα ίσως εμφανιστεί ακόμα και μετά την αναβάθμιση του U-Boot. Η αναβάθμιση του U-Boot δεν τροποποιεί, συνήθως, τις υπάρχουσες μεταβλητές περιβάλλοντος του U-Boot και η διόρθωση του προβλήματος απαιτεί τον καθορισμό μιας επιπρόσθετης μεταβλητής (bootm_size), κάτι που το U-Boot κάνει αυτόματα μόνο σε "φρέσκιες" εγκαταστάσεις χωρίς προηγούμενα δεδομένα περιβάλλοντος. Είναι δυνατόν να ρυθμίσετε την μεταβλητή bootm_size με το χέρι ώστα να είναι η νέα προκαθορισμένη τιμή του U-Boot εκτελώντας την εντολή «env default bootm_size; saveenv» στο προτρεπτικό του U-Boot.

Μια άλλη δυνατότητα για αποφυγή προβλημάτων σχετικών με την μετεγκατάσταση είναι η εκτέλεση της εντολής «setenv fdt_high ffffffff; setenv initrd_high 0xffffffff; saveenv» στο προτρεπτικό του the U-Boot για την πλήρη απενεργοποίηση της μετεγκατάστασης της αρχικού δισκου μνήμης RAM ramdisk και του blob του δέντρου-συσκευών.