Ας φτιάξουμε έναν Home Server: Εγκατάσταση λειτουργικού (Μέρος 1)

Στο σημερινό άρθρο θα μάθουμε για την ARM αρχιτεκτονική και θα κάνουμε εγκατάσταση του λειτουργικού στον server μας.

pos-ftiaxnoume-home-server-meros1

Εισαγωγή

Στο προηγούμενο άρθρο, κάναμε μια εισαγωγή στις βασικές έννοιες που θα μας είναι χρήσιμες για να κατανοήσουμε την ορολογία που θα χρησιμοποιήσουμε για το project μας:

Στο παραπάνω μάθημα, μιλήσαμε για το υλικό / hardware που είναι προτιμότερο να χρησιμοποιήσουμε για αυτή την δουλειά. Παρότι εγώ θα χρησιμοποιήσω ένα Banana Pi για να κάνω την σειρά των μαθημάτων εσείς μπορείτε να χρησιμοποιήσετε όποιο άλλο έχετε διαθέσιμο όπως είδαμε στον συγκριτικό πίνακα των 81 boards.

Τέλος αν δεν διαθέτετε κάποιο board μπορείτε αν θέλετε να το κάνετε σε κάποιον υπολογιστή που έχετε παροπλισμένο κάπου ή ακόμα και σε μια εικονική μηχανή. Το σημαντικότερο από όλα είναι να έχετε διάθεση για μάθηση και πειραματισμό και στο τέλος να τα χαλάσετε και να τα ξαναφτιάξτε από την αρχή.

Λίγη ιστορία

Όλοι μας γνωρίζουμε τους υπολογιστές που είχαμε μέχρι τώρα μέσα από τα μάτια δύο γιγάντων, της Intel και της AMD στους επεξεργαστές (CPU). Η αρχιτεκτονική αυτών των υπολογιστών από την εποχή που το ξεκίνησε η Intel (1978), ονομάζεται x86 και η 64bit επέκτασή τους συνήθως ως x86_64 ή amd64. Γενικά όμως περιγράφονται ως x86 αρχιτεκτονική.

 

Ερχόμαστε στο 2008 και μετά, όπου μια αρχιτεκτονική γνωστή στην βιομηχανία embedded συστημάτων, αρχίζει να γνωρίζει άνθηση και στην χρήση της στα smartphone τις smart tv και τα tablet. Η αρχιτεκτονική ονομάζεται ARM και διάφοροι κατασκευαστές όπως η Qualcom και η Mediatec πιάνουν στον ύπνο τους γίγαντες της x86 αρχιτεκτονική και «σκοτώνουν» την όποια προσπάθεια ( καημένο Intel Atom…. χαχαχαχ) αυτών να μπουν στην αγορά των System on Chip / embedded συστημάτων.

Για εμάς τους καταναλωτές και χρήστες συσκευών smartphone και Single Board Computer (πχ. raspberry pi) μας ενδιαφέρει η κατανόηση αυτής της διαφοροποίησης της αρχιτεκτονικής της ARM και του x86 ώστε να αντιληφθούμε τις διαφορές τους και στο θέμα των επιδόσεων, κατανάλωσης ρεύματος, θερμοκρασιών, κόστους καθώς και των διαθέσιμων λειτουργικών συστημάτων και λογισμικών.

Είναι λοιπόν, διαφορετικά συστήματα με την ARM αρχιτεκτονική να την χαρακτηρίζουν πολύ καλές επιδόσεις, «εξευτελιστικά» χαμηλή κατανάλωση ρεύματος και το χαμηλό κόστος. Επίσης στην ARM αρχιτεκτονική αυτή την στιγμή, δύο είναι τα λειτουργικά συστήματα που ελέγχουν την αγορά. Από την μια στα smartphone είναι το Android και από την άλλη το Linux. Λυπάμαι, αλλά όποιες προσπάθειες έγιναν από την Microsoft για μεταφορά του Windows σε ARM αρχιτεκτονική απέβησαν, καταστροφικές για αυτήν. Επομένως όπως στην x86 βασιλιάς είναι το Windows έτσι στην ARM αρχιτεκτονική είναι το Linux.

Αυτή την στιγμή, αν όχι όλες, τουλάχιστον οι μεγάλες διανομές LInux, έχουν γίνει port και στην ARM αρχιτεκτονική μαζί φυσικά με την πλειοψηφία των λογισμικών που διαθέτουν στα αποθετήρια τους. Έχετε κατά νου λοιπόν, ότι υπάρχει μια στις 1000 των περιπτώσεων, κάποια στιγμή να θελήσετε να κάνετε εγκατάσταση κάποια λογισμικό στον server σας (π.χ. σε raspberry pi) που δεν είναι διαθέσιμο στα αποθετήρια λογισμικών και να συνηδητοποιήσετε ότι δεν έχει γίνει η μεταφορά του στην ARM αρχιτεκτονική. Προσωπικά, το είχα συναντήσει όταν δοκίμασα κάποια panel διαχείρισης όπως το VestaCP και το Virtualmin.

