Δημοσιεύτηκε: 09 Δεκ 2013, 15:40
από fkol k4

Το θέμα αυτό αφορά λογισμικό το οποίο βρίσκεται υπό ανάπτυξη και δεν θεωρείται σταθερό και κατάλληλο για καθημερινή χρήση από αρχάριους χρήστες.
Αν δεν έχετε διάθεση για πειραματισμό, παρακαλώ μην πάρετε το setup που αναγράφεται παρακάτω ως προτεινόμενο.


Για το θέμα τελικά βρέθηκαν δύο λύσεις:
- Η 1η από τον Learner στη δημοσίευση #5 και χρησιμοποιεί τη δυνατότητα chainloading του Grub 2.
- H 2η από τον fkol k4 στη δημοσίευση #8 και χρησιμοποιεί την αυτόματη αποκοπή καταχώρισης για τη δημιουργία custom αρχείου για τον Grub 2.
Έτσι, είναι στην επιλογή του κάθε χρήστη το πως θα επιλέξει να λύσει κάποιο ανάλογο θέμα αν κάποτε υπάρξει τέτοια ανάγκη.


Με την αγορά του καινούριου SSD, αποφάσισα να πειραματιστώ και με το επερχόμενο σύστημα αρχείων Btrfs, μιας και εκτός των άλλων προηγμένων χαρακτηριστικών του, παρουσιάζει και βελτιστοποιήσεις για τη χρήση του με δίσκους SSD.
Έτσι, τον ρόλο του κυρίως λειτουργικού μου έχει αναλάβει πλέον μια εγκατάσταση Ubuntu 14.04 development edition με Unity (φυσικά!!!) γραφικό περιβάλλον, εγκαταστημένη σε ένα Btrfs partition.

To Btrfs partition χωρίζεται σε δύο subvolumes ( /@ και /@home ). Αυτό είναι προεπιλογή του εγκαταστάτη του Ubuntu.
To subvolume /@ διαχειρίζεται το ριζικό διαμέρισμα ( / για τις συνήθεις εγκαταστάσεις σε ext4) και το /@home τον κατάλογο χρηστών ( /home για τις συνήθεις εγκαταστάσεις σε ext4).

Όταν γίνει εκκίνηση του λειτουργικού που βρίσκεται στο Btrfs partition, ο διαχωρισμός αυτός γίνεται σε επίπεδο «λογικών τόμων» από το ίδιο το Btrfs. Έτσι, ο κατάλογος /boot βρίσκεται στην θέση που βρίσκεται πάντα για μια εγκατάσταση Linux, ως υποκατάλογος 1ου επιπέδου (έχει σημασία αυτό).

Στο σύστημα υπάρχουν και άλλες εγκαταστάσεις Linux, και επειδή το σύστημα αρχείων Btrfs όπως και η έκδοση 14.04 βρίσκονται ακόμη υπό ανάπτυξη, αλλά και για λόγους πειραματισμού.
Προς το παρόν, οι δύο ακόμη εγκατεστημένες διανομές είναι ένα Debian unstable (sid) με περιβάλλον Gnome Shell και ένα Lubuntu 13.10, και τα δύο εκ των οποίων είναι εγκαταστημένα σε partition με σύστημα αρχείων ext4.

Οπότε, φτάσαμε στο πρόβλημα...
Το πρόβλημα είναι πως το os-prober όταν εκτελείται από οποιαδήποτε από τις άλλες δύο διανομές, ψάχνει για κάποιον /boot κατάλογο, ώστε να εντοπίσει τα υπόλοιπα λειτουργικά Linux.
Όταν όμως το Btrfs partition εξετάζεται εξωτερικά, ο κατάλογος /boot δεν βρίσκεται στην συνηθισμένη θέση, αλλά στο subvolume @ του διαμερίσματος, δηλαδή στην φαίνεται ως /@/boot/
Έτσι, ένα Btrfs partition είναι «αόρατο» για τον Grub2 των άλλων λειτουργικών (υπάρχει σχετικό bug γι αυτό εδώ ή και εδώ).
Σε συνδυασμό με ένα grub-install από ένα από τα άλλα λειτουργικά, αυτό σημαίνει πως η εγκατάσταση του Ubuntu 14.04 δεν είναι πια διαθέσιμη, αν και υπάρχει και είναι σε καλή κατάσταση (στη διάθεσή σας για ερωτήσεις σχετικά με την - σύντομη ως τώρα - εμπειρία μου με το btrfs).

Ευτυχώς με μια προσάρτηση του Ubuntu 14.04, μπορούμε να πάρουμε τις καταχωρίσεις από το δικό του αρχείο /boot/brub/grub.cgf και να τις προσθέσουμε χειροκίνητα στο εκάστοτε /etc/grub.d/40_custom ώστε να έχουμε την επιλογή να εκκινήσουμε και το Ubuntu 14.04.

Αυτός όμως ο τρόπος είναι αρκετά μπελαλίδικος, μιας και αυτό πρέπει να γίνεται ξανά κάθε φορά που θα ενημερώνεται ο πυρήνας του Ubuntu 14.04 (κάτι που προβλέπεται να γίνεται αρκετά συχνά).
Σκέφτομαι μια από τις παρακάτω λύσεις:
  • Κάποια μετατροπή του /etc/grub.d/30_os-prober ώστε να ψάχνει και στο /@/boot/ αντί μόνο στο /boot. Αυτό το βλέπω μάλλον δύσκολο.
  • Κάποιον τρόπο ώστε να παίρνω αυτόματα σε κάποιο αρχείο το κομμάτι της καταχώρισης του Ubuntu 14.04 (δημιουργείται από το /etc/grub.d/10_linux κατά το update-grub του Ubuntu 14.04) ώστε να ανανεώνω με κάποιον τρόπο αυτόματα το /etc/grub.d/40_custom του Debian και του Lubuntu.
    Αυτό φαίνεται κάπως απλούστερο.

Οποιαδήποτε ιδέα, ακόμα και ως απλό hint, είναι ευπρόσδεκτη. :wave:

Μιας και το θέμα πραγματεύεται κυρίως το «πείραγμα» αρχείων που βρίσκονται στο /etc/grub.d/ τα οποία είναι shell scripts, ίσως η κατάλληλη ενότητα να μην είναι η «λειτουργικό σύστημα» που επέλεξα, αλλά η «ανάπτυξη λογισμικού». Αν κριθεί σκόπιμο, ας γίνει μεταφορά από κάποιο μέλος της συντονιστικής ομάδας.