Linux σε non Intel Πλατφόρµες. Το Πάντρεµα Debian µε SPARC Γιώργος Οικονόµου g.oikonomou@ccslab.aueb.gr
Κίνητρα Αρκετές διαφοροποιήσεις σε σχέση µε αυτά που ξέρουµε (όλοι;) Σε Software Σε Hardware Ο Κύριος της φωτο. Netra i 150 UltraSPARC 166MHz 384 Mbytes RAM 18 hot swappable δίσκους 2
LInux LOader not LILO. SILO: Sparc Improved LOader Για µηχανές SPARC MILO: MIni LOader Για µηχανές Alpha της Digital PALO: PA-risc LOader Για PA-RISC της HP 3
OpenBoot PROM. Το αντίστοιχο µε το BIOS των απλών PCs, αλλά για τα SUN Πολύ δυνατότερο: I/O ρυθµίσεις (ttya input, ttyb output) Device Diagnostic λειτουργίες (probe-scsi-all) Μπορεί να προγραµµατίσει κανείς σε Forth 4
Boot Sequence. boot [boot[ boot-device] ] [program[ program] ] [flags[ flags] Το OpenBoot εντοπίζει το boot-device Ξεκινάει ο first-stage loader από το bootblock του boot-device Ο first-stage loader ξεκινάει τον second-stage loader O second-stage loader ξεκινάει το program (δηλαδή τον πυρήνα) Ο second-stage stage bootblock δεν χωράει στο 5
Boot Sequence µε SILO. Το /sbin/silo Γράφει τον δικό του first-stage (/boot/first.b) στο bootblock. Ο first-stage είναι γραµµένος σε assembly Γράφει την διεύθυνση του πρώτου block του second-stage Καταχωρεί την τοποθεσία του configuration αρχείου (/etc/silo.conf) 6
Boot Sequence µε SILO. Τα τρία παραπάνω αρχεία πρέπει να είναι στον ίδιο δίσκο Άρα το /etc και το /boot στον ίδιο δίσκο; Όχι απαραίτητα silo C /boot/silo.conf ή ln s /etc/silo.conf /boot/silo.conf και απλά τρέχεις silo χωρίς arguments Ο second-stage stage (/boot/second.b) Μπορεί να ξεκινήσει οποιοδήποτε πυρήνα Καταλαβαίνει ext2, ufs, romfs, ISO9660 συστήµατα αρχείων 7
SILO So What? Και τι διαφορά έχει από το LILO; εν χρειάζεται να τρέχεις το /sbin/silo κάθε φορά που φτιάχνεις (ήχαλάς) πυρήνα. Χρειάζεται µόνο αν εγκατασταθεί καινούρια έκδοση του SILO ή όταν µετακινηθεί ο second-stage Είναι Interactive Βασικές λειτουργίες (cat /etc/silo.conf, ls xyz) /pci@1f,4000/ide/ata@0,0/cmdk@0,0;4/boo t/vmlinux.new root=/dev/hda4 (%$#@^%) 8
ίσκοι στον Κόσµο SUN/BSD. Disk Label Slice Partition Table Partition Slice c: Whole Disk Ξεκινάει από το Cylinder 0 Χρειάζεται για να µπορεί το OpenBoot να εντοπίσει τον first-stage loader Βασικά το OpenBoot βασίζεται στο Whole Disk για να µάθει τη γεωµετρία του δίσκου 9
Sun Disk Labels. Χρειάζεται αν θέλουµε: Να είναι bootable οδίσκος Στον ίδιο δίσκο να εγκαταστήσουµε Solaris και γενικά αν θέλουµε το Solaris να βλέπει το δίσκο Σε Linux µπορούµε να έχουµε και απλά DOS Disk Labels αλλά αυτοί οι δίσκοι θα είναι non-bootable και δεν θα µπορεί να τους δει το Solaris 10
Τι Τρέχει µε το fdisk; Είναι το µόνο που καταλαβαίνει Sun Disk Labels Άρα ξεχνάς cfdisk και sfdisk Μια καλή (;) εναλλακτική είναι ο parted (PARtition EDitor) 11
Κακές Συνήθειες του fdisk. 1 η κακή συνήθεια: Ξεκινάει το πρώτο slice από το cylinder 0 Αυτό είναι ΟΚ αν: το Slice Type είναι Linux Native Οπυρήναςδενθαγράψειποτέεκεί. εν είναι όµως καθόλου OK αν: το Slice Type είναι Linux Swap, Linux RAID Auto ή Linux LVM. Τα δεδοµένα θα γραφτούν πάνω από το Disk label, καταστρέφοντας το 12
Κακές Συνήθειες του fdisk. 2 η κακή συνήθεια: Φτιάχνει by default 3 slices Επιτρέπει διαγραφή του slice c Αντίθετα, στον parted το slice c είναι αόρατο Slice a Slice b Slice c Linux Native Linux Swap Whole Disk 93% 7% 13
Το fdisk εν ράσει /home/geo# fdisk /dev/sde Command (m for help): p Disk /dev/sde (Sun disk label): 67 heads, 62 sectors, 1007 cylinders Units = cylinders of 4154 * 512 bytes Device Flag Start End Blocks Id System /dev/sde1 0 983 2041691 83 Linux native /dev/sde2 u 983 1007 49848 82 Linux swap /dev/sde3 0 1007 2091539 5 Whole disk Command (m for help): 14
Κακές Συνήθειες του fdisk. 3 η κακή συνήθεια: Όταν φτιάχνεις καινούριο Sun Disk Label, δεν γίνεται auto configure η γεωµετρία CHS του δίσκου. Η καλύτερη λύση είναι να επιλέξεις Custom και να πας µεταdefault 15
Το fdisk εν ράσει Revisited. Command (m for help): s Building a new sun disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Drive type? auto configure 0 custom (with hardware detected defaults) a Quantum ProDrive 80S... r SUN2.1G s IOMEGA Jaz Select type (? for auto, 0 for custom): 16
Γιατί Σέρνεται το SSH; Στη Debian έχεις πρόβληµα µε το ssh Περίπου 35 δευτερόλεπτα για να φέρει login ο sshd Περίπου 5 λεπτά για να φτιάξει τα κλειδιά κατά την αρχική εγκατάσταση του ssh 17
Γιατί Σέρνεται το SSH; Ο λόγος: Η libssl (0.9.6c Debian/Stable) έχει γίνει build για την αρχιτεκτονική SPARC v7 (sun4, sun4c) δηλαδή τα απλά SPARC µηχανάκια Η libssl εκµεταλλεύεται κατά κόρον τα νέα Integer Multiplication, Division Instructions που υποστηρίζουν οι SPARC v8 (sun4m, sun4d) και v9 (UltraSPARC, sun4u) 18
Γιατί Σέρνεται το SSH; Η Λύση: Κάνεις ξανά build τη libssl, optimized για την αρχιτεκτονική του SPARC σου ή Εγκαθιστάς κάποιο έτοιµο, optimized Debian Package Αποτελέσµατα: Οι επιδόσεις απογειώνονται Ανάλογα µε την περίπτωση, από 7 ως 9+ φορές πάνω 19
Μια δοκιµή θα σας πείσει Με την αρχική libssl /home/geo# openssl speed rsa 4096 private rsa's for 10s: 1 4096 bit private RSA's in 44.62s 4096 public rsa's for 10s : 14 4096 bit public RSA's in 10.15s Με την optimized /home/geo # openssl speed rsa 4096 private rsa's for 10s: 2 4096 bit private RSA's in 11.06s 4096 public rsa's for 10s : 115 4096 bit public RSA's in 10.00s 20
64 bit Πυρήνες. Υποστηρίζονται 64bit CPUs O πυρήνας είναι 64bit Στο User Space οι εφαρµογές είναι 32bit 32bit userland Για να φτιάξεις πυρήνα θέλεις egcs64 compiler Με τον Stable egcs64 δεν φτιάχνεις 2.6 21
64 bit Πυρήνες. make vmlinux Και όχι [b]zimage Μπορείς όµως να τον κάνεις gzip µετά Το SILO τον αποσυµπιέζει σιωπηλά Υπάρχει βέβαια και το υπερ-package kernel-package στη Debian # make-kpkg kpkg -subarch=sun4u -arch-in-name name kernel_image # dpkg i kernel-image image-2.4.24-sun4u_10.00.custom_sparc.deb 22
Έχω Πολλούς ίσκους και δεν ξέρω τι να τους κάνω. /boot Βάζεις το /boot σε ένα µικρό slice ενός δίσκου µε Sun Disk Label Κάνεις mount το / σε συστοιχία RAID5 9 δίσκων µε reiserfs (λέµε τώρα) και είσαι ωραίος Swap Space (Πόσο; Πού;) Τι πρέπει να βάλω πού; TMTOWTDI 23
Πηγές Debian SPARC Port UltraLinux SILO MILO Mirrored Root RAID On Sparc64 Linux The Linux Partition HOWTO http://www.debian.org www.debian.org/ports/sparc/ http://www.ultralinux.org http://www.sparc www.sparc-boot.org http://www.linuxjournal.com/article.php?sid=1202 http://www.doorbot.com www.doorbot.com/guides/linux/sparc64/ /sparc64/rootraid/ http://www.tldp.org/howto/partition 24