Archiso (Ελληνικά)
Το Archiso είναι μια μικρή συλλογή από δέσμες εντολών του κελύφους bash (bash scripts) οι οποίες είναι ικανές να παράγουν ένα πλήρως λειτουργικό live CD βασισμένο στο Arch Linux καθώς επίσης και εικόνες USB. Είναι ένα εργαλείο γενικού σκοπού, οπότε θα μπορούσε να χρησιμοποιηθεί ώστε να παράγει οτιδήποτε ξεκινώντας από συστήματα αποκατάστασης/ανάκτησης, δίσκους εγκατάστασης, έως live συστήματα CD/DVD/USB ειδικού σκοπού, και ποιός ξέρει τι άλλο. Με δύο λόγια, εάν το αποτέλεσμα περιλαμβάνει το Arch, μπορεί να το κάνει. Η καρδιά και η ψυχή του Archiso είναι το mkarchiso. Όλες οι πιθανές επιλογές του είναι καταγεγραμμένες στις οδηγίες χρήσης του, οπότε η κατευθείαν χρήση του δεν θα καλυφθεί εδώ. Αντιθέτως, το άρθρο αυτό θα λειτουργήσει ως οδηγός δημιουργίας του δικού σας live μέσου στο άψε σβήσε!
Προετοιμασία
Πριν ξεκινήσουμε, πρέπει να έχουμε στην κατοχή μας τις δέσμες ενεργειών του archiso οι οποίες φέρουν εις πέρας τον όγκο της εργασίας για μας. Μπορείτε να αποκτήσετε το archiso από το Git (συνιστάται) ή από το archiso-gitAUR. Επίσης χρειαζόμαστε κάποια πακέτα στα οποία βασίζεται το archiso; Οι ακόλουθες εντολές το φροντίζουν αυτό για μας:
# pacman -S make git libisoburn squashfs-tools rsync --needed # git clone https://gitlab.archlinux.org/archlinux/archiso.git # make -C archiso/archiso install
Δημιουργήστε έναν κατάλογο εργασίας, εκεί θα λαμβάνουν χώρα όλες οι τροποποιήσεις της live εικόνας: ~/archlive είναι μια χαρά.
$ mkdir ~/archlive
Οι δέσμες ενεργειών του archiso που εγκαταστάθηκαν στο σύστημα σας νωρίτερα τώρα πρέπει να αντιγραφούν στο καινούριο κατάλογο εργασίας που δημιουργήσαμε. Το Archiso φέρει δυο "προφιλ": releng, και baseline. Εάν θέλετε να δημιουργήσετε μια πλήρως προσαρμοσμένη live έκδοση του Arch Linux, με όλα τα αγαπημένα σας προγράμματα και τις ρυθμίσεις προ-εγκατεστημένα, χρησιμοποιήστε το "releng". Εάν απλά θέλετε να δημιουργήσετε ένα βασικό μέσο, χωρίς προ-εγκατεστημένα πακέτα και ελάχιστες ρυθμίσεις, τότε χρησιμοποιήστε το "baseline".
Ανάλογα με τις ανάγκες σας, εκτελέστε τα ακόλουθα, αντικαθιστώντας το 'PROFILE' με το releng ή baseline.
# cp -r /usr/share/archiso/configs/PROFILE/ ~/archlive
Αν χρησιμοποιείτε το προφίλ 'releng' ώστε να δημιουργήσετε μια πλήρως προσαρμοσμένη εικόνα, μπορείτε να προχωρήσετε στο τμήμα Archiso#Profile structure.
Αν χρησιμοποιείτε το προφίλ 'baseline' ώστε να δημιουργήσετε μια βασική εικόνα εγκατάστασης, τότε δεν θα χρειαστεί να κάνετε κάποιες προσαρμογές και μπορείτε να προχωρήσετε στο τμήμα Archiso#Build the ISO
Προετοιμασία (χειροκίνητος τρόπος)
Εάν έχετε ήδη ολοκληρώσει την διαδικασία της προετοιμασίας ακολουθώντας τον 'αυτόματο' τρόπο, δεν χρειάζεται να διαβάσετε αυτό το τμήμα. Εγκατάσταση βασικού συστήματος αρχείων
# mkarchiso init
Εγκατάσταση περισσότερων πακέτων (προαιρετικό)
# mkarchiso -p "pkg1 pkg2 pkg3 ... pkgN" install
Σε αυτό το σημείο, προσαρμόστε οτιδήποτε επιθυμείτε στην root-image, και αποσυνδεθείτε μόλις τελειώσετε.
# mkarchiso-r "bash" run
Εγκατάσταση εικόνας initramfs. Αντιγράψτε τα απαιτούμενα hooks στην root-image
# cp /lib/initcpio/hooks/archiso work/root-image/lib/initcpio/hooks # cp /lib/initcpio/install/archiso work/root-image/lib/initcpio/install
Δημιουργήστε ένα αρχείο ρυθμίσεων για το mkinitcpio work/root-image/etc/mkinitcpio-archiso.conf
HOOKS="base udev archiso pata scsi sata usb fw filesystems usbinput" COMPRESSION="xz"
Δημιουργήστε ένα κατάλογο με όνομα την αρχιτεκτονική του υπολογιστή σας, και παράγετε την εικόνα initramfs:
# mkdir work/root-image/boot/i686 # mkarchiso -r "mkinitcpio -c /etc/mkinitcpio-archiso.conf -k /boot/vmlinuz-linux -g /boot/i686/archiso.img" run
μετακινήστε τα kernel/initramfs στον κατάλογο boot/
# mkdir -p work/iso/arch/boot/i686 # mv work/root-image/boot/vmlinuz-linux work/iso/arch/boot/i686/vmlinuz # mv work/root-image/boot/i686/archiso.img work/iso/arch/boot/i686/archiso.img
Εγκατάσταση syslinux
Δημιουργήστε έναν κατάλογο.
# mkdir -p work/iso/arch/boot/syslinux
Δημιουργήστε το αρχείο work/iso/arch/boot/syslinux/syslinux.cfg.
DEFAULT menu.c32 PROMPT 0 MENU TITLE Arch Linux TIMEOUT 300 LABEL arch MENU LABEL Arch Linux LINUX /arch/boot/i686/vmlinuz INITRD /arch/boot/i686/archiso.img APPEND archisolabel=MY_ARCH ONTIMEOUT arch
Αντγράψτε το αρχείο menu.c32 καθώς είναι απαραίτητο για τις προηγούμενες ρυθμίσεις.
# cp work/root-image/usr/lib/syslinux/menu.c32 work/iso/arch/boot/syslinux/
Εγκατάσταση isolinux (προαιρετικό, χρειάζεται μόνο στην περίπτωση δημιουργίας εκκινήσιμης εικόνας iso)
# mkdir work/iso/isolinux # cp work/root-image/usr/lib/syslinux/isolinux.bin work/iso/isolinux/ # cp work/root-image/usr/lib/syslinux/isohdpfx.bin work/iso/isolinux/
Δημιουργήστε το αρχείο work/iso/isolinux/isolinux.cfg
DEFAULT loadconfig LABEL loadconfig CONFIG /arch/boot/syslinux/syslinux.cfg APPEND /arch/boot/syslinux/
Δημιουργήστε το αρχείο work/iso/arch/aitab.
# <img> <mnt> <arch> <sfs_comp> <fs_type> <fs_size> root-image / i686 xz ext4 50%
Δημιουργήστε όλες τις εικόνες συστημάτων αρχείων που ορίζονται στο αρχείο aitab (.fs .fs.sfs .sfs)
# mkarchiso prepare
Παράγετε μια εικόνα ISO 9660 εφοδιασμένη με την εικόνα εκκίνησης "El Torito" (προαιρετικό)
# mkarchiso -L "MY_ARCH" iso "my-arch.iso"
Παραμετροποίηση του live μέσου
Σε αυτό το τμήμα περιγράφεται αναλυτικά η διαδικασία παραμετροποίησης της εικόνας την οποία πρόκειται να δημιουργήσετε, επιτρέποντας σας να ορίσετε τα πακέτα και τις ρυθμίσεις που επιθυμείτε να περιέχονται στην live εικόνα.
Μεταβείτε στον κατάλογο που δημιουργήσαμε νωρίτερα (~/archlive/releng/ αν ακολουθήσατε αυτόν τον οδηγό), θα δείτε μια πλειάδα αρχείων και καταλόγων, θα ασχοληθούμε όμως μόνο με κάποιους εξ' αυτών, κυρίως: packages.* - σε αυτό το σημείο μπορείτε να ορίσετε, ένα προς ένα, τα πακέτα που επιθυμείτε να εγκαταστήσετε, και ο κατάλογος root-image - αυτός ο κατάλογος λειτουργεί ως ένα επικαλύπτον στρώμα μέσα στο οποίο θα κάνετε τις όποιες προσαρμογές.
Εγκατάσταση πακέτων
Θα χρειαστεί να δημιουργήσετε μια λίστα πακέτων τα οποία επιθυμείτε να εγκατασταθούν στο σύστημα του live CD σας. Ένα αρχείο της μορφής ένα πακέτο ανά γραμμή είναι κατάλληλο για την επίτευξη του στόχου. Ο τρόπος αυτός είναι ιδανικός για live CDs ειδικού σκοπού, απλά ορίστε τα πακέτα που επιθυμείτε και δημιουργείστε την εικόνα. Επεξεργαστείτε τα αρχεία packages.i686, ή packages.x86_64 ανάλογα με το αν επιθυμείτε να δημιουργήσετε μια εικόνα 32, ή 64 bit.
Προσθήκη χρήστη
Υπάρχουν δύο μέθοδοι για την δημιουργία ενός χρήστη: προσθέτοντας την αντίστοιχη εντολή useradd στο αρχείο rc.local, ή αντιγράφοντας και αντικαθιστώντας (και τροποποιώντας) τα αρχεία /etc/shadow, /etc/passwd, και /etc/group. Η τελευταία μέθοδος θα συζητηθεί σε αυτό το τμήμα.
Αντιγράψτε τα αρχεία /etc/shadow, /etc/passwd, και /etc/group απο το τοπικό σύστημα στον υπο-κατάλογο /etc/ του καταλόγου εργασίας (ο οποίος θα έπρεπε να είναι ο ~/archlive/releng/root-image/etc) π.χ.
# cp /etc/{shadow,passwd,group} ~/archlive/releng/root-image/etc/
Προσθήκη αρχείων στην εικόνα
Ο κατάλογος root-image λειτουργεί ως ένα επικαλύπτον στρώμα, σκεφτείτε τον σαν τον ριζικό κατάλογο '/' στο τρέχον σύστημα σας, οπότε οποιαδήποτε αρχεία τοποθετήσετε μέσα σε αυτόν τον κατάλογο θα αντιγραφεί κατά την εκκίνηση του συστήματος.
Εάν λοιπόν έχετε μία ομάδα δεσμών ενεργειών για το iptables στο συστημά σας τις οποίες θέλετε να χρησιμοποιήσετε στην live εικόνα σας, αντιγράψτε τις με τον ακόλουθο τρόπο:
# cp -r /etc/iptables ~/archlive/releng/root-image/etc
Η τοποθέτηση αρχείων στον αρχικό κατάλογο (εκκίνησης) χρηστών είναι λίγο διαφορετική διαδικασία. Μην τα τοποθετήσετε στον κατάλογο root-image/home, αντ'αυτού δημιουργήστε έναν υπο-κατάλογο skel στον root-image/ και τοποθετήστε τα εκεί. Εν συνεχεία θα προσθέσουμε τις αντίστοιχες εντολές στο αρχείο rc.local που θα δημιουργήσουμε στη συνέχεια ώστε να αντιγραφούν κατά την εκκίνηση και να ορίσουμε τα δικαιώματα χρήστη.
Καταρχήν, δημιουργήστε τον κατάλογο skel, αφού βεβαιωθείτε ότι βρίσκεστε μέσα στον κατάλογο (εάν δουλεύετε εκεί):
# cd ~/archlive/releng/root-image/etc && mkdir skel
Τώρα αντιγράψτε τα αρχεία που προρίζονται για τον 'αρχικό' κατάλογο χρήστη στον κατάλογο skel, και πάλι ενεργώντας ως ο χρήστης root! π.χ για το αρχείο .bashrc.
# cp ~/.bashrc ~/archlive/releng/root-image/etc/skel/
Μέσα στον κατάλογο root-image/etc/, δημιουργήστε το αρχείο rc.local, και βεβαιωθείτε ότι το ορίσατε ως εκτελέσιμο:
# cd ~/archlive/releng/root-image/etc && touch rc.local && chmod +x rc.local
Τώρα προσθέστε τα ακόλουθα στο αρχείο rc.local, αντικαθιστώντας τον όρο 'youruser' με το όνομα χρήστη που ορίσατε νωρίτερα.
# Δημιουργήστε τον κατάλογο χρήστη για την live συνεδρία if [ ! -d /home/youruser ]; then mkdir /home/youruser && chown youruser /home/youruser fi # αντιγράψτε τα αρχεία στον αρχικό κατάλογο χρήστη su -c "cp -r /etc/skel/.[a-zA-Z0-9]* /home/youruser/" youruser
aitab
Το υπάρχον/προκαθορισμένο αρχείο πρέπει να λειτουργήσει μια χαρά, οπότε δεν θα έπρεπε να το τροποποιήσετε.
Το αρχείο aitab περιέχει πληροφορίες που αφορούν τις εικόνες των συστημάτων αρχείων τα οποία πρέπει να δημιουργηθούν απο το mkarchiso και να προσαρτηθούν στο σύστημα στο στάδιο του initramfs απο το archiso hook. Αποτελείται απο κάποια πεδία τα οποία ορίζουν την συμπεριφορά των εικόνων.
# <img> <mnt> <arch> <sfs_comp> <fs_type> <fs_size>
- <img>
- Το όνομα εικόνας χωρίς την επέκταση (.fs .fs.sfs .sfs).
- <mnt>
- Σημείο προσάρτησης.
- <arch>
- Αρχιτεκτονική { i686 | x86_64 | any }.
- <sfs_comp>
- Τύπος συμπίεςσης SquashFS { gzip | lzo | xz }. Η ειδική τιμή "none" υποδηλώνει την μη χρήση του SquashFS.
- <fs_type>
- Ορισμός του τύπου του συστήματος αρχείων της εικόνας { ext4 | ext3 | ext2 | xfs }. Η ειδική τιμή "none" υποδηλώνει την μη χρήση ενός συστήματος αρχείων. Σε αυτή την περίπτωση όλα τα αρχεία ενσωματώνοντε κατευθείαν στο σύστημα αρχείων SquashFS.
- <fs_size>
- Η απόλυτη τιμή του μεγέθους της εικόνας του συστήματος αρχείων σε MiB (παράδειγμα: 100, 1000, 4096, κτλ) Μια σχετική τιμή του μεγέθους του ελέυθερου χώρου του συστήματος αρχείων [επι τοις εκατό] {1%..99%} (παράδειγμα 50%, 10%, 7%). ο αριθμός αυτός αποτελεί απλά μια εκτίμηση, και υπολογίζεται με έναν απλό τρόπο. Ο χώρος που χρησιμοποιήται + 10% (εκτιμώμενος για χρήση απο τα μετα-δεδομενα) + ο επιθυμητός χώρος%
Boot Loader
Το υπάρχον/προκαθορισμένο αρχείο πρέπει να λειτουργήσει μια χαρά, οπότε δεν θα έπρεπε να το τροποποιήσετε.
Λόγω της αρθρωτής φύσης του isolinux, μπορείτε να χρησιμοποιήσετε μια πληθώρα πρόσθετων μιας και όλα τα αρχεία *.c32 αντιγράφονται και είναι διαθέσιμα σε εσάς. Συμβουλευτείτε το official syslinux site και το archiso git repo. Χρησιμοποιώντας τα πρόσθετα, είναι δυνατόν να δημιουργήσετε οπτικά ελκυστικά και σύνθετα μενού. Συμβουλευτείτε εδώ.
Τελειώνοντας την root-image
Κάποιες συμβουλές οι οποίες δεν θα καλυφuούν από το παρόν άρθρο καθώς υπάρχουν ήδη άλλα άρθρα σε αυτό το wiki τα οποία πραγματεύονται τα θέματα αυτά, μπορείτε όμως ελεύθερα να τα προσθέσετε εδώ.
- Ρυθμίστε το αρχείο inittab ώστε να εκκινείτε κατευθείαν στο γραφικό περιβάλλον X
- Ρυθμίστε το αρχείο hosts
- Ρυθμίστε το αρχείο rc.conf (δεν απαιτούνται ειδικά αρθρώματα σε αυτό το σημείο)
- Ρυθμίστε το αρχείο sudoers
- Ρυθμίστε το αρχείο rc.local
- Συμπεριλάβετε περεταίρω artworks στο μέσο
- Συμπεριλάβετε περεταίρω εκτελέσιμο υλικό στον κατάλογο opt/
Δημιουργία του ISO
Πλέον είστε έτοιμοι να μετατρέψετε τα αρχεία σας σε.iso το οποίο μπορείτε εν συνεχεία να γράψετε σε CD ή USB: Μέσα στον κατάλογο εργασίας, ~/archlive/releng, ή ~/archlive/baseline, εκτελέστε:
# ./build.sh -v build single netinstall
Μπορείτε να αντικαταστήσετε τον όρο 'netinstall' με τον όρο 'core' αν το επιθυμείτε; όμως, αυτό θα έχει σαν αποτέλεσμα την ενσωμάτωση όλων των πακέτων τα οποία ο pacman μεταφορτώνει στο αρχείο iso, κάτι το οποίο θα αυξήσει υπερβολικά το μεγεθός του.
Η δέσμη ενεργειών θα μεταφορτώσει και θα εγκαταστήσει τα πακέτα που ορίσατε στον κατάλογο work/*/root-image, θα δημιουργήσει τον πυρήνα και τις εικόνες init, θα εφαρμώσει τις προσαρμογές σας και τέλος θα δημιουργήσει το αρχείο iso στον κατάλογο out/.
Τώρα μπορείτε να αντιγράψετε το αρχείο iso με την εντολή dd σε ένα USB, για παράδειγμα:
# dd if=~/archlive/releng/out/*.iso of=/dev/sdx
Θα πρέπει να προσαρμόσετε την εντολή αναλόγως, και να βεβαιωθείτε ότι επιλέξατε το σωστό αρχείο εξόδου! Ένα μικρό λάθος θα καταστρέψει τα δεδομένα στον σκληρό σας δίσκο.