Δημοσιεύτηκε: 10 Δεκ 2013, 02:03
από fkol k4
Είσαι ωραίος! :clap:

Λοιπόν, δοκίμασα το chainloading. Έφτιαξα ένα 40_custom στο Ubuntu 14.04 με μια καταχώριση chainloading για το Lubuntu 13.10.
Στο Lubuntu έδωσα grub-install στο διαμέρισμα που βρίσκεται το λειτουργικό.
Αν και πήρα το παρακάτω σφάλμα,
Μορφοποιημένος Κώδικας: Επιλογή όλων
Lubuntu 13.10 - 3.11.0-14-generic:~$ sudo grub-install --force /dev/sda3
/usr/sbin/grub-bios-setup: warning: File system `ext2' doesn't support embedding.
/usr/sbin/grub-bios-setup: warning: Η ενσωμάτωση είναι αδύνατη. Ο GRUB δύναται μόνον να εγκατασταθεί σ' αυτό το σύνολο με την χρήση λιστών μπλοκ. Όμως, οι λίστες μπλοκ είναι αναξιόπιστες και η χρήση τους δεν συνιστάται..
Installation finished. No error reported.
η εγκατάσταση έγινε κανονικά (όπως αναφέρει και η τελευταία πρόταση του μηνύματος) και το chainloading δούλεψε. :thumbup:
Υποθέτω πως αυτό που μένει να κάνω είναι να προσθέσω στο 40_custom καταχωρίσεις chainloading για κάθε λειτουργικό ξεχωριστά.

Θα ήθελα όμως να δούμε και την περίπτωση της αυτόματης προσθήκης του 40_custom σε όλες τις άλλες διανομές μιας και κάτι τέτοιο είναι πιο ευέλικτο.
Αυτό που θέλω να κάνω είναι να «κόψω» από το /boot/grub/grub.cfg ένα κομμάτι που ξεκινά με "### BEGIN /etc/grub.d/10_linux ###" και καταλήγει σε "### END /etc/grub.d/10_linux ###".
Αν τα strings αυτά τα βάλω στην sed, οι κάθετοι μου χαλάνε τη σύνταξή της. Έτσι, προσπαθώ να κόψω τις ανάλογες γραμμές.
Βρίσκω την 1η με
Κώδικας: Επιλογή όλων
echo $( cat -n /boot/grub/grub.cfg | grep "### BEGIN /etc/grub.d/10_linux ###") | cut -c1-3
και την 2η με
Κώδικας: Επιλογή όλων
echo $( cat -n /boot/grub/grub.cfg | grep "### END /etc/grub.d/10_linux ###") | cut -c1-3

Έτσι, μπορώ να δώσω την
Κώδικας: Επιλογή όλων
sed -n 'αποτέλεσμα-1,αποτέλεσμα-2`p' /boot/grub/grub.cfg
και να αποσπάσω το κομμάτι που θέλω.
Όταν λοιπόν δίνω την sed με τους αριθμούς γραμμών, η εντολή εκτελείται κανονικά.
Αν όμως αποθηκεύσω τους 2 αριθμούς σε μεταβλητές, πχ με
Μορφοποιημένος Κώδικας: Επιλογή όλων
fs=`echo $( cat -n /boot/grub/grub.cfg | grep "### BEGIN /etc/grub.d/10_linux ###") | cut -c1-3`
fe=`echo $( cat -n /boot/grub/grub.cfg | grep "### END /etc/grub.d/10_linux ###") | cut -c1-3`

και μετά βάλω τις μεταβλητές στην sed, τότε δεν μου επιστρέφει αποτέλεσμα.

Ξέρει κάποιος πως μπορώ να χρησιμοποιήσω τις μεταβλητές $fs και $fe στην sed ή κάποιον άλλον τρόπο αυτοματοποίησης της διαδικασίας;