Ίσως πολλοί από τους χρήστες του GNU/Linux Υπό το πρίσμα των πρόσφατων κυβερνητικών πρωτοβουλιών για τη δημιουργία ενός «κυρίαρχου» Διαδικτύου, μας απασχολεί ο στόχος της προστασίας μας σε περίπτωση μη διαθεσιμότητας αποθετηρίων δημοφιλών διανομών GNU.Linux.
Ποιος κατεβάζει τα αποθετήρια; CentOS, Ubuntu, Debian, κάποιοι άνθρωποι δημιουργούν τις δικές τους διανομές με βάση τις υπάρχουσες διανομές, ενώ άλλοι είναι οπλισμένοι με βιβλία LFS (Linux Από την αρχή) και BLFS (Πέρα από Linux Από την Αρχή) έχει ήδη ξεκινήσει τη σύνταξη των διανομών του από τον πηγαίο κώδικα, καθώς πιστεύει ότι στις συνθήκες ενός "κυρίαρχου" Διαδικτύου, οι επιθέσεις χάκερ, οι επιδημίες ιών, οι διαρροές δεδομένων θα συμβούν αναπόφευκτα και τα δυαδικά αρχεία απλώς θα καταστούν παρωχημένα μετά από λίγο καιρό.
Πρόσφατα κατάφερα να μεταγλωττίσω μια εικονική μηχανή εξ ολοκλήρου από τον πηγαίο κώδικα χρησιμοποιώντας τις οδηγίες στο βιβλίο. Linux Από την αρχή Systemd Έκδοση έκδοσης 8.3. Ανυπομονώ να μοιραστώ τα αποτελέσματα μαζί σας.
Διαδικασία κατασκευής Linux
Διαδικασία κατασκευής Linux από τον πηγαίο κώδικα μπορεί να χωριστεί σε τρία στάδια:
- Ένα περιβάλλον κατασκευής LFS συναρμολογείται με βάση το υπάρχον λειτουργικό σύστημα.
- Το περιβάλλον κατασκευής θα δημιουργήσει μια εικόνα της εικονικής μηχανής LFS.
- Πρόσθετα πακέτα από το βιβλίο BLFS που δεν βρίσκονται στο βιβλίο LFS εγκαθίστανται στην εικονική μηχανή.
Στατικά αρχεία σεναρίων
Όταν εργάζεστε με το περιβάλλον κατασκευής, είναι βολικό να χρησιμοποιείτε το πρόχειρο και το SSH: Αντέγραψα τις εντολές από το βιβλίο και τις επικόλλησα στην κονσόλα περιβάλλοντος δημιουργίας.
Μετά την εκκίνηση της εικονικής μηχανής που δημιουργήθηκε, εμφανίστηκαν σοβαρά προβλήματα. Σε αντίθεση με ένα παράθυρο τερματικού, δεν μπορείτε να επικολλήσετε κώδικα σε ένα παράθυρο προγράμματος-πελάτη εικονικής μηχανής. Η πληκτρολόγηση εντολών χρησιμοποιώντας το πληκτρολόγιο είναι άβολη και υπάρχει μεγάλος κίνδυνος τυπογραφικών σφαλμάτων. Ο κίνδυνος των τυπογραφικών σφαλμάτων είναι ότι μπορεί να μην εμφανιστούν αμέσως, αλλά μετά από λίγο και να οδηγήσουν σε σοβαρά προβλήματα.
Είναι γνωστό ότι οι εντολές μπορούν να εισαχθούν όχι μόνο από το πληκτρολόγιο αλλά και από την τυπική ροή (STDIN). Η πηγή της τυπικής ροής μπορεί να είναι μια σειριακή θύρα, καθώς και το αποτέλεσμα του προγράμματος σεναρίου, η λεγόμενη τυπική έξοδος (STDOUT).
Πολλοί άνθρωποι γνωρίζουν ότι η εντολή wget μπορεί να εξάγει τα περιεχόμενα ενός ληφθέντος αρχείου σε τυπική έξοδο (STDOUT):
wget http://example.com -O -Εάν η έξοδος της εντολής wget αποσταλεί στον διερμηνέα, μπορεί να εκτελεστεί αυθαίρετος κώδικας. Ο κώδικας θα εκτελεστεί σαν να είχε πληκτρολογηθεί στο πληκτρολόγιο ή να είχε αντιγραφεί από το πρόχειρο:
wget http://umvirt.com/linux/helloworld.sh -O - | bashΜε αυτόν τον τρόπο, μπορείτε να τοποθετήσετε αρχεία με εντολές σε κάποιο διακομιστή Web και να στείλετε το περιεχόμενό τους στον διερμηνέα.
Δυναμικά αρχεία σεναρίων
Τα στατικά αρχεία είναι καλό, φυσικά, εάν γνωρίζετε ακριβώς τι πρέπει να γίνει, αλλά εάν εγκατασταθεί ένα πακέτο, εάν οι εξαρτήσεις δεν έχουν εγκατασταθεί ξεκάθαρα ή όχι, τότε τι;
Ο δυναμικός ιστότοπος που βασίζεται σε έρχεται στη διάσωση Διακομιστής Ιστού LAMP (Linux-Apache-MySQL-PHP). Εάν ένας ιστότοπος μπορεί να δημιουργεί δυναμικά σελίδες (αρχεία HTML) και εικόνες, τότε θα πρέπει να είναι σε θέση να χειρίζεται κανονικά αρχεία κειμένου.
Και έτσι έγινε. Έγραψε η ιστοσελίδα που δημιουργεί σενάρια για τον διερμηνέα Bash. Η βάση δεδομένων του ιστότοπου περιέχει πληροφορίες σχετικά με πακέτα, εξαρτήσεις, ενημερώσεις κώδικα, προσθήκες και εντολές κατασκευής.
Τώρα για να εγκαταστήσετε το πακέτο mc (midnight commander) μπορείτε να εισάγετε την εντολή:
wget --no-check-cerificate https://umvirt.com/linux/packages/0.1/mc/install -O - | bashΤο ίδιο το σενάριο τοποθεσίας θα λάβει δεδομένα από τη βάση δεδομένων και θα δημιουργήσει κώδικα ελέγχου εξάρτησης και κώδικα σεναρίου για την εγκατάσταση του πακέτου. Ο διερμηνέας θα επεξεργαστεί τις οδηγίες από το σενάριο.
Για να γίνει αυτό δυνατό, οι πληροφορίες σχετικά με τα εγκατεστημένα πακέτα αποθηκεύονται σε μια βάση δεδομένων στον δίσκο της εικονικής μηχανής.
Η βάση δεδομένων των εγκατεστημένων πακέτων βρίσκεται στον κατάλογο /var/cache/ulfs-packages είναι μια λίστα κενών αρχείων με ονόματα που αντιστοιχούν στα ονόματα των πακέτων.
Εάν το πακέτο δεν βρεθεί στη βάση δεδομένων, οι εξαρτήσεις εγκαθίστανται αναδρομικά.
Ανέσεις
Για να γίνει πιο βολική η εγκατάσταση πακέτων, ένας άλλος ιστότοπος έγραψε το σενάριο χιμπατζήδων , χρησιμοποιώντας τη βάση Πακέτα UmVirt LFS. Το κύριο καθήκον Βοηθός UmVirt LFS - αυτή είναι η εκτέλεση άλλων εντολών.
Με τον χιμπατζή, η εγκατάσταση πακέτων γίνεται ακόμα πιο εύκολη:
chimp install mcΕπίδειξη
Για να εξοικειωθείτε με το έργο των υπηρεσιών Πακέτα UmVirt LFS и Βοηθός UmVirt LFS μπορείτε να κατεβάσετε την εικόνα βάσης . Εγκαταστήστε το Xorg χρησιμοποιώντας μία εντολή:
chimp install XΕνώ το σενάριο εκτελείται, 141 πακέτα θα εγκατασταθούν αυτόματα. Για να εξοικονομήσετε χρόνο μεταγλώττισης, μπορείτε να αντικαταστήσετε την τιμή της μεταβλητής MAKEFLAGS στο αρχείο /etc/profile από "-j1" (ένα νήμα) σε, για παράδειγμα, "-j6" (έξι νήματα).
Αποκέντρωση και προσαρμογή
Για τους σκοπούς της διασφάλισης της ασφάλειας, της αυτονομίας και της προσαρμογής, ο πηγαίος κώδικας των πακέτων UmVirt LFS και των υπηρεσιών UmVirt LFS Assistant δημοσιεύεται σε δημόσιο τομέα. Οποιοσδήποτε μπορεί να το κατεβάσει, να το αναπτύξει και να τροποποιήσει υπηρεσίες εντός της υποδομής του.
Πηγή: www.habr.com