Μην ανησυχείτε όμως, το 99% των εφαρμογών που χρειαζόμαστε για δουλειές server, έχουν γίνει port στην ARM αρχιτεκτονική και μόνο με αυτές θα ασχοληθούμε.

Γνωριμία με το Board μας.

Σε γενικές γραμμές, ένα board όπως το Raspberry Pi, το Banana Pi, το Orange Pi κλπ αποτελείτε από :

  • Ένα επεξεργαστή 2+ πυρήνων
  • RAM από 1 GB και άνω
  • Δικτύωση με καλώδιο LAN ή και WiFi
  • USB θύρες
  • HDMI έξοδο σε περίπτωση που θέλουμε να το συνδέσουμε με οθόνη
  • Θύρα SD card για την φιλοξενία του λειτουργικού συστήματος

Πλέον κυκλοφορούν και boards με είσοδο για σύνδεση με εξωτερικό δίσκο SATA και κάποια έχουν και ενσωματωμένη μνήμη (eMMC) για το λειτουργικό σύστημα συνήθως 8GB και άνω. Τέλος πολλά έχουν και θύρες για σύνδεση με παρελκόμενα όπως μικρόφωνα, κάμερα, σύνδεση με Arduino και άλλα.

Επειδή τα περισσότερα board στην αγορά έρχονται ως έχουν (χωρίς δηλαδή περιφερικά), για τις ανάγκες του έργου θα χρησιμοποιήσω επίσης:

  • μια SD Card Class 10 (για τις ανάγκες του λειτουργικού και των λογισμικών)
  • καλώδιο MicroUSB με φορτιστή τουλάχιστον 2A (για παροχή ρεύματος)
  • καλώδιο δικτύου (για σύνδεση στο υφιστάμενο δίκτυο/internet)

Φυσικά εσείς θα πρέπει να ακολουθήσετε τις οδηγίες του κατασκευαστή του board σας για τα αναγκαία παρελκόμενα. Σχετικά με την SD Card να σημειώσω κάτι σημαντικό:

Οι κάρτες SD έχουν βελτιστοποιηθεί για διαδοχική ανάγνωση / εγράφή, όπως την απαιτούν οι κοινές ψηφιακές φωτογραφικές μηχανές. Αυτό αφορά την κατηγορία ταχύτητας δηλαδή το CLASS που βλέπετε πάνω στις SD. Και ενώ δεν πρέπει να αγοράσετε οποιαδήποτε κάρτα με βαθμολογία μικρότερη από την κατηγορία Class 10, παρόλα αυτά θα πρέπει κυρίως να φροντίσετε να επιλέξετε έναν που είναι γνωστό ότι εμφανίζει υψηλή απόδοση I/O τυχαίων δεδομένων μιας και αυτόν έχει σημασία στην περίπτωση των Single Board Computers παρά η Class στην οποία ανήκει.

Ενδεικτικά σας δίνω στην παρακάτω εικόνα 3 εξαιρετικά καλές επιλογές για χρήση στο board σας.

pos-ftiaxnoume-home-server-meros1-sdcard

Τέλος, καλό είναι να αγοράσετε κάποιο τροφοδοτικό εγκεκριμένο από τον κατασκευαστή σας ώστε να παρέχετε ακριβώς το απαιτούμενο ρεύμα για το board σας και για να αποφύγετε περίεργες διακυμάνσεις στις επιδόσεις του.

Λήψη και εγκατάσταση λειτουργικού

Εδώ θα χρειαστεί να έχουμε την SD κάρτα συνδεδεμένη σε θύρα του υπολογιστή μας και επίσης να έχουμε κατεβάσει μια διανομή συμβατή με την ARM αρχιτεκτονική. Όλοι σχεδόν οι κατασκευαστές των board τύπου raspberry pi έχουν στην ιστοσελίδα τους έτοιμα «image» των διανομών που είναι συμβατά με το board τους.

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

Είναι σημαντικό να τονίσουμε ότι αν ο θεωρούμε τον προσωπικό μας υπολογιστή σημαντικό για τις καθημερινές μας εργασίες, ο server που θα φτιάξουμε είναι πολλαπλάσια σημαντικότερος και θα πρέπει να είναι αξιόπιστος (σταθερός), ασφαλής (να έχει συνεχή υποστήριξη) και πάντα διαθέσιμος να εξυπηρετεί (server). Άρα η διανομή που θα διαλέξετε θα πρέπει να την γνωρίζετε καλά, να έχει μακράς διάρκειας υποστήριξη, να έχει «δοκιμαστεί» διαχρονικά ως Server και μεγάλη κοινότητα από πίσω που να παρέχει λύσεις για θέματα server.

