* Ο οδηγός αυτός είναι κάπως μεγάλος γιατί πιάνει τον χρήστη από το επίπεδο μηδέν, οι περισσότεροι δεν θα θα χρειαστείτε παρά μόνο τις επιμέρους ενότητες ή τα Παραρτήματα.
Εισαγωγή
Λίγα λόγια για αυτό το κείμενο
Ο οδηγός αυτός ισχύει για όλα τα λειτουργικά συστήματα. Κάθε ένα κάνει τα ίδια πράγματα με διαφορετικό τρόπο ή δεν έχει καθόλου αυτή την δυνατότητα. Το DOS για παράδειγμα δεν υποστηρίζει - τουλάχιστον από μόνο του - δικτύωση. Άλλα όπως τα Windows προσπαθούν να εξομοιώσουν το Unix και έτσι βλέπουμε πολλές εντολές ίδιες, όπως το tracert (traceroute), το route και το ipconfig (ifconfig).
Εδώ θα ασχοληθούμε μόνο με το Linux, και θα προτιμήσουμε προγράμματα είτε του κλασσικού (POSIX) Unix, είτε της GNU. Παρόλα αυτά με τις ίδιες γνώσεις μπορούμε να διορθώσουμε δίσκους και δίκτυα Windows, Mac, DOS και Android.
Λίγα λόγια για τους δίσκους
Δίσκους τους λέμε λόγο παράδοσης μιας και από το 1970 οι εύκαμπτοι δίσκοι (floppy disks) και αργότερα οι σκληροί δίσκοι (hard disks) ήταν δίσκοι που αντικατέστησαν τις μαγνητοταινίες (tapes). Αυτό όμως που εννοούμε είναι η συσκευή αποθηκευτικού χώρου που:
- χρησιμοποιείται για την αποθήκευση δεδομένων και προγραμμάτων.
- διατηρεί τα δεδομένα της ακόμα και αν την αποσυνδέσουμε από το ηλεκτρικό ρεύμα.
- είναι τυχαίας προσπέλασης, δηλαδή μπορούμε να ζητήσουμε να φορτώσουμε ένα συγκεκριμένο τμήμα μόνο χωρίς να χρειαστεί να προσπελάσουμε όλο το μέσο μέχρι να φτάσουμε σ' αυτό όπως γινόταν με τις μαγνητικές ταινίες.
- μαγνητικοί δίσκοι, γνωστοί ως hard disks.
- οπτικοί δίσκοι, γνωστοί ως CD και DVD.
- ολοκληρωμένα κυκλώματα στατικής μνήμης, γνωστά ως SSD, SD-Card και USB sticks.
Ο κάθε δίσκος
χωρίζεται σε sectors, δηλαδή τμήματα. Αυτά τα τμήματα κατά παράδοση είναι - ή εννοούμε ότι είναι - των 512 bytes.
Στην πραγματικότητα ανάλογα την τεχνολογία τους και το κύκλωμα λειτουργίας χωρίζονται σε διάφορα πράγματα που δεν μας ενδιαφέρουν.
Τον κάθε δίσκο μπορούμε να τον διαιρέσουμε σε περιοχές που τις ονομάζουμε διαμερίσματα (partitions). Σε κάθε δίσκο τα πρώτα 512 bytes είναι το λεγόμενο boot sector. Εκεί αποθηκεύεται ένας υποτυπώδης κώδικας εκκίνησης του λειτουργικού συστήματος (boot loader), και η περιγραφή μέχρι τεσσάρων διαμερισμάτων (partitions).
Αυτή είναι η δομή όπως χρησιμοποιείται στις περισσότερες των περιπτώσεων σήμερα· τυπικά λέγετε MBR ή δομή DOS. Δεν είναι πάντα έτσι, αλλά δεν μας χρειάζεται και να ξέρουμε τις άλλες περιπτώσεις, με εξαίρεση δίσκους με χωρητικότητα μεγαλύτερη των 2TB (βλ. Παραρτήματα: GPT).
Λίγα λόγια για τα συστήματα αρχείων
Κάθε διαμέρισμα πρέπει να το μορφοποιήσουμε (format) με ένα σύστημα αρχείων (file system) ώστε να μπορεί να χρησιμοποιηθεί από το λειτουργικό σύστημα. Κάθε είδος συστήματος αρχείων είναι μια συγκεκριμένη τεχνολογία διαχείρισης αρχείων με συγκεκριμένα χαρακτηριστικά, που άλλοτε μας προσφέρουν καλύτερες ταχύτητες ανάγνωσης, άλλοτε ασφαλέστερες εγγραφές και επισκευές, άλλοτε καλύτερη διαχείριση της τεχνολογίας του αποθηκευτικού μας μέσου κ.α.
Τα πλέον συνηθισμένα συστήματα αρχείων είναι:
- ext2, ext3 και ext4 που είναι το εξ ορισμού σύστημα του Linux.
Οι διαφορετικές εκδόσεις τους δεν έχουν και ιδιαίτερη σημασία για εμάς. Προτιμήστε την νεότερη πάντα. - swap και αυτό του Linux που χρησιμοποιείται αποκλειστικά για εικονική μνήμη.
- ISO9660 το συνηθέστερο σύστημα των CD/DVD.
- UDF το συνηθέστερο σύστημα των επαναγροφόμενων CD/DVD.
- NFS το συνηθέστερο σύστημα δικτυακών μέσων για Unix/Linux.
- SMB το συνηθέστερο σύστημα δικτυακών μέσων για Linux/Windows.
- FAT12, FAT16, FAT32 (γνωστό και ως vfat) και exFAT,
ένα υπερβολικά απλοϊκό σύστημα που χρησιμοποιούσε το DOS και τα Windows.
Οι διαφορετικές εκδόσεις του έχουν άμεση σχέση με το μέγεθος του διαμερίσματος και την υποστήριξη αρχείων μεμεγάλα
ονόματα (πάνω από 11 γράμματα). - NTFS το εξ ορισμού σύστημα αρχείων των Windows.
Πληροφορίες συστήματος
- Το
lspci παρουσιάζει όλες τις PCI συσκευές - Το
lsusb παρουσιάζει όλες τις συνδεδεμένες USB συσκευές - Το
lsblk παρουσιάζει όλες τις block συσκευές, δηλαδή τους δίσκους και τα partitions - Το
hwinfo που αποτελεί εξτρά πρόγραμμα (θα πρέπει να το εγκαταστήσετε) παρουσιάζει όλα τα στοιχεία για το hardware του μηχανήματος - Το
df παρουσιάζει τον ελεύθερο χώρο κάθε προσαρτημένης συσκευής - Το
free παρουσιάζει στοιχεία για την μνήμη - Το
top ή καλύτερα τοhtop παρουσιάζει αναλυτικά στοιχεία για κάθε πρόγραμμα που εκτελείται στο σύστημά μας
Το Linux περιλαμβάνει πολύ περισσότερα πιο εξειδικευμένα εργαλεία όπως τα
Το αρχείο fstab
Το αρχείο
# | Στήλη | Περιγραφή |
---|---|---|
1 | Συσκευή |
Το όνομα του διαμερίσματος π.χ. LABEL=name
ή το ID του UUID=id , δική μας επιλογή.
|
2 | Mount-point |
Σημείο προσάρτησης δηλαδή ο κατάλογος που θα το βλέπουμε.
Το |
3 | Τύπος | Το είδος του συστήματος αρχείων, π.χ. ext4, ntfs, vfat, etc. |
4 | Παράμετροι | Οι παράμετροι που θα δίναμε και στο mount, διαχωρισμένοι με κόμμα π.χ. noauto για να μην γίνεται αυτόματα προσάρτηση κατά την εκκίνηση. |
5 | Έλεγχος | 1 για να ελεγχθεί για σφάλματα πριν γίνει η προσάρτηση· αλλιώς 0. |
6 | Προτεραιότητα | Πρώτα θα γίνει προσάρτηση αυτά που έχουν 1 μετά αυτά που έχουν 2 κ.ο.κ. το 0 σημαίνει όποτε το χρειαστεί το σύστημα, κάποια στιγμή κατά την εκκίνηση. |
Παράδειγμα:
# my root file-system LABEL=ROOTFS / ext4 defaults,lazytime,relatime,data=writeback 1 1 # a swap partition LABEL=SWAP none swap auto,sw 0 0 # kernel's stuff devpts /dev/pts devpts gid=5,mode=620 0 0 proc /proc proc defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 # the default CD-ROM /dev/sr0 /media/cdrom auto noauto,users,ro 0 0
Προσάρτηση NTFS/FAT με ελληνικά ονόματα
Το Linux λογικά θα προσπαθήσει να βρει την σωστή κωδικοποίηση των ελληνικών,
αυτό δεν σημαίνει και ότι θα τα καταφέρει. Μπορούμε όμως να δώσουμε εμείς τι
κωδικοποίηση να χρησιμοποιήσει σε παράμετρο του
Με UTF-8
# mount -t ntfs /dev/sdxx /mnt/windows \ -o utf8,defaults
Με ISO-8859-7 (Windows-1253), είναι πιθανόν να πρέπει να φορτώσουμε ένα module πρώτα, αν αυτό παρουσιάσει μήνυμα λάθους δεν υπάρχει πρόβλημα, μπορεί να είναι static linked ή να το έχει ήδη φορτώσει.
# modprobe nls_iso8859-7 # mount -t ntfs /dev/sdxx /mnt/windows \ -o nls=iso8859-7,defaults
Ειδικά για FAT, θα πρέπει να προσθέσουμε και το codepage για τα short-filenames (8.3), το οποίο δεν είναι άλλο από το 737.
# mount -t vfat /dev/sdxx /mnt/windows \ -o iocharset=iso8859-7,codepage=737,defaults
Στο εγχειρίδιο του man mount
) αναφέρει αναλυτικά
για κάθε σύστημα αρχείων τι παραμέτρους παίρνει, θα σας είναι πολύ χρήσιμο.
Προετοιμασία
Σχεδόν όλες οι διανομές προσφέρουν ένα τέτοιο. Προτιμήστε μιας διανομής που είτε είναι για τέτοιες εργασίες (επισκευής) είτε είναι πιο εξειδικευμένη. Κατά πάσα περίπτωση το αρχείο που θα κατεβάσουμε θα πρέπει να το κάψουμε σε ένα CD ή DVD. Αυτά τα αρχεία ονομάζονται CD ή DVD Image, δηλαδή εικόνα, πλήρες αντίγραφο, του CD ή DVD, και έχουν κατάληξη iso που βγήκε από το πρότυπο ISO-9660 που χρησιμοποιείται για τα CDs.
Το σύστημα που θα χρησιμοποιήσουμε θα πρέπει να είναι ίδιας αρχιτεκτονικής (π.χ. amd64 ή i386) με το σύστημα που θέλουμε να επισκευάσουμε. Αν δεν ξέρετε τι έχετε, δοκιμάστε amd64 η οποία μπορεί να αναφέρεται και ως x86_64, είναι το ίδιο πράγμα.
Ορίστε μερικά
- Slackware CD/DVD εγκατάστασης
ftp://ftp.ntua.gr/pub/linux/slackware/ - Slackware live CD/DVD
http://bear.alienbase.nl/mirrors/slackware-live/ -
Διάφορες διανομές από το ΕΜΠ
ftp://ftp.ntua.gr/pub/linux - Boot-Repair-CD Project
https://boot-repair-cd.sourceforge.net
Προσωπικά δεν έχει τύχει ποτέ να χρειαστώ κάτι παραπάνω από το CD εγκατάστασης του Slackware…
Στην πραγματικότητα οποιαδήποτε διανομή μας κάνει, όμως για αυτές που βασίζονται στο ubuntu (όπως το mint) θα πρέπει
ξέρουμε να πάρουμε δικαιώματα διαχειριστή (root) πριν αρχίσουμε τις επισκευές.
Δεν θα αναφέρω εδώ τα απαραίτητα sudo
γι αυτές τις περιπτώσεις.
Πηγαίνουμε να επισκευάσουμε το σύστημα είναι αυτονόητο ότι πρέπει να λειτουργούμε με τον λογαριασμό του διαχειριστή.
Κατά κανόνα δίνοντας την εντολή
Πρώτη μας δουλειά λοιπόν είναι να δημιουργήσουμε ένα δίσκο
εκκίνησης με όλα τα απαραίτητα εργαλεία για τις επισκευές.
Αυτός ο δίσκος
όπως είπαμε μπορεί να είναι ένα USB stick ή ένα CD/DVD.
Σε περίπτωση που προτιμάμε ένα live CD αλλά να γραφτεί σε USB stick, είναι δυνατόν να γίνει είτε χρησιμοποιώντας το πολύ καλό
unetbootin, είτε με απλό
# dd if=livecd.iso of=/dev/usb-disk bs=4M
Σημείωση
Θα είναι έξυπνο να έχετε πάντα ένα τέτοιο σύστημα έτοιμο για κάθε περίπτωση· άλλωστε σήμερα ένα memory stick των 8GB κοστίζει κάτω από 5€ και δύσκολα θα χρειαστείτε μεγαλύτερο μέγεθος. Προτιμήστε να είναι για USB3 κάτι που έχει σημαντικά αυξημένη ταχύτητα.Επισκευή συστήματος αρχείων
ή/και boot sector
1. Το επόμενο βήμα είναι να ρυθμίσουμε το BIOS (Basic Input Output System) να ξεκινάει
από το δίσκο που προετοιμάσαμε. Αυτή η διαδικασία δυστυχώς δεν είναι ίδια σε κάθε BIOS, παρόλα αυτά είναι παρόμοια παντού.
Όταν ξεκινάμε τον υπολογιστή το πρώτο πρόγραμμα που τρέχει είναι στο BIOS το οποίο και προετοιμάζει το υπολογιστικό σύστημα για να φορτώσει το λειτουργικό σύστημα που έχουμε εγκαταστήσει στον υπολογιστή μας. Όταν ξεκινάει το BIOS εμφανίζει στην οθόνη διάφορες πληροφορίες μαζί όμως με κάποια πλήκτρα για να μπορέσουμε να το ρυθμίσουμε ή/και για να επιλέξουμε την συσκευή εκκίνησης, δηλαδή από που θα φορτώσει το λειτουργικό σύστημα. Αυτά τα πλήκτρα διαφέρουν από BIOS σε BIOS. Συνήθως επιλέγουν το DEL ή το F2, αλλά όπως είπαμε θα το εμφανίσει το σύστημα όταν ξεκινάει.
Ξεκινάμε λοιπόν τον υπολογιστή και πάμε στις ρυθμίσεις του BIOS. Εκεί πρέπει να έχει ένα μενού BOOT
και από κάτω τις συσκευές με σειρά προτεραιότητας. Φροντίζουμε το USB stick ή το CD/DVD (ανάλογα τι
δίσκο
έχουμε φτιάξει) να βρίσκεται στην κορυφή, πρώτο.
Σώζουμε τις αλλαγές (συνήθως με το πλήκτρο F10), και κάνουμε επανεκκίνηση με το CD μέσα στο
drive ή το USB stick συνδεδεμένο.
2. Επισκευή του συστήματος αρχείων (filesystem). Εφόσον ξεκινήσαμε με το live σύστημα,
τρέχουμε ένα εξομοιωτή τερματικού όπως το
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 111,8G 0 disk └─sda1 8:1 0 111,8G 0 part / sdb 8:16 0 3,7T 0 disk ├─sdb1 8:17 0 3,6T 0 part /ext ├─sdb2 8:18 0 8G 0 part [SWAP] ├─sdb4 8:20 0 256M 0 part ├─sdb5 8:21 0 512M 0 part └─sdb6 8:22 0 256M 0 part sr0 11:0 1 1024M 0 rom
Βλέπουμε ότι το σύστημα μας είναι στο
Η ονοματολογία των συσκευών στο Linux είναι πολύ απλή έστω και αν στην αρχή μας φαίνεται μπέρδεμα.
Το /dev είναι ο κατάλογος με τα ονόματα των συσκευών του υπολογιστικού μας συστήματος.
Το
Προσέχουμε οι συσκευές να μην έχουν προσαρτηθεί (mount) στο σύστημα.
Αυτό το βλέπουμε στην στήλη mountpoint
.
Αν ισχύει, αποσυνδέουμε τις συσκευές από το λειτουργικό σύστημα πριν εκτελέσουμε τον έλεγχο
του συστήματος αρχείων με την εντολή mountpoint
ή το όνομα της συσκευής.
# umount /dev/sdb1
Τρέχουμε το
# fsck -a /dev/sdb1 fsck from util-linux 2.30 e2fsck 1.43.4 (31-Jan-2017) ROOTFS4TB: clean, 3206268/243605504 files, 266816021/974395134 blocks
3. Επισκευή του boot sector. Μέχρι τώρα έχουμε ξεκινήσει από ένα live σύστημα και έχουμε ελέγξει την κατάσταση των συστημάτων αρχείων. Τώρα θα προχωρήσουμε στο να ενημερώσουμε την εκκίνηση του συστήματος.
Όπως είδαμε όταν ανοίγουμε τον υπολογιστή, αυτός εκτελεί το πρόγραμμα του BIOS
το οποίο βρίσκεται στην
Πρώτη μας εργασία είναι να προσαρτήσουμε το σύστημα των αρχείο σε ένα κατάλογο.
Στο παράδειγμά μας το
# mount /dev/sda1 /mnt
Το επόμενο βήμα είναι να προσαρτήσουμε τους καταλόγους του linux πυρήνα, οι οποίοι περιέχουν απαραίτητες πληροφορίες για τους δίσκους και όχι μόνο, μέσα στον ίδιο κατάλογο /mnt στις σωστές θέσεις.
# mount --bind /dev /mnt/dev # mount --bind /sys /mnt/sys # mount --bind /proc /mnt/proc
Αλλάζουμε τον κεντρικό κατάλογο του συστήματός μας στο /mnt με το
# chroot /mnt
Αν έχουμε προσθέσει, αφαιρέσει ή αλλάξει δίσκους ή/και partition εκκίνησης,
πρέπει πρώτα να ενημερώσουμε το
Και τώρα πια ήρθε η ώρα να ενημερώσουμε το boot sector όπως θα κάναμε σε αλλαγή του πυρήνα ή σε νέα εγκατάσταση.
Αυτό γίνετε ανάλογα τον boot manager που χρησιμοποιούμε που συνήθως είναι κατά κανόνα το
# liloή
# grub-install /dev/sda
Επαναφέρουμε το σύστημα όπως ήταν και
# exit # umount /mnt/proc # umount /mnt/sys # umount /mnt/dev # umount /mnt # reboot
Μεταφορά του συστήματός μας σε νέο δίσκο
Υπάρχουν πολλές μέθοδοι για να γίνει αυτό, εδώ θα περιγράψουμε την απλούστερη, copy! Ξεκινάμε το σύστημά μας κανονικά με συνδεδεμένο τον νέο δίσκο σε μια δεύτερη θέση, για το παράδειγμά μας θα είναι στο
Σημείωση
Το πρόγραμμα
- Δημιουργία τυπικού MBR με ένα partition για όλο τον δίσκο:
Τρέχουμε το πρόγραμμα
parted με παράμετρο τον νέο δίσκο (/dev/sdb ).# parted /dev/sdb
Δημιουργούμε ένα τυπικό MBR (msdos)
(parted) mktable msdos
Σημείωση
Εάν θέλουμε GPT partition table, εδώ θα πρέπει να δώσουμεmktable gpt
.και ενός διαμερίσματος που καταλαμβάνει όλο τον δίσκο.
(parted) mkpart p ext4 16 100%
Σημείωση
Εάν θέλουμε UEFI σύστημα, θα πρέπει ήδη να έχουμε δημιουργήσει GPT partition talbe και εδώ θα πρέπει να δημιουργήσουμε δύο διαμερίσματα. Το πρώτο με μέγεθος 500MB, με σύστημα FAT32 και ενεργοποιημένα τα flags boot ϰ esp. Αυτό θα πρέπει αργότερα να προσαρτηθεί στον κατάλογο /boot/efi, όπου τοgrub θα εγκαταστήσει τα απαραίτητα αρχεία για την υποστήριξη του UEFI. Το δεύτερο με όλο το υπόλοιπο μέγεθος του δίσκου και σύστημα ext4 φυσικά.Σημειώνουμε το νέο partition σαν partition εκκίνησης
(parted) set 1 boot on
και βγαίνουμε από το
parted …(parted) quit
Μόλις δημιουργήσαμε το διαμέρισμα
/dev/sdb1 . Το lsblk θα πρέπει να το αναφέρει. - Μορφοποίηση (φορμάρισμα) του νέου διαμερίσματος
# mkfs -t ext4 /dev/sdb1
Ο νέος δίσκος είναι έτοιμος να δεχτεί δεδομένα πια…
Σημείωση
Στα MBR συστήματα να αφήνετε μερικά MB (1-64MB) πριν την αρχή του πρώτου διαμερίσματος ώστε να υπάρχει αρκετός χώρος ελεύθερος για να αποθηκεύσει το boot loader πρόσθετα στοιχεία αν χρειαστεί (stage 1.5 ή/και stage 2 του GRUB, vmlinuz+initramfs για άλλα). Αυτός ο χώρος συνήθως δημιουργήται εξ ορισμού (1 MB - 512 B) και λέγετε MBR gap, για το GRUB δεν χρειάζεται παραπάνω χώρος από αυτόν. Δεν υπάρχει σε συστήματα GPT, και θα πρέπει να αντικατασταθεί με το bios-boot partition αν και εφόσον θα θελήσουμε να γίνετε boot με κλασικό BIOS. Το bios-boot partition πρέπει να είναι σε χώρο κάτω των 2TB. - Αντιγραφή του συστήματος μας στον νέο δίσκο
# mkdir /mnt/newdisk # mount /dev/sdb1 /mnt/newdisk # cp -axfv / /mnt/newdisk
Η παράμετρος -x στο
cp αναλαμβάνει να μην αντιγράψει τους προσαρτημένους καταλόγους, ενώ η παράμετρος -a να αντιγράψει όλα τα χαρακτηριστικά των αρχείων και καταλόγων.Στην πραγματικότητα εάν το σύστημά σας είναι ένας
διακομιστής (server) θα έπρεπε να μπείτε σε χρήση single user πριν εκτελέσετε το cp (copy) μεtelinit 1 , αλλά για έναdesktop PC
δεν χρειάζεται. Μπορείτε να παίξετε το tuxkart ή το pingus όσο περιμένετε… - Ενημέρωση του
/mnt/newdisk/etc/fstab αν χρειάζεται… Αν το παλιό μας σύστημα ήταν στο/dev/sda1 δεν χρειάζεται να αλλάξουμε τίποτα, εκτός ίσως αν είχαμε και swap partition στο παλιό δίσκο, οπότε και θα πρέπει να το διαγράψουμε από τοfstab . - Αποπροσάρτιση του δίσκου και κλείσιμο του υπολογιστή για κατσαβίδιασμα…
# umount /mnt/newdisk # halt
- Αλλαγή δίσκων hardware. Κλείνουμε τον υπολογιστή, αποσυνδέουμε τον πρώτο μας δίσκο και συνδέουμε τον δεύτερο στην θέση του. Τον παλιό πια δίσκο μπορούμε να τον συνδέσουμε σαν δεύτερο αν θέλουμε, αλλά δεν μας χρειάζεται πλέον.
- Εκκίνηση από το live σύστημα.
- Επισκευή του boot sector ακριβώς όπως αναφέραμε στην προηγούμενη ενότητα (βλέπε III.3).
Αν το παλιό μας σύστημα ήταν στο
/dev/sda1 δεν χρειάζεται να ενημερώσουμε τοlilo.conf . - Επανεκκίνηση και ορίστε στον νέο μας δίσκο χωρίς να έχει αλλάξει τίποτα.
Αλλαγή διανομής
Στο Linux μπορούμε εύκολα επίσης να αλλάξουμε διανομή χωρίς να χάσουμε τίποτα σχεδόν από ότι έχουμε ήδη. Αυτό όμως είναι μια κάπως περίπλοκη διαδικασία. Σε κάθε διανομή οι λογαριασμοί χρηστών (daemons και χρήστες) όπως και οι ομάδες έχουν διαφορετικά IDs.
Για τα παραδείγματά μας, το όνομα του χρήστη μας είναι nicholas και η κύρια ομάδα του χρήστη nicgrp.
Το πρόγραμμα
$ id uid=1000(nicholas) gid=1000(nicgrp) groups=1000(nicgrp),100(users)
Ένας τρόπος είναι να πάρουμε αντίγραφο τον
# tar -cvpzf /tmp/home-nicholas.tar.gz /home/nicholas/
Το μετακινούμε σε μια αφαιρούμενη μονάδα όπως ένα USB memory stick (
# mkdir /mnt/stick # mount /dev/sdd /mnt/stick # mv /tmp/home-nicholas.tar.gz /mnt/stick # umount /mnt/stick
Τώρα κάνουμε εγκατάσταση την νέα διανομή.
Όταν τελειώσουμε, μπορούμε να αποσυμπιέσουμε το αρχείο μας και να βάλει όλα τα προσωπικά μας αρχεία στην παλιά τους θέση, όπως ήταν πριν την νέα εγκατάσταση.
# mkdir /mnt/stick # mount /dev/sdd /mnt/stick # tar -xvzf /mnt/stick/home-nicholas.tar.gz -C / # umount /mnt/stick
Θα πρέπει επίσης να ενημερώσουμε το αρχεία μας με τα νέα UID και GID που δημιουργήσαμε κατά την εγκατάσταση αν και εφόσον είναι διαφορετικά.
# chmod -R nicholas:nicgrp /home/nicholas
Αν κατά την νέα εγκατάσταση αλλάξαμε και το username μας (δεν μας λένε πια nicholas, αλλά π.χ. maria) θα πρέπει να μετακινήσουμε και τον προσωπικό μας κατάλογο σε αντίστοιχη θέση. Σε αυτή την περίπτωση μην ξεχάσετε να αλλάξετε και τα IDs.
# mv /home/nicholas /home/maria # chmod -R maria:maria /home/maria
Δίσκοι με κατεστραμμένα τμήματα
Οι μαγνητικοί δίσκοι κατασκευάζονται με εγγύηση για συγκεκριμένο αριθμό ωρών εργασίας. Δηλαδή ώρες που είναι στο ρεύμα, γιατί γράφει/διαβάζει ή όχι δεν μετράει για τον ηλεκτροκινητήρα που λειτουργεί συνέχεια. Επειδή λοιπόν έχουν μηχανικά μέρη, φθείρονται, και όταν αρχίσουν να παρουσιάζουν προβλήματα, ειδικά ο κινητήρας, οδεύουν προς σίγουρη κατάρρευση.
Άλλοι λόγοι καταστροφής ενός μαγνητικού δίσκου είναι ισχυρά μαγνητικά πεδία (π.χ. ένας ηλεκτροκινητήρας ψυγείου), και χτυπήματα που μπορεί να προκαλέσουν την σύγκρουση των κεφαλών με τον δίσκο.
Η άποψή μου είναι πως αν ένας μαγνητικός δίσκος εμφανίσει bad sectors, είναι πολύ πιθανόν σύντομα θα προκληθούν κι άλλα. Ο δίσκος είναι πολύ σημαντικός για να ρισκάρουμε. Η συμβουλή μου είναι πάρτε άλλον και αντιγράψτε τον πριν καταρρεύσει τελείως. Αν είναι αρκετά μεγάλος, μπορεί να τον χρησιμοποιήσετε αργότερα σαν δευτερεύον δίσκο για πράγματα που δεν σας ενδιαφέρουν, όπως ταινίες, μουσική και παιχνίδια.
Πρώτα ξεκινάμε το σύστημα από το live disk που έχουμε φτιάξει ώστε να μην χρειαστεί να κάνουμε προσάρτηση τον δίσκο που θα ελέγξουμε. Κατόπιν τρέχουμε το πρόγραμμα ελέγχου του συστήματος των αρχείων αλλά με ενεργοποιημένο τον έλεγχο για bad sectors.
# fsck -vcck /dev/sdxx
Αν δεν έχετε ext2+ σύστημα αρχείων θα πρέπει να χρησιμοποιήσετε το
# badblocks -nsv /dev/sdxx
Αν δεν σας ενδιαφέρουν τα περιεχόμενα του δίσκου, προτιμήστε με -wsv παραμέτρους, θα διαγράψει τον δίσκο μεν, θα κάνει πιο γρήγορα δε.
Σημείωση
Η τεχνολογίαΓια να χρησιμοποιήσετε το SMART στο Linux, εφόσον δεν είναι υποστηρίζεται ήδη από την διανομή σας, εγκαταστήστε τα πακέτα smartmontools και gsmartcontrol.
Διόρθωση δικτύου
# apt install net-tools
Στο Linux μπορούμε να έχουμε δίκτυο από απλό καλώδιο σειριακής (slip, cslip)
ή παράλληλης πόρτας (plip) μέχρι ethernet και wireless και γενικά οτιδήποτε
σχεδόν μπορεί να συνδέσει 2 υπολογιστές. Αυτό είναι το
Απαραίτητη Ορολογία Δικτύου
- Ethernet
- Το ethernet (έθερνετ) είναι η συνήθης τεχνολογία ενσύρματων δικτύων. Το 1983 απέκτησε πρότυπο (standard) γνωστό ως IEEE 802.3. Έχει χαρακτηριστικό βύσμα, παρόμοιο με της τηλεφωνικής γραμμής αλλά πιο μεγάλο.
- ISP (Internet Service Provider)
- Η εταιρεία ή ο οργανισμός που μας παρέχει την σύνδεση στο internet.
- IP (Internet Protocol)
- Το IP (άι-πι) είναι το χαμηλότερο σύστημα μετάδοσης δεδομένων του internet,
το οποίο αναλαμβάνει την δρομολόγηση διάφορων άλλων ειδών πακέτων (datagrams).
Χαρακτηρίζεται από
τον μοναδικό αριθμό που δίνει σε κάθε μηχάνημα (IP address) και γι' αυτό συνηθίζεται συχνά όταν λέμε IP να εννοούμε αυτό τον αριθμό. - IP Address Ranges Reserved for Private Use (LAN)
-
Διευθύνσεις που μπορούν να χρησιμοποιηθούν για προσωπική χρήση (δηλαδή για τοπικά δίκτυα)
Class Από Έως A 10.0.0.0 10.255.255.255 B 172.16.0.0 172.31.255.255 C 192.168.0.0 192.168.255.255 - Gateway
- Gateway ονομάζεται το υπολογιστικό σύστημα που είναι συνδεδεμένο με δύο ή περισσότερα φυσικά δίκτυα συγχρόνως και είναι ρυθμισμένο να μεταφέρει πακέτα από το ένα στο άλλο και αντίστροφα. Είναι η βασική εργασία ενός modem/router σαν αυτά που δίνουν οι ISP γιατί συνδέει το τοπικό δίκτυο, έστω και αν αποτελείται μόνο από τον router και ένα PC, με το εξωτερικό δίκτυο, το internet.
- DNS (Domain Name System)
- DNS σημαίνει Σύστημα Ονοματολογίας Τομέων.
Το internet καταλαβαίνει μόνο αριθμούς, τις διευθύνσεις IP.
Τα ονόματα είναι ένας πίνακας αντιστοίχησης, ονόματος και αριθμού.
Όταν ζητάμε μια διεύθυνση (π.χ. www.gnu.org), το PC μας κάνει μια κλήση στα DNS servers που είναι
καθορισμένα αυτόματα, είτε από εμάς, παίρνει την απαιτούμενη IP address
που αντιστοιχεί στο όνομα που ζητήσαμε και με αυτή τελικά επικοινωνεί με τα άλλα μηχανήματα.
Παράδειγμα:
FIREFOX -> DNS SERVER: Ποιά είναι η διεύθυνση του www.gnu.org DNS SERVER -> FIREFOX: 208.118.235.148 FIREFOX -> 208.118.235.148: Φέρε μου την κεντρική σελίδα
- DHCP (Dynamic Host Configuration Protocol)
- Το DHCP είναι ένα πρωτόκολλο/υπηρεσία που (και πρέπει να) προσφέρουν οι
διακομιστές (servers) και οιδρομολογητές (routers) το οποίο επιστρέφει στο συνδεόμενο μηχάνημα τις απαραίτητες πληροφορίες για να συνδεθεί σωστά, όπως μια σωστή IP address που δεν χρησιμοποιείται από άλλο μηχάνημα και την διεύθυνση ενός έστω DNS server.Παράδειγμα:
PC (0.0.0.0) -> DHCP SERVER: Δώσε μου τα στοιχεία για σύνδεση DHCP SERVER -> PC: Θα είσαι ο 192.168.1.55 για DNS αιτήσεις θα πας 192.168.1.1 PC (192.168.1.55) -> DHCP SERVER: OK
Απλή σύνδεση (link layer)
Το πρώτο που κάνουμε είναι να δούμε τι δικτυακές συσκευές βλέπει το σύστημά μας:
# ifconfig -a eth0: flags=4098<BROADCAST,MULTICAST> mtu 1500 inet 10.42.1.1 netmask 255.255.255.0 broadcast 10.42.1.255 ether 00:1e:8c:74:53:40 txqueuelen 1000 (Ethernet) ... lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) ...
Εδώ μας λέει ότι έχουμε μια ethernet συσκευή με όνομα ifconfig eth0 up
, και καλούμε το dhclient eth0
για να πάρει
IP address μέσω DHCP.
Αν όλα πάνε καλά το ifconfig
θα μας επιστρέψει κάτι τέτοιο:
# ifconfig eth0 up # dhclient eth0 # ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.75 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::21e:8cff:fe74:5340 prefixlen 64 scopeid 0x20<link> ether 00:1e:8c:74:53:40 txqueuelen 1000 (Ethernet) ...
Αν όχι τότε έχουμε πρόβλημα στο πρώτο επίπεδο (link layer), καλωδίωση και ethernet protocol.
Βγάζουμε το καλώδιο και το ξαναβάζουμε, το dmesg
θα πρέπει να μας δείξει link is up
,
αλλιώς είναι πρόβλημα στην καλωδίωση.
Τις συνδέσεις και τις συσκευές ethernet μπορούμε να τις ελέγξουμε με τα προγράμματα
Routing table
Το
Για να είμαστε εδώ, έχουμε βεβαιωθεί ότι η ethernet είναι συνδεδεμένη, αλλά το σύστημα δεν επικοινωνεί με το internet.
Κοιτάμε με το ifconfig
να δούμε αν έχει πάρει σωστά IP.
# ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.54.2.3 netmask 255.255.255.0 broadcast 10.54.2.3
Για να βρούμε τις άλλες συσκευές που συνδέονται στο arp
.
# arp -a base-ext (192.168.1.2) at 56:b8:0a:7c:a8:b1 [ether] on eth0 base (192.168.1.1) at 00:1d:1c:03:76:72 [ether] on eth0
Από το παραπάνω βλέπουμε ότι το
Δίνουμε εμείς μια IP αποδεκτή για τον δρομολογητή μας, π.χ. 192.168.1.99 και προσθέτουμε μια εγγραφή στο routing table να στέλνει όλα τα πακέτα που δεν ξέρει ήδη τον παραλήπτη, δηλαδή δεν είναι στο τοπικό δίκτυο, μέσω του router (gateway). Αποδεκτή IP σε ένα class C δίκτυο όπως οι διευθύνσεις 192.168.x.x είναι όταν οι τρεις πρώτοι αριθμοί είναι ίδιοι με του router, και ο τελευταίος που παίρνει τιμές από 1 έως και 254 δεν ανήκει σε άλλη συσκευή.
# ifconfig eth0 192.168.1.99 # route add -net 0.0.0.0 gw 192.168.1.1 # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Τα ping 208.118.235.148
που είναι το IP address του gnu.org
ή στο 62.1.46.47 που είναι το IP της forthnet.gr.
Αν κάτι δεν πάει καλά δοκιμάζουμε την σύνδεσή μας με το router μέσω HTTP και αυτό γιατί μερικές φορές βλέπουμε το ICMP (ping) να είναι κλειδωμένο.
# curl 192.168.1.1 <html> <head> <title>ZX48 Router Configuration</title> ...
Αν μας επιτρέψει κάτι, ακόμα και HTTP μήνυμα σφάλματος, η σύνδεση μας με τον δρομολογητή λειτουργεί άψογα· το πιθανότερο είναι πια το πρόβλημα να βρίσκεται στις παραμέτρους (π.χ. firewall) ή στην σύνδεση του router με το internet.
Αν όχι τότε το πρόβλημα είναι είτε στην καλωδίωση του συστήματός μας με το router είτε στο routing table. Είναι πολύ πιθανό να έχουμε λάθος διεύθυνση δρομολογητή.
Πλήρης επεξήγηση του routing table του παραδείγματος
1: Destination Gateway Genmask Iface 2: 0.0.0.0 192.168.1.1 0.0.0.0 eth0 3: 127.0.0.0 0.0.0.0 255.0.0.0 lo 4: 192.168.1.0 0.0.0.0 255.255.255.0 eth0
Το genmask που πιο σωστά λέγετε netmask, κάνει μια πράξη AND μεταξύ του destination και του netmask και αποφασίζει αν το πακέτο ανήκει σ' αυτόν τον κανόνα. Κατά κανόνα το μόνο που χρειάζεται να θυμάστε είναι ότι αν έχει αριθμό 255 πρέπει να είναι όμοιος ο αριθμός, αν έχει 0 μπορεί να είναι οποιοδήποτε αριθμός.
Έτσι, στην γραμμή 4 αναφέρει, όλα τα πακέτα που έχουν παραλήπτη 192.168.1.*
αποστέλνονται στην κάρτα
Έτσι, στην γραμμή 3 αναφέρει, όλα τα πακέτα που έχουν παραλήπτη 127.*.*.*
αποστέλνονται στην κάρτα
Και στην γραμμή 2 αναφέρει, ότι οποιοδήποτε άλλο πακέτο (αυτό σημαίνει το 0.0.0.0), στέλνετε στο 192.168.1.1 για δρομολόγηση σε άλλο δίκτυο, στην περίπτωσή μας, το internet.
Domain Name System
Εφόσον όλα τα άλλα λειτουργούν αυτό που μας απομένει είναι να διορθώσουμε το
DNS (Domain Name System).
Οι διευθύνσεις των DNS servers υπάρχουν ή πρέπει να υπάρχουν στο αρχείο
# echo 'nameserver 8.8.8.8' > /etc/resolv.conf
Κατά κανόνα το default DNS server είναι το IP του ίδιου του router που κάνει αναδρομολόγηση των αιτήσεών μας στο σύστημα του ISP. Εναλλακτικά όμως μπορούμε να χρησιμοποιήσουμε άλλους servers, όπως της Google (8.8.8.8) και του Yandex (77.88.8.8).
Πολλές διανομές φτιάχνουν το
# echo 'nameserver 8.8.8.8' >> /etc/resolvconf/head
Την επόμενη φορά θα το έχει σαν πρώτη επιλογή.
Σημείωση
Οι διευθύνσεις των τοπικών μηχανημάτων ορίζονται στοDNS servers που προτείνω:
# fastest nameserver 1.1.1.1 # OpenNIC nameserver 208.67.222.222 nameserver 208.67.220.220 # Yandex nameserver 77.88.8.8 nameserver 77.88.8.1
Περισσότερα για δίκτυα
Εγκαταστήστε ssh και sshfs για απομακρυσμένη διαχείριση και μεταφορές αρχείων
# apt install ssh sshfs lrzsz zssh filezilla # systemctl enable ssh # systemctl start ssh
Τώρα έχετε ssh για να συνδέεστε από console σαν telnet, scp για copy αρχείων όπως στο τερματικό, sftp για σύνδεση σαν FTP, και τέλος sshfs για προσάρτηση ολόκληρο το σύστημα στο τοπικό σας σύστημα και όλα αυτά με κρυπτογράφιση.
Το zssh είναι έκδοση του ssh με zmodem, μπορεί να στέλνει και να λαμβάνει αρχεία μέσα από το ssh client την ώρα που είναι συνδεμένο.
Το filezilla είναι GUI SFTP client.
Εγκαταστήστε avahi για να βλέπονται όλα μεταξύ τους
# apt install avahi-daemon avahi-dnsconfd avahi-discover # systemctl enable avahi-daemon avahi-dnsconfd
Ενεργοποιήστε στο αρχείο ορισμών του avahi
# vi /etc/avahi/avahi-daemon.conf
τις παραμέτρους για δημοσίευση:
[server] enable-dbus=yes ... [publish] publish-addresses=yes publish-hinfo=yes publish-workstation=yes
Εκκίνηση των υπηρεσιών
# systemctl start avahi-daemon avahi-dnsconfd
Παρακολουθήστε τι υπάρχει στο τοπικό δίκτυο
$ avahi-discover &
Διάφορα κολπάκια και εύκολες διορθώσεις
- Επαναφορά του KDE στις εξ ορισμού (default) ρυθμίσεις, αυτές που είχε δηλαδή κατά την εγκατάσταση.
$ rm -r ~/.kde
Αντίστοιχα ισχύει και για τα άλλα περιβάλλοντα τα οποία λογικά αποθηκεύουν τις ρυθμίσεις τους κάπου μέσα στο
~/.config/ . - Αντίγραφο του boot-sector
# dd if=/dev/sda of=backup-of-boot-sector.bin bs=512 count=1
Επαναφορά του boot-sector από το αντίγραφο
# dd if=backup-of-boot-sector.bin of=/dev/sda bs=512
- Αντιγραφή CD/DVD σε αρχείο.
Υποθέτουμε ότι το CD/DVD Drive είναι το /dev/sr0.
# dd if=/dev/sr0 of=image.iso
- Εγγραφή CD/DVD «εικόνας» σε δίσκο. Υπάρχουν πολλά προγράμματα να το κάνουν αυτό,
εδώ θα χρησιμοποιήσουμε αυτό του GNU, το xorriso.
Υποθέτουμε ότι το CD/DVD Drive είναι το /dev/sr0.
# xorrecord -v speed=16 dev=/dev/sr0 \ -eject blank=as_needed image.iso
- Αλλαγή παραμέτρων ενός προσαρτημένου δίσκου
# mount -o remount,new-parameters /mountpoint
- Σημειώσεις για UBUNTU
- Καθάρισμα του /etc
# dpkg -l | awk '/^rc/ {print $2}' \ | xargs dpkg --purge
- Αναβάθμιση σε νέα έκδοση
# apt update # apt upgrade # # -d = development version # do-release-upgrade -d # reboot
- Error: dpkg was interrupted
Error: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
Solution:
# cd /var/lib/dpkg/updates # rm * # apt-get update
- Προβλήματα με UEFI; install refind
# apt install refind # apt show refind
- Καθάρισμα του /etc
Επιδιορθώνοντας το /dev
Όταν το kernel ξεκινά πρέπει να υπάρχουν ήδη μερικές προαπαιτούμενες συσκευές στο /dev,
όπως τα console και null[LFS].
Οι υπόλοιπες συσκευές φτιάχνονται από το
# mknod -m 600 /dev/console c 5 1 # mknod -m 666 /dev/null c 1 3
Σε παλιότερες Linux διανομές και στα παραδοσιακά Unices πρέπει να υπάρχει στο
# cd /dev # ./MAKEDEV -v null # ./MAKEDEV -v fd0
Σε linux με πυρήνα >= 2.6, χρησιμοποιούμε το
# udevadm trigger --sysname-match=null
Σε περίπτωση που δεν έχετε τα προηγούμενα μπορείτε κάλλιστα να δημιουργήσετε τις συσκευές
που λείπουν με το
Όνομα | Τύπος | Major | Minor | Όνομα | Τύπος | Major | Minor |
---|---|---|---|---|---|---|---|
null | c | 1 | 3 | zero | c | 1 | 5 |
console | c | 5 | 1 | sda | b | 8 | 0 |
sda1-15 | b | 8 | 1-15 | sdb | b | 8 | 16 |
sdc | b | 8 | 32 | hda | b | 3 (1st IDE) | 0 |
hdb | b | 3 (1st, slave) | 64 | hdc | b | 22 (2nd IDE) | 0 |
sr0 | b | 11 | 0 | loop0.. | b | 7 | 0.. |
Τα ονόματα με τα χαρακτηριστικά τους πρέπει να βρίσκονται στο ls /dev/ -la | less
.
Παραρτήματα
GPT (GUID Partition Table)
Το GPT είναι ένα νεότερο πρότυπο της δομής του πίνακα διαμερισμάτων των δίσκων.
Το παλιό γνωστό μας MBR που μας συνοδεύει από το 1983 (PC-DOS v2.0),
είναι περιορισμένο στα 2TB μέγεθος γιατί φυλάσσει τα μεγέθη σε 32bits ακεραίους·
επίσης έχει περιορισμό και σε 4 (πρωτεύοντα
) διαμερίσματα.
Το νέο πρότυπο παρότι σχεδιάστηκε σαν μέρος του [U]EFI, όταν χρησιμοποιείται από το Linux ή το BSD δεν το χρειάζεται. Λειτουργεί άψογα σε μηχανήματα με το παλιό κλασσικό BIOS.
Τα χαρακτηριστικά του είναι:
- Η συμβατότητα με το MBR (Hybrid/Protective MBR)
- Η επέκταση του ορίου των δίσκων στα 9.4
ZB (Zeta Bytes) (9.4 δις TB) - Η επέκταση του αριθμού των διαμερισμάτων στα 128.
- Χρήση
GUID (Globally Unique Identifier) , δηλαδή ενόςμοναδικού
ID του διαμερίσματος. - Προσθήκη
CRC (Cyclic Redundancy Check) αριθμού της εγγραφής του διαμερίσματος.
Συμβατότητα:
- Protective MBR
- Αυτή είναι η standard μέθοδος· δηλώνει στο παλιό partition table, ένα partition που περιλαμβάνει όλο τον δίσκο (κωδικός 0xEE).
- Hybrid MBR
- Το υβριδικό MBR είναι μια τροποποίηση του protective MBR έτσι ώστε να υποστηρίζονται και οι δύο περιπτώσεις τουλάχιστον για 1 boot partition ακόμα. Το πρώτο partition του παλιού MBR παραμένει να βλέπει όλο το δίσκο, αλλά τα υπόλοιπα 3 μπορούν να δείχνουν σε θέσεις ίδιες με partitions του GPT.
Μετατροπή MBR σε GPT
Το
Σημείωση
- Αν δεν έχετε δίσκο με χωρητικότητα μεγαλύτερη των 2TB δεν υπάρχει κανένας λόγος να το χρησιμοποιήσετε.
- Το μέγεθος του νέου MBR+GPT είναι 33280 bytes ή αλλιώς 65 sectors των 512 bytes.
- Το MacOS X και τα Microsoft Windows (7+), τουλάχιστον μέχρι τώρα, καλοκαίρι 2017, δεν υποστηρίζουν εκκίνηση από το GPT παρά μόνο αν υπάρχει [U]EFI firmware!
- Το grub2 λειτουργεί ήδη με κλασσικό BIOS+GPT. Καλό είναι όμως να φτιάξετε στην αρχή ένα BIOS Boot Partition.
- Και το lilo θα λειτουργήσει αλλά υπό περιπτώσεις.
Πολλαπλές Διανομές
Μια έξυπνη λύση είναι να έχουμε πολλαπλά διαμερίσματα δίσκων. Με δύο διαμερίσματα για σύστημα αρχείων, ένα σταθερό και ένα για δοκιμές, ένα τρίτο διαμέρισμα για τα δεδομένα όπως το home directory μας και το srv (κατάλογος για στοιχεία διακομιστή), και ένα για εικονική μνήμη.
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 1024G 0 disk ├─sda1 8:1 0 64G 0 part / (1ο σύστημα) ├─sda2 8:2 0 64G 0 part / (2ο σύστημα) ├─sda3 8:3 0 888G 0 part /data └─sda4 8:4 0 8G 0 part [SWAP]
Τα αρχεία κρατάνε το UID, δηλαδή έναν μοναδικό αριθμό που αντιστοιχεί σε ένα χρήστη,
και όχι το όνομα του χρήστη· το σύστημα αντιστοιχεί το UID με το username σύμφωνα
με τα στοιχεία που υπάρχουν στο αρχείο
Για να αποφύγουμε τα προβλήματα με τα IDs δημιουργούμε ένα username με κάποιο μεγάλο UID, π.χ. το 6000, 11000 κ.λπ. και ένα αντίστοιχο group. Αυτό χρειάζεται γιατί τα πρώτα IDs τα χρησιμοποιούν οι διανομές για εργασίες του συστήματος. Κάθε φορά που βάζουμε νέο σύστημα, ενημερώνουμε τα δύο αυτά αρχεία προσθέτοντας στο τέλος την εγγραφή για τα δικά μας IDs και λειτουργούν όλα κανονικά.
Μετά την εγκατάσταση προσαρτούμε τα /home και /srv είτε με εντολές στο
# mount --bind /home /data/home # mount --bind /srv /data/srv
είτε μόνιμα στο
/dev/sda1 / ext4 defaults,lazytime,data=writeback 1 1 #/dev/sda2 / ext4 defaults,lazytime,data=writeback 1 1 /dev/sda3 /data ext4 defaults,lazytime,data=writeback 0 2 /dev/sda4 none swap auto,sw 0 0 /data/home /home none auto,bind 0 0 /data/srv /srv none auto,bind 0 0
Κάθε φορά που θα θέλουμε να αλλάξουμε διανομή θα πρέπει να σημειώνουμε
το σωστό διαμέρισμα στο fstab να τρέχουμε το
Περισσότερα για μαγνητικούς δίσκους
- Θέστε σε κατάσταση ύπνου τον δίσκο μετά από κάποιο χρονικό διάστημα αδράνειας.
Αυτό είναι ιδιαίτερα χρήσιμο στους μαγνητικούς δίσκους γιατί μειώνει τις φθορές, θα έχει 2-3 sec καθυστέρηση όμως για να επανεργοποιηθεί.
# # set standby mode after ~3min inactivity # hdparm -S 36 /dev/sdX
- Θέστε σε κατάσταση ύπνου τον δίσκο άμεσα.
# # set standby mode (-y) or sleep mode (-Y) now # sync # hdparm -y /dev/sdX
- Αναφορά κατάστασης (power mode) δίσκου.
# hdparm -C /dev/sdX
- Ενεργοποίηση της εσωτερικής cache του δίσκου.
Αυτό είναι καλό μόνο για συστήματα που διαθέτουν ανεξάρτητη πηγή ενέργειας όπως τα laptops ή desktops με UPS. Μην το ενεργοποιήσετε σε Lenovo/IBM Thinkpad με SSD (<= X230/T430).
# hdparm -W /dev/sdX
Περισσότερα για ext4
- Ενεργοποίηση του writeback mode. Αυτό θα αυξήσει την ταχύτητα σε ext4, αλλά θα μειώσει
την ασφάλεια των εγγραφής δεδομένων σε περίπτωση πτώσης του ρεύματος. Γι αυτό το λόγο προτιμήστε το
μόνο εκεί που έχετε ανεξάρτητη πηγή ενέργειας όπως τα laptops ή desktops με UPS.
# tune2fs -o journal_data_writeback /dev/sdxX
- Απενεργοποίηση του journal. Το journal είναι μια τεχνολογία που επιτρέπει την ασφάλεια των δεδομένων
σε περιπτώσεις απώλειας. Παρόλα αυτά αυξάνει σημαντικά το I/O, και πιθανόν να μην το θέλετε για
removable συσκευές, SSDs, ή για δευτερεύουσας σημασίας δίσκους.
# tune2fs -O ^has_journal /dev/sdxX
- Ενεργοποιήστε το journal.
# tune2fs -O has_journal /dev/sdxX
- Αποθήκευση παραμέτρων για το mount.
# tune2fs -E mount_opts=lazytime /dev/sdxX
- Αναγκαστική read-only προσάρτηση σε περίπτωση σφάλματος.
# tune2fs -e remount-ro /dev/sdxX
- Αναγκαστική αγνόηση σφαλμάτων κατά την προσάρτηση.
# tune2fs -e continue /dev/sdxX
- Έλεγχος κατάστασης συστήματος αρχείων.
# e2fsck -f /dev/sdxX
- Αυτόματη επισκευή συστήματος αρχείων.
# e2fsck -a /dev/sdxX
- Αναφορά παραμέτρων συστήματος αρχείων.
# dumpe2fs /dev/sdxX |more
- Για λιγότερο I/O και μεγαλύτερη ταχύτητα, δώστε τις παρακάτω παραμέτρους στο
/etc/fstab .Το writeback το αναφέραμε προηγουμένως. Το atime (access time) μαρκάρει τα αρχεία με την τελευταία φορά που γίνανε access, όπως για διάβασμα. Επιβαρύνει πολύ το I/O και ουσιαστικά δεν έχει ιδιαίτερη εφαρμογή και είναι επιζήμιο για τους SSD. Αυτό μπορεί να καταργηθεί με την παράμετρο noatime. Αν για κάποιο λόγο πιστεύεται ότι θέλετε το atime, μπορείτε να αντικαταστήσετε το noatime με relatime (ή το νεότερο lazytime το οποίο και σας προτείνω), ώστε να έχετε μια μέση λύση.
data=writeback,noatime
- Έλεγχος του journal I/O...
Αυτό το χρειάστηκα όταν ένας δευτερεύον δίσκος δεν έμπαινε σε κατάσταση ύπνου.
Παρατήρησα ότι γινόταν περιοδικά I/O του journal. Τελικά ένα fsck το έλυσε το πρόβλημα,
αλλά ήταν ενοχλητικό για ένα Λ.Σ. όπως το Linux να μην αναφέρει στα log files ότι υπήρχε πρόβλημα στο file system.
# iotop -obtqqq | grep jbd2
RAM Drives
Παλαιότερα για ένα απλό RAM drive χρησιμοποιούσαμε το εικονικό σύστημα αρχείων ramfs, το οποίο ήταν περιορισμένο από την ελεύθερη φυσική μνήμη, ενώ το μέγιστο μέγεθός του έπρεπε να οριστεί κατά την εκκίνηση του kernel.
# mount -t ramfs none /mnt/mountpoint -o size=2G
Το tmpfs είναι ένα εικονικό σύστημα αρχείων το οποίο φυλάσσεται στην εικονική μνήμη, δηλαδή όσο από αυτό δεν κρατείτε από το kernel στην RAM. Είναι το πλέον ιδανικό για RAM drive.
# mount -t tmpfs none /mnt/mountpoint -o size=4G # df -h Filesystem Size Used Avail Use% Mounted on ... none 4,0G 0 4,0G 0% /mnt/mountpoint
Εικονικοί Δίσκοι
Στο linux είναι πολύ εύκολο να φτιάξουμε και να διαχειριστούμε εικονικούς δίσκους, δίσκοι
δηλαδή
που στην πραγματικότητα είναι αρχεία, λειτουργούν όμως ακριβώς με τον ίδιο τρόπο όπως μια πραγματική συσκευή.
Παρακάτω δημιουργούμε ένα αρχείο (
# dd if=/dev/zero of=disk.img bs=4M count=1024
Όπως όλοι οι δίσκοι πρέπει να αποκτήσει σύστημα αρχείων για να χρησιμοποιηθεί, το μορφοποιούμε (format) λοιπόν
# mkfs -t ext4 disk.img
Έτοιμο για προσάρτηση και χρήση
# mount disk.img /mnt/mountpoint -o loop # df -h Filesystem Size Used Avail Use% Mounted on ... /dev/loop0 3,9G 8,0M 3,7G 1% /mnt/mountpoint
Και φυσικά σαν αρχείο που είναι μπορούμε να το εξαφανίσουμε στην στιγμή
# umount /mnt/mountpoint # rm disk.img
Ένας εικονικός δίσκος μπορεί να χρησιμοποιηθεί με διάφορους εξομοιωτές PC ή άλλου υπολογιστικού συστήματος, να γίνει σ' αυτόν εγκατάσταση Λ.Σ. και να κάνουμε εκκίνηση απ' αυτόν.
Παρακάτω δημιουργώ ένα δίσκο 32GB, και κάνω boot από το dvd-image της εγκατάστασης του slackware σε ένα εικονικό 64 bit x86 Intel PC με κύριο δίσκο, τον δίσκο που θα γίνει εγκατάσταση το slackware, τον δίσκο που προηγουμένως έφτιαξα.
# dd if=/dev/zero of=disk.img bs=4M count=8192 # qemu-system-x86_64 -enable-kvm \ -m 2048 -smp 4 \ -drive file=disk.img,format=raw \ -boot d -cdrom slackware64-install.iso
Περί μοναδικότητας του MAC Address κ.α.
Οπουδήποτε μεσολαβεί λογισμικό τα IDs μπορούν να παραβιαστούν
Ισχύει και για τα τηλέφωνα και για οτιδήποτε. Οπουδήποτε μεσολαβεί λογισμικό τα IDs παραβιάζονται. Όσο εύκολα μπορείς να αλλάξεις ID κατά την εκκίνηση, άλλο τόσο πιο εύκολα μπορείς να το παραβιάσεις κατά την ανάγνωση, παραμονή του στην μνήμη, την αποστολή, την λήψη αίτησης για αποστολή ή την εμφάνιση.
# ifconfig eth0 eth0: flags=4163mtu 1500 inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::21e:8cff:fe74:5340 prefixlen 64 scopeid 0x20 ether 00:1e:8c:74:53:40 txqueuelen 1000 (Ethernet) ... # macchanger -a eth0 Current MAC: 00:1e:8c:74:53:40 (ASUSTek COMPUTER INC.) Permanent MAC: 00:1e:8c:74:53:40 (ASUSTek COMPUTER INC.) New MAC: b8:7a:c9:fd:91:3e (Siemens Ltd.) # ifconfig eth0 eth0: flags=4163 mtu 1500 inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::21e:8cff:fe74:5340 prefixlen 64 scopeid 0x20 ether b8:7a:c9:fd:91:3e txqueuelen 1000 (Ethernet) ...
Και στον router...

BTW, και οι routers, linux τρέχουν, και η ROM
τους, ένας εικονικός
δίσκος είναι για το linux.
Προσθήκες
- Αλλαγή ονόματος συσκευής ethernet (Σεπ 2017)
- man 5 iftab, man ifrename
- Αλλαγή ονόματος συσκευής ethernet με το
ip (Απρ 2019) -
# ethname=enp3s0 # newname=eth0 # ip link set $ethname down # ip link set dev $ethname name $newname # ip link set $newname up
- Εντολές αλλαγής ή ορισμού label σε filesystem (Οκτ 2017)
- ext2-4: e2label, swap: swaplabel, ntfs: ntfslabel, fat: fatlabel
- BOOT με UEFI
- Σε δίσκο με GPT, φτιάχουμε ένα partition fat32 των ~500MB,
με flags boot, esp και το προσαρτίζουμε στο /boot/efi.
Το grub θα βάλει τα απαραίτητα αρχεία.
# grub-install --target x86_64-efi
- Δίσκος με BOOT για UEFI (GPT) και BIOS (MBR) (Ιουν 2019)
- Αυτά τα δύο μπορούν να συνυπάρχουν αρκεί να έχουμε ένα μικρό διαμέρισμα ~1 MB
με τύπο bios-boot και φυσικά ένα διαμέρισμα για το UEFI με flags boot, esp.
# grub-install --target=i386-pc /dev/sdX # grub-install --target x86_64-efi
- BOOT disk image με το GRUB (Ιουν 2019)
- Αντιγράφουμε το disk-image σε ένα κατάλογο του συστήματος από όπου θα εγκαταστήσουμε το grub (εκεί που υπάρχει το /boot/grub),
π.χ.
/boot/disk.img . Κάνουμε επανεκκίνηση και στο grub και πατάμεc
να μπούμε στο command-line mode του. Κατόπιν του δίνουμε εντολές να κάνει εκκίνηση από το disk image μας. Με αυτό τον τρόπο μπορείτε να κάνετε upgrade (flash) και το BIOS. Αν δεν λειτουργήσει με CD/DVD boot image δοκιμάστε να την μετατρέψετε σε hard-disk boot image.# chainloader /boot/disk.img # exit
Συνδέσεις
- GPT (GUID Partition Table) is a standard for the layout of the partition table on a physical storage device used in a desktop or server PC, such as a hard disk drive or solid-state drive, using globally unique identifiers (GUID).
- UEFI (Unified Extensible Firmware Interface)
is a specification that defines a software interface between an operating system and platform firmware.
UEFI replaces the BIOS interface originally present in all IBM PCs,
with most UEFI firmware implementations providing legacy support for BIOS services.
UEFI can support remote diagnostics and repair of computers, even with no operating system installed.
The UEFI Forum
is an alliance between several leading technology companies to
modernize
the booting process. The board of directors includes representatives from twelvePromoter
companies: AMD, American Megatrends, Apple, Dell, Hewlett Packard Enterprise, HP Inc., IBM, Insyde Software, Intel, Lenovo, Microsoft, and Phoenix Technologies. - OpenNIC Project. Looking for an alternative DNS provider that is open and democratic? Concerned about censorship? OpenNIC might be the alternative DNS root for you!
- ms-sys project.
This is a Linux program for writing Microsoft compatible boot records.
The program does the same as Microsoft
fdisk /mbr
to a hard disk orsys d:
to a floppy or FAT partition except that it does not copy any system files, only the boot record is written. - DNSCrypt Protocol amd servers. DNSCrypt is a protocol that authenticates communications between a DNS client and a DNS resolver. It prevents DNS spoofing. It uses cryptographic signatures to verify that responses originate from the chosen DNS resolver and haven't been tampered with. It is an open specification, with free and opensource reference implementations, and it is not affiliated with any company nor organization.
- SMARTmontools. The smartmontools package contains two utility programs (smartctl and smartd) to control and monitor storage systems using the Self-Monitoring, Analysis and Reporting Technology System (SMART) built into most modern ATA/SATA, SCSI/SAS and NVMe disks. In many cases, these utilities will provide advanced warning of disk degradation and failure. Smartmontools was originally derived from the Linux smartsuite package and actually supports ATA/ATAPI/SATA-3 to -8 disks and SCSI disks and tape devices.
- GSMARTcontrol. GSmartControl is a graphical user interface for smartctl (from smartmontools package), which is a tool for querying and controlling SMART (Self-Monitoring, Analysis, and Reporting Technology) data on modern hard disk and solid-state drives. It allows you to inspect the drive's SMART data to determine its health, as well as run various tests on it.
- h-node.org. The h-node project aims at the construction of a hardware database in order to identify what devices work with a fully free operating system.
Περαιτέρω ανάγνωση
- Linux Ethernet HOWTO
- Partitions-Mass-Storage-Definitions-Naming-HOWTO
- Partition-Mass-Storage-Dummies-Linux-HOWTO
- Linux Partition HOWTO
- Partition-Rescue (HOWTO)
- Filesystems HOWTO
- USB Flash Memory HOWTO
- Booting Linux from DiskOnChip (memory sticks) HOWTO
- LILO (boot-loader) mini HOWTO
- GRUB 2 bootloader - Full tutorial
- GNU GRUB 2 Manual
- How to Rescue a Non-booting GRUB 2 on Linux
- Disk Encryption HOWTO
- Encrypted Root Filesystem HOWTO
- Linux Hardware Compatibility HOWTO
- The Linux 2.4 SCSI subsystem HOWTO
- The Unix Hardware Buyer HOWTO
- Linux Security HOWTO
- Touchscreen Laptops and Notebooks with Linux
- IBM TechLib/Learn Linux, 101: Maintain the integrity of filesystems
Βιβλιογραφία
TIP |
TCP/IP Illustrated, Vol. I: The Protocols
Addison-Wesley 1993 |
UPE |
The UNIX Programming Environment
AT&T Bell Labs, Prentice Hall 1984 |
DBGB |
DEC The Big Gray Book
Digital Equipment Corporation 1990 |
DUNG |
DEC Ultrix-32 Guide to Networking
Digital Equipment Corporation 1988 |
DOSE |
The MS-DOS encyclopedia
Microsoft Press 1989 |
PCIN |
PC Intern: System Programming
Abacus 1992 |
ADOS |
Advanced MS-DOS Programming
Microsoft Press 1988 |
IBMX |
IBM Personal Computer Hardware Reference Library
IBM 1984 (PC/XT) |
LSA |
Linux System Administrator's Survival Guide
SAMS 1996 |
SAG |
The Linux System Administrator's Guide
GNU 1998 http://www.tldp.org/LDP/sag/sag.pdf |
NAG |
The Linux Network Administrators Guide
GNU 1996 http://www.tldp.org/LDP/nag2/nag2.pdf |
LFS |
Linux From Scratch
2016 http://www.linuxfromscratch.org/lfs/ |