Μετά από αρκετό καιρό απραξίας “έφαγα” το opensolaris από το laptop μου.
Τα πράγματα όμως ΔΕΝ ήταν τόσο απλά όσο ακούγονται.
Αγόρασα στις 08.11.2006 το FUJITSU-SIEMENS AMILO SI1520R2
με προεγκατεστημένα Windows Home Edition σε έναν 100GB δίσκο.
Λόγω δουλειάς αποφάσισα να μην αφαιρέσω τα Windows Home Editions από τον υπολογιστή μου.
Οπότε με το gparted έκανα resize το sda1 σε 30GB. Τα υπόλοιπα 70GB σκέφτηκα να τα διαχωρίσω
με τέτοιο τρόπο ώστε να έχω ευελιξία στην εγκατάσταση διαφόρων διανομών στο laptop μου.
Μιας και το λειτουργικό σύστημα Linux δεν ενδιαφέρεται εάν είναι σε logical ή primary partition
σκέφτηκα ότι δεν έχει νόημα να μπει σε primary. Οπότε λοιπόν έφτιαξα το sda2 ως extended
και έφτιαξα ένα 2GB swap partition στην αρχή ως sda5. Σκέφτηκα να το δημιουργήσω στην αρχή
του extended ώστε να μπορούν να το χρησιμοποιήσουν και οι υπόλοιπες διανομές. Παρόμοια
ιδέα είχα για την χρήση ενός κοινού /boot (150MB) partition (sda6) για όλες τις διανομές.
Υπόθεσα ότι θα ήταν καλύτερα έτσι, κι ότι θα είχα δύο μεγάλα partition χωρισμένα ισότιμα
(sda7 & sda8) ώστε να μπορώ να έχω το / (root partition) στο sda7 και το sda8 είτε ως /home
είτε ως / για μία άλλη/εναλλακτική διανομή.
οπότε στο πρώτο ΣΚ μετά την αγορά του laptop το laptop είχε την εξής μορφή:
sda1 —> Windows XP Home Edition ( Primary Partition - 30 GB )
sda2 —> Extended ( 70 GB )
sda5 —> Swap Partition ( Logical - 2 GB )
sda6 —> Boot ( Logical - 150 MB )
sda7 —> Root ( Logical - 20 GB )
sda8 —> Home ( Logical - 20 GB )
sda9 —> Opt ( Logical - 20 GB )
μετά από αρκετό καιρό κι επειδή είχα “ασελγήσει” επάνω στο linux μου - έπρεπε να έχω κι ένα partition με Linux
το οποίο θα έπαιζε όταν θα έπρεπε. Έπρεπε λοιπόν να μεταφέρω το /opt ( sda9 ) στο / ( sda7 ).
Κι έτσι έστησα ένα xubuntu (basic installation) στο /sda9 οπότε είχα ένα trible boot.
Φυσικά μετά από λίγο καιρό στο sda9 δοκιμάστηκαν αρκετές διανομές ή όποτε χρειαζόταν λειτουργούσε κι ως αποθηκευτικός χώρος.
Το sda7 σε κάθε διανομή ubuntu αναβαθμιζόταν, έβγαιναν προγράμματα - έμπαιναν προγράμματα.
Μιας και έχω ιδιαίτερη αδυναμία σε source based εγκαταστάσεις προγραμμάτων - κι επειδή ξεκίνησα να βοηθάω στις μεταφράσεις του xfce, το τελικό αποτέλεσμα στο sda7 είναι το εξής: ubuntu minimal κι όλα τα υπόλοιπα build από τον πηγαίο κώδικα, όπως κι όλο το xfce
Τα πράγματα πήγαιναν αρκετά καλά μέχρι την στιγμή που αποφάσισα να δοκιμάσω το opensolaris.
Εδώ υπήρχε και το “σοβαρό” πρόβλημα. Το OpenSolaris δεν μπορεί να μπει σε logical partition.
Έλα μου ντε που εγώ δεν είχα primary partition.
Η λύση δόθηκε τρώγοντας το sda9 και “διορθώνοντας” το partition table. Εδώ φυσικά ΔΕΝ έπαιξαν όλα όπως θα έπρεπε.
Κάποια στιγμή λοιπόν έχασα ολόκληρο το partition table - ευτυχώς όμως δεν πείραξα δεδομένα από τον δίσκο.
Μέσα σε ένα ΣΚ λοιπόν και με την χρήση των fdisk, cfdisk, parted, gparted και gpart ξαναδημιούργησα το partition table
του δίσκου μου - χωρίς να χάσω ούτε ένα αρχείο.
Η εικόνα όταν έφαγα και το sda9 ήταν η εξής:
Disk /dev/sda: 100.0 GB, 100030242816 bytes
255 heads, 63 sectors/track, 12161 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0×35f135f0Device Boot Start End Blocks Id System
/dev/sda1 * 1 3916 31455232 7 HPFS/NTFS
/dev/sda2 3917 9418 44194815 5 Extended
/dev/sda5 3917 4177 2096451 82 Linux swap / Solaris
/dev/sda6 4178 4196 152586 83 Linux
/dev/sda7 4197 6807 20972826 83 Linux
/dev/sda8 6808 9418 20972826 83 Linux
με περίπου 20 GB αδήλωτα
Εδώ για να είμαι ειλικρινής τα χρειάστηκα για τα καλά. Υπήρχε πρόβλημα, έπρεπε με κάποιο τρόπο
να διορθώσω τον partition table - να καθαρίσω το /boot (αχρείαστο ήταν) και να ορίζω το παλιό μου sda9
ως Primary Partition και μάλιστα αφού υπήρχε ήδη το sda2 (extended) έπρεπε να δηλωθεί ως sda3.
Αυτό ΔΕΝ γίνεται εύκολα - αλλά με υπομονή και μεγάλη προσοχή η εικόνα έπειτα ήταν η εξής:
Disk /dev/sda: 100.0 GB, 100030242816 bytes
255 heads, 63 sectors/track, 12161 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0×35f135f0Device Boot Start End Blocks Id System
/dev/sda1 1 3916 31455232 7 HPFS/NTFS
/dev/sda2 3916 9418 44194821+ 5 Extended
/dev/sda3 * 9419 12161 22033147+ bf Solaris
/dev/sda5 3917 4177 2096451 82 Linux swap / Solaris
/dev/sda6 4178 8113 31615920 83 Linux
/dev/sda7 8114 9418 10482381 83 Linux
Φυσικά όταν προσπαθούσα πλέον να δω τον δίσκο είτε με το parted είτε με το gparted είτε με το cfdisk
υπήρχαν errors. Και φυσικά υπήρχαν errors μιας και έπρεπε μέσω του fdisk να αλλάξω στην σειρά των κατατμήσεων
ώστε να δηλώσω το παλιό μου sda9 ως sda3.
Εάν για κάποιο απίστευτο λόγο διαβάζεται μέχρι εδώ - λίγη υπομονή.
Το ωραίο ξεκινάει από εδώ και κάτω!!!
Αποφάσισα λοιπόν να κάνω τις εξής εργασίες στον δίσκο μου:
α. Δεν χρησιμοποιούσα το opensolaris - έπρεπε να φύγει
β. είχα ήδη μεταφέρει το /home σε ext4 - έπρεπε και το /
γ. έπρεπε να μεταφέρω το /home στο / ώστε να υπάρχει ελεύθερος χώρος
δ. έπρεπε να διορθώσω το partition table μου για να παίξει το laptop μου κάτι.
Ξεκίνησα με το fdisk και αφού διέγραψα το sda3 - διέγραψα και το swap partition (λάθος κίνηση)
θεωρώντας ότι έπρεπε να το ξαναδημιουργήσω με σκοπό να διορθώσει την σειρά των κατατμήσεων.
Επίσης έπρεπε να χρησιμοποιήσω κάποιο live cd ή live usb με υποστήριξη ext4 για να μπορώ να κάνω
την μετατροπή του / (root partition) από ext3 σε ext4. Εδώ υπήρχε ένα πρόβλημα, καθώς το live usb
που είχα - είχε μέσα xubuntu χωρίς υποστήριξη ext4. Ταυτόχρονα με αυτό το πρόβλημα διαπίστωσα
ότι τελικά είχα σεξουαλικές σχέσεις με το partition table μου με αποτέλεσμα ούτε το gparted να παίζει
ούτε το cfdisk ούτε τπτ. Κάπου εκεί χάθηκε και το grub για να δω ότι παίζει χωρίς πρόβλημα το winxp
Κάπου εκεί κοντά έχασα και την δυνατότητα να “διαβάσω” και το root partition μου !!!
Τα δεδομένα είναι απείραχτα, αλλά δεν μπορώ να έχω πρόσβαση σε αυτά.
Στην προηγούμενη αναζήτησή μου για restore του partition table βρέθηκα αντιμέτωπος με το gpart
Λοιπόν - σκέφτομαι πολύ να στείλω λεφτά σε αυτόν τον άνθρωπο (και πρέπει δλδ).
Αναζητώντας μία διανομή για να περάσω στο usb μου με υποστήριξη εργαλείων όπως το gpart
και ext4 βρέθηκα με το systemRescueCd. Αφού ακολούθησα τις εξής οδηγίες:
SystemRescueCd on a USB-stick
το πέρασα στο usb stick μου, κι εκκίνησα το laptop μου με την επιλογή να μπορεί να boot-άρει από το usb.
Έτσι κι έγινε, κι αφού φορτώθηκε το system rescue cd, έτρεξα την εξής εντολή:
gpart /dev/sda
κι αφού βεβαιώθηκα ότι το partition table που προκύπτει είναι σωστό, έτρεξα την εξής εντολή:
gpart.linux -W /dev/sda /dev/sda
και voila !!!! όλα τέλεια.
έβαλα τις τελικές διορθώσεις με το gparted και στην συνέχεια έκανα το convert από ext3 σε ext4:
tune2fs -O has_journal,dir_index,filetype,extent,flex_bg,sparse_super,large_file,huge_file,uninit_bg,dir_nlink,extra_isize /dev/sda3
fsck -pDf /dev/sda3
e2fsck -fD /dev/sda3
(με τις παραπάνω εντολές - τσεκάρω δύο φορές το partition, δεν είναι απαραίτητο - απλά το κάνω εγώ έτσι)
Πλέον έχω πρόσβαση σε όλες μου τις κατατμήσεις - είναι όλες σε ext4 και δεν έχω χάσει κανένα μα κανένα δεδομένο.
Εντυπωσιακό.
Τώρα έμειναν τρία απλά πράγματα:
α. Να διορθώσω το /etc/fstab
β. Να διορθώσω το menu.lst του grub
γ. Να εγκαταστήσω στο grub εκ νέου στον δίσκο του laptop
Προσαρτήσω την κατάτμησή μου:
mount -t ext4 /dev/sda3 /mnt/
mount –bind /dev/ /mnt/dev
mount –bind /proc/ /mnt/proc
Μεταβαίνω σε αυτή:
chroot /mnt
Διορθώσω και ελέγχω ότι χρειάζεται
(δεν χρειάζεται να κάνει κανείς chroot για να διορθώσει τα αρχεία - είναι όμως χρήσιμο για να διαπιστώσει ότι όλα είναι καλά)
Κι έπειτα αφού κάνω exit από το chroot περιβάλλον εγκαθιστώ το grub:
grub-install –root-directory=/mnt/ /dev/sda
Πραγματοποιώ επανεκκίνηση (σε αυτό το σημείο σταυρώνω τα δάχτυλά μου - το γράφει στο manual του gpart)
και διαπιστώνω σε μερικά δευτερόλεπτα ότι όλα είναι τέλεια !!!
Πλεόν το partition table μου είναι το εξής:
Disk /dev/sda: 100.0 GB, 100030242816 bytes
255 heads, 63 sectors/track, 12161 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0×35f135f0Device Boot Start End Blocks Id System
/dev/sda1 * 1 3916 31455232 7 HPFS/NTFS
/dev/sda2 3917 4177 2096448 82 Linux swap / Solaris
/dev/sda3 4178 9418 42098332 83 Linux
/dev/sda4 9419 12161 22033116 83 Linux
και πήρα ένα αντίγραφο για να μην το χάσω:
dd if=/dev/sda of=sda.20090516.bin bs=512 count=1
κι εάν ποτέ χρειαστεί να κάνω restore:
dd if=sda.20090516.bin of=/dev/sda bs=512 count=1