Προσωπικά, θα χρησιμοποιήσω την διανομή Armbian η οποία έχει πολύ μεγάλη κοινότητα υποστήριξης, διαθέτει εκδόσεις server και desktop για μια πληθώρα από boards και βασίζεται σε διανομές Debian και Ubuntu LTS. Μπορείτε να δείτε αν θέλετε, τις διαθέσιμες εκδόσεις για διάφορα board εδώ:

Που είναι η SD Card

Αφού λοιπόν κατεβάσετε την διανομή σας ήρθε η ώρα να την γράψουμε στην SD Card που έχετε συνδέσει στον υπολογιστή σας. Ας τον εντοπίσουμε λοιπόν ανοίγοντας ένα τερματικό και χρησιμοποιώντας την εντολή lsblk:

pos-ftiaxnoume-home-server-meros1-lsblk

Όπως βλέπετε παραπάνω η SD card αναγνωρίζεται ως mmcblk0 και όπως βλέπετε δεν είναι προσαρτημένο σε κάποιον υποφάκελο (mount point). Αν σε εσάς είναι συνδεδεμένη π.χ. στον υποφάκελλο /media θα πρέπει να το αποσυνδέσετε όπως παρακάτω:

sudo umount /dev/mmcblk0p1

Έλεγχος ακεραιότητας

Έπειτα πάμε λοιπόν με την εντολή cd στον φάκελο που έχετε κατεβάσει την διανομή και την έχετε αποσυμπιέσει (αν ήρθε σε μορφή zip η 7z) η οποία συνήθως θα έχει κατάληξη img ή raw. Εγώ την κατέβασα και αποσυμπίεσα στον φάκελο /tmp του συστήματος. Είναι εξαιρετικά σημαντικό να επιβεβαιώσουμε την ακεραιότητα της διανομής που κατεβάσαμε ώστε να ήμαστε σίγουροι ότι:

  1. έχει κατέβει σωστά
  2. δεν έχει «παραβιαστεί» ο server που το φιλοξενεί και δεν έχει κακόβουλα αλλοιωθεί

Ο τρόπος επιβεβαίωσης εξαρτάτε από αυτόν που δίνει την διανομή και συνήθως περιλαμβάνει την σύγκριση της εξόδου που μας δίνει η md5sum , sha256sum και sha1sum με αυτήν που δίνει ο κατασκευαστής της διανομής. Για παράδειγμα αν η διανομή που κατεβάσατε στην ιστοσελίδα του δίνει ένα SHA τότε ελέγχετε αν αυτός ο αριθμός είναι ίδιος με τον αριθμό που εμφανίζει όταν τρέχετε το sha256sum στο αρχείο που κατεβάσατε όπως πχ παρακάτω:

sha256sum arxeio_onoma_dianomis.img

b838202bd25d7ead4f567450ae6e9787e5d5b9c678a18273b7b0d3239dc84371 arxeio_onoma_dianomis.img

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

Στην περίπτωσή μου με το Armbian, ο δημιουργός της διανομής χρησιμοποιεί ψηφιακή υπογραφή GPG οπότε η διαδικασία επιβεβαίωσης διαφέρει:

  1. πρώτα κάνουμε import το δημόσιο κλειδί του
    gpg --keyserver pgp.mit.edu --recv-key 9F0E78D5
  2. και έπειτα με αυτό επιβεβαιώνουμε την ακεραιότητα του αρχείου που κατεβάσαμε για την διανομή
    gpg --verify Armbian_4.83_Armada_Debian_jessie_3.10.94.raw.asc

pos-ftiaxnoume-home-server-meros1-gpgcheck

Όπως βλέπουμε και στην εικόνα, μας επέστρεψε :

gpg: Good signature from "Igor Pecovnik (Ljubljana, Slovenia)

Εγγραφή στην SD Card

Έχουμε λοιπόν ελέγξει το αρχείο της διανομή και τώρα με πολύ προσοχή …. ξαναλέω με πάρα μα πάρα πολύ προσοχή χρησιμοποιούμε την εντολή dd για να γράψουμε το αρχείο img/raw στην κάρτα SD.

sudo dd if=όνομα-αρχείου of=/dev/όνομα-συσκευής bs=1M && sudo sync

