Όταν μόλις ξεκινά η ανάπτυξη, συχνά δεν είναι ξεκάθαρο ποια πακέτα θα πάνε στα rootfs-στόχοι.
Με άλλα λόγια, είναι πολύ νωρίς για να πάρετε το LFS, το buildroot ή το yocto (ή κάτι άλλο), αλλά πρέπει ήδη να ξεκινήσετε. Για τους πλούσιους (έχω 4 GB eMMC σε πιλοτικά δείγματα) υπάρχει μια διέξοδος για τη διανομή στους προγραμματιστές μια διανομή που θα τους επιτρέψει να παραδώσουν γρήγορα κάτι που λείπει αυτήν τη στιγμή και, στη συνέχεια, μπορούμε πάντα να συλλέγουμε λίστες πακέτων και να δημιουργήσουμε μια λίστα για τα rootfs-στόχοι.
Αυτό το άρθρο δεν είναι νέο και είναι μια απλή οδηγία αντιγραφής-επικόλλησης.
Ο σκοπός του άρθρου είναι να δημιουργήσει Ubuntu rootfs για πίνακες ARM (στην περίπτωσή μου, με βάση το Colibri imx7d).
Χτίζοντας μια εικόνα
Συγκεντρώνουμε τα rootfs στόχους για αναπαραγωγή.
Αποσυσκευασία βάσης Ubuntu
Επιλέγουμε μόνοι μας την έκδοση με βάση τις ανάγκες και τις δικές μας προτιμήσεις. Εδώ έχω δώσει 20.
$ mkdir ubuntu20
$ cd ubuntu20
$ mkdir rootfs
$ wget http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04-base-armhf.tar.gz
$ tar xf ubuntu-base-20.04-base-armhf.tar.gz -C rootfs
Έλεγχος υποστήριξης BINFMT στον πυρήνα
Εάν έχετε μια κοινή διανομή, τότε υπάρχει υποστήριξη για BINFMT_MISC και όλα έχουν ρυθμιστεί, αν όχι, τότε είμαι σίγουρος ότι γνωρίζετε πώς να ενεργοποιήσετε την υποστήριξη BINFMT στον πυρήνα.
Βεβαιωθείτε ότι το BINFMT_MISC είναι ενεργοποιημένο στον πυρήνα:
Τα αρχεία κεφαλίδας πυρήνα και οι λειτουργικές μονάδες είναι ξεχωριστό θέμα. Φυσικά, δεν θα εγκαταστήσουμε τον bootloader, τον πυρήνα, τα modules, το δέντρο συσκευών μέσω Ubuntu. Θα μας έρθουν απ' έξω ή θα τα συναρμολογήσουμε μόνοι μας ή θα μας τα δώσει ο κατασκευαστής της πλακέτας, σε κάθε περίπτωση αυτό ξεφεύγει από το πεδίο εφαρμογής της παρούσας οδηγίας.
Σε κάποιο βαθμό, η απόκλιση έκδοσης είναι αποδεκτή, αλλά είναι καλύτερο να τις λάβετε από την κατασκευή του πυρήνα.
# apt install --yes linux-headers-generic
Ας δούμε τι έγινε και αποδείχτηκαν πολλά:
# apt clean
# du -d 0 -h / 2>/dev/null
770M /
Μην ξεχάσετε να ορίσετε έναν κωδικό πρόσβασης.
Συσκευασία της εικόνας
$ sudo tar -C rootfs --transform "s|^./||" --numeric-owner --owner=0 --group=0 -c ./ | tar --delete ./ | gzip > rootfs.tar.gz
Επιπλέον, μπορούμε να εγκαταστήσουμε το etckeeper με τη ρύθμιση autopush
Λοιπόν, ας υποθέσουμε ότι διανείμαμε τη συναρμολόγησή μας, ξεκίνησε η εργασία για το πώς να συναρμολογήσουμε καλύτερα αργότερα διαφορετικές εκδόσεις του συστήματός μας.
Μπορούμε, φυσικά, να δημιουργήσουμε υποκαταστήματα στη συσκευή εκ των προτέρων (ας πούμε ότι φτιάχνουμε ένα σενάριο ή μια υπηρεσία που θα εκτελεστεί την πρώτη φορά που θα εκκινηθεί).