Πριν λίγες ημέρες η Canonical, ανακοίνωσε την διαθεσιμότητα του Ubuntu Core 18, ένα λειτουργικό σύστημα για IoT συσκευές το οποίο θα λαμβάνει ενημερώσεις για τα επόμενα 10 χρόνια. Φυσικά είναι ελεύθερο και δωρεάν και οποιοσδήποτε θέλει μπορεί να το κατεβάσει και να το δοκιμάσει σε εικονική μηχανή στον υπολογιστή του αλλά και σε μερικά από τα γνωστότερα single-board computers.
Ας δούμε όμως σε τι διαφέρει η διανομή Ubuntu Core από ένα παραδοσιακό λειτουργικό σύστημα.
Όπως γνωρίζουν οι περισσότεροι, η Canonical διαθέτει το Ubuntu για συστήματα Desktop και Server ενώ πριν λίγα χρόνια ξεκίνησε και το Ubuntu Core για συστήματα IoT. Η τελευταία έκδοση του Ubuntu Core 18, σύμφωνα με την επίσημη ανακοίνωση1 θα λαμβάνει ενημερώσεις ασφαλείας και διορθώσεων για 10 χρόνια.
Σε αντίθεση με το «παραδοσιακό» Ubuntu, το Ubuntu Core είναι κατασκευασμένο με εντελώς διαφορετικό τρόπο με σκοπό να μπορεί να ενημερώνεται αυτόματα, οι εφαρμογές να είναι απομονωμένες από το λειτουργικό σύστημα και να διαθέτει αυτόματο roll-back σε πρότερη λειτουργική κατάσταση σε περίπτωση που δεν είναι δυνατή η εκκίνηση του συστήματος.
Για να μπορέσουμε να κατανοήσουμε την δομή του Ubuntu Core θα χρειαστεί να φέρουμε στο μυαλό μας το πως είναι δομημένο ένα λειτουργικό για κινητά τηλέφωνα (πχ Android). Αν, όσο διαβάζετε το παρακάτω, το «φανταστείτε» ως ένα λειτουργικό που διαθέτει κάποιες από τις ιδιότητες που έχουν τα λειτουργικά για κινητά, θα σας είναι πιο «εύπεπτο» ως ιδέα.
Τι είναι το Ubuntu Core;
Το Ubuntu Core2 λοιπόν είναι ένα μινιμαλιστικό λειτουργικό σύστημα Ubuntu, το οποίο έχει διαμορφωθεί με τέτοιο τρόπο, ώστε να μπορεί να χρησιμοποιηθεί ως λειτουργικό σύστημα σε συσκευές IoT, όπως έξυπνες συσκευές σπιτιού, εργασιακού χώρου, βιομηχανικών αυτοματισμών, ρομποτικής και πολλά άλλα.
Σε μέγεθος είναι περίπου 250 MB και το κατεβάζετε ως έτοιμο image για να το γράψετε σε κάποια SD ή να το τρέξετε σε εικονικό υπολογιστή KVM.
Σε τι διαφέρει το Ubuntu Core από το Ubuntu και τις παράγωγες διανομές;
Σε αντίθεση με το παραδοσιακό Ubuntu, όπου τα πάντα αποθηκεύονται και κατανέμονται σε ένα σύστημα καταλόγου (δείτε το σχετικό άρθρο Πως είναι διαμορφωμένο το σύστημα αρχείων του Linux;) το Ubuntu Core διαφέρει στο γεγονός ότι όλο το λειτουργικό σύστημα αποτελείται από Snap πακέτα.
Όπως είχαμε μιλήσει στο εισαγωγικό άρθρο για το τι είναι τα Snap πακέτα, τα snap πακέτα αποτελούν
- στιγμιότυπα εφαρμογών (app images)
- με περιορισμούς σε δικαιώματα χρήσης των πόρων και συσκευών του συστήματος
- είναι read-only
- ψηφιακά υπογεγραμμένα για να διασφαλίζουν την ακεραιότητα του λογισμικού IoT
Αν έχετε ασχοληθεί με ROMs του Android, τα παραπάνω λογικά σας θυμίζουν κάτι, σωστά; Όπως λοιπόν στο Android η αναβάθμιση του λειτουργικού είναι ανεξάρτητη των εφαρμογών, έτσι και στο Ubuntu Core, το λειτουργικό σύστημα και ο πυρήνας είναι ανεξάρτητα των εφαρμογών snap που τρέχει ο χρήστης. Επίσης, όπως στο Android οι ενημερώσεις του συστήματος και των εφαρμογών είναι συναλλακτικές (transactional) έτσι και στο Ubuntu Core αν μια αναβάθμιση – εγκατάσταση λογισμικού δεν ολοκληρωθεί σωστά, το σύστημα αυτόματα και χωρίς την παρέμβαση του χρήστη κάνει επαναφορά την προηγούμενη έκδοση.
Αυτές οι ιδιότητες που αναφέραμε (η απομόνωση, read-only σύστημα αρχείων, transactinal updates, δικαιώματα εφαρμογών) είναι κρίσιμης σημασίας διότι επιτρέπει στους προγραμματιστές και τους κατασκευαστές IoT να επικυρώνουν τις εφαρμογές και τις ενημερώσεις σε ολόκληρο το οικοσύστημα των συσκευών, προτού αυτά εφαρμοστούν και ενεργοποιηθούν. Σκεφτείτε λίγο, πόσο σημαντικό είναι για μια εταιρεία που κατασκευάζει χιλιάδες έξυπνες συσκευές, να μπορεί να τα ενημερώνει με διορθώσεις ασφαλείας και να μπορεί να είναι σίγουρη ότι οι δικλείδες ασφαλείας του λειτουργικού θα διασφαλίσουν την ακεραιότητα και την αξιοπιστία των συσκευών της και δεν θα προκαλέσουν προβλήματα στους χρήστες.
Παρόλο που όπως έχουμε δει, το κλασσικό Ubuntu αλλά και άλλες διανομές μπορούν να τρέχουν εφαρμογές snap, το Ubuntu Core διαφέρει σε βασικά σημεία από την παραδοσιακή διανομή3.
Ubuntu Core | Ubuntu | |
---|---|---|
Minimum απαιτήσεις | 500 MHz μονοπύρινος CPU 256 MB RAM 512 MB Αποθ. χώρος | 1 GHz dual core CPU 1GB RAM 2 GB Αποθ. χώρος |
Γραφικό περιβάλλον | Δεν διαθέτει | GNOME ή άλλα γραφικά περιβάλλοντα |
Σύστημα εγκατάστασης εφαρμογών | snap | Deb και snap πακέτα |
Ασφάλεια εφαρμογών | Απομόνωση μέσω AppArmor και Seccomp | Δικαιώματα χρηστών (για τα Deb) και απομόνωση μέσω AppArmor και Seccomp (για τα snap) |
Ενημερώσεις | Αυτόματες
Λαμβάνονται από δημόσιο Store & προαιρετικά από ιδιωτικό Store (εταιρικό) Όλες οι ενημερώσεις είναι συναλλακτικές | Μη αυτόματες (εξαιρούνται οι ασφαλείας)
Παραδοσιακές ενημερώσεις μέσω αποθετηρίων για τα Deb. Για τα Snap οι ενημερώσεις είναι συναλλακτικές |
Διαθέτει γραφικό περιβάλλον;
Όπως θα είδατε και από τον παραπάνω πίνακα, το Ubuntu Core δεν διαθέτει γραφικό περιβάλλον αλλά μπορεί να χρησιμοποιήσει το Wayland ή το Mir, σε περίπτωση που ο κατασκευαστής μιας εφαρμογής ή συσκευής IoT το χρειαστεί (πχ ένα ξενοδοχείο που χρειάζεται kiosk). Με λίγα λόγια η διαχείρισή του ubuntu core γίνεται μέσω τερματικού.
Σε τι μπορεί να χρησιμεύσει στον οικιακό χρήστη;
Μέχρι στιγμής, με αυτά που έχετε διαβάσει, μπορεί να μοιάζει ότι το Ubuntu Core απαιτεί γνώσεις μηχανικού για να το χρησιμοποιήσει κανείς.
Αντιθέτως, αν έχετε ακολουθήσει τον οδηγό μας σχετικά με εγκατάσταση home server σε raspbery pi, η έχετε χρησιμοποιήσει κάποιο single board computer, τότε μπορείτε να χρησιμοποιήσετε το Ubuntu Core για να στήσετε σε αυτό π.χ. με μία εντολή ένα ολόκληρο σύστημα διαχείρισης αρχείων όπως το Nextcloud και να μην ασχοληθείτε ποτέ με ενημερώσεις του Ubuntu Core και του Nextcloud.
Που μπορώ να το κάνω εγκατάσταση;
To Ubuntu Core μπορεί να γίνει εγκατάσταση σε:
- Raspberry Pi 2 και μετέπειτα
- Raspberry Pi Compute Module 3
- Orange Pi Zero
- DragonBoard 410c
- Intel NUC
- Samsung Artik 5 και 10
- Intel Joule
- Στον υπολογιστή σας μέσω εικονικού υπολογιστή KVM
Για την λήψη του κατάλληλου image επισκεφτείτε την σελίδα λήψης. Αν σκοπεύετε να χρησιμοποιήσετε σε κάποιο από τα παραπάνω single board, μπορείτε να χρησιμοποιήσετε το Etcher για να το γράψετε σε SD κάρτα.
Πως κάνω εγκατάσταση προγραμμάτων στο Ubuntu Core
Ο βασικός τρόπος εγκατάστασης εφαρμογών στο Ubuntu Core, όπως είδαμε είναι με την χρήση του snap. Έχουμε δει στα παρακάτω άρθρα την χρήση του snap όχι μόνο στο Ubuntu αλλά και στις περισσότερες διανομές:
- Πώς ρυθμίζουμε την Linux διανομή μας για τα Snap πακέτα
- Snap Package: Η νέα μορφή πακέτων εγκατάστασης για Ubuntu (Μέρος 1)
- Video: Βασικές εντολές και χρήση του Snap για εγκατάσταση πακέτων (Μέρος 2)
Πέρα από το Snap, στο Ubuntu Core μπορούν να χρησιμοποιηθούν και Docker images όπως επίσης και LXD containers (όπως το κάνει το ChromeOS) σε περίπτωση που κάποια υπηρεσία η εφαρμογή δεν είναι διαθέσιμη σε snap πακέτο.
Επίλογος
Όσοι ασχολούνται με την κατασκευή έξυπνων συσκευών λογικά θα έχουν ακούσει για το Ubuntu Core. Αυτό όμως δεν σημαίνει ότι και κάποιος «οικιακός χρήστης» με όρεξη και διάθεση πειραματισμών, δεν μπορεί να χρησιμοποιήσει το Ubuntu Core.
Με άλλα λόγια, μπορεί μεν το Ubuntu Core να χρησιμοποιείται σε ένα ευρύ φάσμα συσκευών από μεγάλες εταιρείες όπως οι Dell, Rigado, Intel, Qualcomm, Samsung, NXP, Vodafone, αλλά και από οργανισμούς όπως η Ευρωπαϊκή Διαστημική Υπηρεσία, αυτό δεν σημαίνει ότι δεν μπορούμε και εμείς στο σπίτι μας να φτιάξουμε κάτι χρήσιμο με το Ubuntu Core.
Παραπομπές:
- Ubuntu Core 18 released for secure, reliable IoT devices ↩
- Ubuntu Core (επίσημη ιστοσελίδα) ↩
- Ubuntu Core Documentation ↩
Πολύ ωραίο… Το core είναι ότι πρέπει για ειδικές χρήσεις, όπως λέει και το πολύ κατατοπιστικό άρθρο. Ένας developer για παράδειγμα, που αναπτύσσει ένα data logger application με ένα web server σε single board computer και θέλει να ξέρει ότι η εφαρμογή του θα τρέχει σωστά και με ασφάλεια no matter what, το προτιμά και δεν ασχολείται με το τι κάνει το λειτουργικό. Και αμέτρητα αντίστοιχα παραδείγματα!
Ακριβώς ! Όταν το board σου για παράδειγμα τρέχει σε ένα θερμοκήπιο, σε μια κεραία η και σε άλλες αντίξοες συνθήκες, θέλεις να ξέρεις ότι μια διακοπή ρεύματος κατά την διάρκεια που εσύ στέλνεις ένα update δεν θα προκαλέσει πρόβλημα διότι πολύ απλά στο reboot που θα κάνει το σύστημα θα επανέλθει στην πρότερη κατάσταση.
Τα μισώ τα transactional-updates. Ο τρόπος λειτουργίας τους — αν και έχει καλές προθέσεις — στην πράξη δείχνει να έχει πάρα, μα πάρα, μα πάρα πολλά προβλήματα. Υπάρχουν ένα κάρο εφαρμογές οι οποίες απαιτούν να «γράψουν» σε κάποια σημεία του δίσκου. Πέρα από αυτό, κάθε ΙοΤ αγρότης έχει μερικές δεκάδες από δ’αύτα, συνεπώς έχει ένα conf.management εργαλείο από πίσω. Δεν φαντάζεστε το ΧΑΟΣ που δημιουργείται εκεί πέρα, αφού το εργαλείο αυτό _δεν_ έχει φτιαχτεί για να υποστηρίζει τέτοια συστήματα. Εκτός από αυτό, σκεφτείτε λίγο τα bugs ενός τέτοιου συστήματος, είναι πολύ πιθανό να διαγράψει λάθος snapshot και να καταλήξεις να ακόμα παλαιότερες εκδόσεις. Πόσο μάλλον αν αυτό χρησιμοποιείται για κάποιο κλαστεράκι… κλάμα. Τα περισσότερα συστήματα από αυτά είναι υπερβολικά μικρά, δεν έχουν ούτε τα βασικά εργαλεία για debugging, και θα πολύ απλά θα σας σπάσουν τα νεύρα με το πόσες φορές θα πρέπει να κάνετε reboot για να μία εγκατάσταση ενός πακέτου (και στο τέλος να μείνετε εκτός χώρου, γιατί τα snapshots φάγαν όλο τον δίσκο).
Η καλύτερη υλοποίηση μέχρι στιγμής είναι αυτή του openSUSE Kubic, όλες οι άλλες υλοποιήσεις πάσχουν τεχνικά. Θα μπορούσα να μιλήσω αλλα θα γραψω wall of text.
Η δική μου εκτίμηση πάντως είναι πως αν και είναι καλή ιδέα, είναι το άριστο παράδειγμα όπου η θεωρία διαφέρει από την πράξη. Αυτό που θα έκανα εγώ στα Raspberrάκια μου είναι να τα βάλω RanchOS (check it).
Πράγματι είναι σε αρκετά αρχικά στάδια η όλη χρήση των transactional update αλλά παρόλα αυτά βλέπω να την υποθέτουν οι Telcos, ρομποτικής και λοιπές εταιρείες.
Επίσης και εγώ δεν βρήκα, όπως είπες κάποια υλοποιηση για «κεντρική» διαχείριση των iot συσκευών (μόνο proprietary συστήματα)
Θα τα τσεκαρω τα projects που ανέφερες ! thanks για το heads-up.
Πολύ ωραίο και ενδιαφέρον άρθρο που αποσαφυνίζει επακριβώς τον λόγο υπάρξεις του Ubuntu Core – που πολύ απορούσαν ( ένας από αυτούς ήμουν και εγώ ).
Πιστεύω θα βοηθούσε εξίσου και μια παρόμοια ανάλυση και για το Ubuntu cloud.
Μου αρέσει πολύ που αναφέρεις ως παράδειγμα το Nextcloud.
«με μία εντολή ένα ολόκληρο σύστημα διαχείρισης αρχείων όπως το Nextcloud και να μην ασχοληθείτε ποτέ με ενημερώσεις του Ubuntu Core και του Nextcloud.».
Τι στείνει δλδ ; Πως εγκαθιστά το Nextcloud και πόσο ελεύθερο σε αφήνει ώστε να το παραμετροποιείσεις ;
Και όσο για το Ubuntu Core οκ παίρνει μόνο του ενημερώσεις, το Nextcloud όμως θα ενημερώνετε αυτόματα και αυτό ; Δε θα χρειάζεται να συνδεθώ εγώ και να του κάνω updates & upgrades ;
Φαίνεται σαν ένα πάρα πολύ σταθερό λειτουργικό σύστημα και λόγο αυτού έχει διαφορετική φιλοσοφία και αρχιτεκτονική ( όπως καταλαβαίνω ), σωστά ;
Ποια αλλά λειτουργικά είναι τα αντίστοιχα του Ubuntu Core ;
Δεν χρειάζεται να συνδέσεις για ενημερώσεις, γίνονται αυτόματα. Διάβασε σχετικά με τα snap πακέτα εδώ
https://cerebrux.net/2016/04/22/snap-package-ubuntu-ti-einai-egkatastash/
Το Nextcloud παραμένει όμως το γνωστό nextcloud και σε αφήνει να το παραμετροποιησεις
Αυτό το πετυχαίνει λόγο διαφορετικής δομής του λειτουργικού.