Η παραπάνω εντολή θα «καταστρέψει» τα πάντα στην SD Card και θα πάρει το αρχείο Armbian_5.10_Bananapipro_Debian_jessie_4.5.2.raw ( όνομα αρχείου ) και θα το γράψει στην mmcblk0 (όνομα συσκευής). Οπότε πρέπει να είστε πολύ προσεκτικοί μην βάλετε καμιά sda για όνομα συσκευής και αρχίσουν τα κλάματα….

Μόλις γράψετε την εντολή και πατήσετε enter και δώσετε το συνθηματικό σας, θα δείτε οτι ο κέρσορας πήγε στην κάτω γραμμή και…. απλά αναβοσβήνει… μην ανησυχείτε … αργεί να ολοκληρωθεί η μεταφορά. Αν θέλετε ανοίγοντας ένα δεύτερο τερματικό θα μπορείτε εκτελώντας την εντολή iotop να δείτε την εγγραφή σε εξέλιξη:

pos-ftiaxnoume-home-server-meros1-dd-iotop

Όπως βλέπετε στην παραπάνω εικόνα το ΙΟ χτύπησε ~95% απο την εντολή (COMMAND) dd. Όταν τελειώσει η εγγραφή θα δείτε μια έξοδο περίπου όπως παρακάτω:


sudo dd if=Armbian_5.10_Bananapipro_Debian_jessie_4.5.2.raw of=/dev/mmcblk0 bs=1M && sudo sync

1260+0 records in
1260+0 records out
1321205760 bytes (1.3 GB) copied, 75.6156 s, 17.5 MB/s

Επίλογος

Τελειώσαμε με την εγκατάσταση και μπορούμε πλέον να βγάλουμε την SD Card από τον υπολογιστή μας. Σήμερα μάθαμε αρκετά πραγματάκια:

  • ARM αρχιτεκτονική
  • Γενικά χαρακτηριστικά ενός Single Board Computer
  • Την σημασία της SD κάστας και του τροφοδοτικού
  • Τα κριτήρια επιλογής διανομής για server
  • Τις εντολές lsblk, dd, iotop
  • Τις εντολές επικύρωσης ακεραιότητας του αρχείου διανομής

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

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

8 thoughts on “Ας φτιάξουμε έναν Home Server: Εγκατάσταση λειτουργικού (Μέρος 1)

    • Μιλάω για την αλλοίωση του αρχείου που κατεβάσαμε στο οποίο μπορεί κάποιος κακόβουλος να έχει προσθέσει κάποιο back door. Δεν χρειάζεται να αλλάξουν τον κωδικό του server που το φιλοξενεί.
      Κλασσικά έχει γίνει μερικές φορές στο παρελθόν όπου π.χ. παραβιάστηκαν οι server που φιλοξενούσαν το ISO αρχείο εγκατάστασης του Linux Mint https://linuxmint.gr/index.php/topic,3947.0.html

  1. Πολύ καλό το θέμα των άρθρων και απίστευτα απλά γραμμένο και κατανοητό. Ανυπομονώ να ολοκληρωθεί η σειρά!
    Και η «dd» είναι όντως φοβερή εντολή αν ξέρεις να τη χειρίζεσαι. Διαφορετικά μπορεί να σημαίνει και «disk (ή data) distractor» 😲

    • Σωστό ! Το dd και οι χρήσεις του είναι από απλή εγγραφή ενός δίσκου σε άλλο μέχρι και πολύπλοκες αυτοματοποιημένες διαδικασίες δημιουργίας τυχαίων αρχείων για δοκιμές συστημάτων αρχείων. Έχω δει να το χρησιμοποιούν με ευφάνταστους τρόπους !

  2. Ευχαριστω για το αρθρο. Εξαιρετικο και ευνοητο. Μια ερωτηση ποιο γενικη θα ηθελα να κανω ομως. Εστω οτι δεν εχω raspberry και θελω να εγκαταστησω μια διανομη σε ενα παλιο μου smartphone (armv7) sony ericsson xperia) μπορω να ακολουθησω την ιδια διαδικασια;

    Αν οχι, σε ενα ποιο high level πως θα πρεπει να λειτουργησω; πως θα ξερω σε ποιο block device να γραψω το image με το dd?

    • Δεν μπορείς να το κάνεις σε κανένα smartphone. Διότι μπορεί να έχουν ARM επεξεργαστή, όλα τα άλλα υποσυστήματά του είναι εντελώς διαφορετικά. Ακόμα και το Ubuntu Phone OS το οποίο, ας πούμε είναι ένα καθαρό Linux, υποστηρίζει μόνο 3-4 συσκευές.

Απορίες, παρατηρήσεις, ιδέες... Ελεύθερα ! Πες την άποψή σου... έστω και Ανώνυμα:

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s