How to create your own Linux distribution
2021-11-13, 14:00–15:30 (Europe/Athens), Room 3

💡 Want to learn how custom embedded Linux is built for IoT devices, the automotive, or the telecom?
💡 Curious about how to create your own operating system?

📅 Then join this, beginner-friendly, deep dive on the Yocto project!

🎓 LEARNING GOALS 🎓

After the workshop, the participants should be familiar with:

✔️ Yocto build fundamentals

✔️ Hardware & software-specific configuration

✔️ Simple bitbake recipes for C++ binaries built with CMake

✔️ Application launch on startup with systemd

✔️ WiFi connection & IP on startup


Καλώς ορίσατε σε ένα φιλικό προς αρχάριους εργαστήριο για το πώς να δημιουργήσετε τη δική σας διανομή Linux!

BACKGROUND

Οι mainstream διανομές Linux (π.χ. Ubuntu, ArchLinux) επιτρέπουν στους χρήστες τους να εκτελούν πληθώρα εργασιών και συχνά περιλαμβάνουν τα μέσα για περαιτέρω προσαρμογή του συστήματος μέσω ενός package manager, εργαλείων ανάπτυξης, περιβάλλοντος επιφάνειας εργασίας κ.λπ.
Ωστόσο, εάν θέλετε να δημιουργήσετε μια συσκευή με πολύ συγκεκριμένη χρήση η οποία πρέπει να λειτουργεί υπό αυστηρούς περιορισμούς όσον αφορά τους πόρους, την κατανάλωση ενέργειας, την απόδοση ή την αξιοπιστία, τότε η χρήση ενός mainstream λειτουργικού συστήματος είναι αδόκιμη. Αυτές οι περιστάσεις είναι συνηθισμένες κατά την ανάπτυξη ενσωματωμένων συστημάτων, που προορίζονται να χρησιμοποιηθούν σε μια εφαρμογή IoT, στον κλάδο της αυτοκινητοβιομηχανίας ή των τηλεπικοινωνιών και ούτω καθεξής.
Για να δημιουργήσετε ένα Embedded Linux λειτουργικό σύστημα, υπάρχουν δύο επιλογές:
1. "Golden Image": Συχνά η πρώτη επιλογή κατά την ανάπτυξη ενός πρωτότυπου με μια ήδη υπάρχουσα πλατφόρμα, π.χ. ένα Raspberry Pi.
Ένα γενικού σκοπού λειτουργικό σύστημα, όπως το Debian, τροποποιείται έως ότου ικανοποιεί τις απαιτήσεις του έργου. Στη συνέχεια δημιουργούνται και εγκαθίστανται κλώνοι αυτής της "χρυσής εικόνας" σε περισσότερες συσκευές.
Αυτό είναι αρκετά χρήσιμο για τη δημιουργία ενός proof-of-concept, αλλά γρήγορα καθίσταται αντιπαραγωγικό όταν το έργο γίνεται πιο περίπλοκο, μεγαλύτερο ή προκύπτει η ανάγκη ανάπτυξης παραλλαγών του προϊόντος.
2. Παραμετροποιήσιμη διανομή: Ο βιομηχανικά ενδεδειγμένος τρόπος δημιουργίας ενός Embedded Linux λειτουργικού συστήματος.
Αντί να διατηρείτε το λειτουργικό σύστημα ως μεγάλο binary αρχείο, τα συστατικά του στοιχεία του καθορίζονται μέσω αρχείων configuration, φιλικών προς version control. Αυτή η μέθοδος μπορεί μεν να είναι δυσκολότερη προς εκμάθηση, ωστόσο, είναι ο μόνος βιώσιμος τρόπος να προχωρήσουμε όταν πρόκειται για σοβαρή ανάπτυξη ενσωματωμένου συστήματος Linux.
Περισσότερα πάνω το θέμα: https://www.linuxjournal.com/content/linux-iot-development-adjusting-binary-os-yocto-project-workflow

ΕΡΓΑΣΤΗΡΙO

Σε αυτό το εργαστήριο, θα επιδείξουμε τα "συστατικά" που χρειάζεστε για να δημιουργήσετε τη δική σας διανομή Linux χρησιμοποιώντας το Yocto project. Εν τέλει θα τρέξουμε τη διανομή μας σε ένα Raspberry Pi.

Το Yocto είναι μια συλλογή εργαλείων και διαδικασιών που επιτρέπουν τη δημιουργία διαμορφώσιμων διανομών Linux. Καθορίζετε ποια components θα περιλαμβάνονται στο λειτουργικό σας σύστημα με ειδικά configuration αρχεία για το software και το hardware. Οι "recipes" καθορίζουν το πως θα γίνονται build αυτά τα components και τα dependencies τους. Τέλος, αυτές οι recipes χρησιμοποιούνται από το "bitbake" (ένα εργαλείο που προσφέρει η Yocto) για τη δημιουργία της δικής σας διανομής Linux.

Κατά τη διάρκεια του εργαστηρίου, θα εξετάσουμε τις ενέργειες που απαιτούνται για τη δημιουργία λειτουργικού συστήματος για μια τυπική συσκευή IoT. Η συσκευή ξεκινά, συνδέεται αυτόματα στο Διαδίκτυο και ξεκινά ένα πρόγραμμα C++ που λαμβάνει πληροφορίες από ένα cloud API.

ΠΡΟΑΠΑΙΤΟΥΜΕΝΑ

Δεν απαιτείται εμπειρία με το Yocto, ωστόσο, είναι απαραίτητη η εξοικείωση με το Linux ως λειτουργικό σύστημα και τα εργαλεία του.

I call myself a Software Engineer and a Maker. During the days I hack on embedded systems of all shapes and sizes. Having worked on systems running Yocto Linux and the Android Open Source Project (AOSP) I am very passionate about software architecture and clean code being the enablers for high quality, reusability, and maintainability. Consequently, I incorporate this mindset and principles into my way of working as I believe they are fundamental for agility and effectiveness.
Currently, I am employed by Zenseact in Gothenburg, Sweden, enabling autonomous drive for the next generation vehicles.

Usually, I spend my evenings on open source projects which I blog about. My favorite ones revolve around IoT, robotics and handheld gadgets where I love to develop the entire product stack. Hardware-wise, this includes everything from the PCB to the physical case around the electronics and software, from the embedded firmware to the cloud. Lately, I have also gotten into creating YouTube tutorials about software craftsmanship with C++ and embedded systems.

Last but not least, I teach the undergraduate DIT112 course on Systems Development as well as the DIT598 graduate course on Software Evolution at the University of Gothenburg.