Άλλαξε το όνομα της διανομής στο μενού του Grub.

...το μέρος για να ξεκινήσετε!

Συντονιστής: adem1

Κανόνες Δ. Συζήτησης
Παρακαλώ να επιλέξετε, με προσοχή, την άδεια που θέλετε να έχουν οι οδηγοί που συγγράφετε.
Πληροφορίες για τις άδειες μπορείτε να βρείτε εδώ.
Άμα επιθυμείτε κάποια άλλη άδεια επικοινωνήστε με κάποιο Διαχειριστή είτε Συντονιστή.

Σημαντικό είναι να χρησιμοποιήσετε την υπηρεσία http://imagebin.ubuntu-gr.org για τις εικόνες.

Άλλαξε το όνομα της διανομής στο μενού του Grub.

Δημοσίευσηαπό fkol k4 » 10 Αύγ 2012, 09:38

Κάθε οδηγός (όπως αυτός) αλλά και κάθε θέμα, υπάρχει η δυνατότητα να προστίθεται στα αγαπημένα σας θέματα του λογαριασμού σας στο forum, ώστε ή να ανατρέχετε εύκολα σε αυτό ανεξάρτητα από το αν υπάρχει ή όχι στους σελιδοδείκτες του browser σας, ή να το βρίσκετε αμέσως για να το προτείνετε σε κάποιον άλλο χρήστη. Δείτε εδώ πως μπορείτε να κάνετε κάτι τέτοιο.


Πολλοί χρήστες Linux διανομών συνηθίζουμε να εγκαθιστούμε παραπάνω από μια διανομές στο σύστημά μας, είτε για λόγους ποικιλίας, είτε για δοκιμή, είτε για οποιοδήποτε άλλο λόγο ο καθένας.

Κάποιες λοιπόν από αυτές τις διανομές, αναγνωρίζονται από τον Grub με κοινό όνομα.
Για παράδειγμα, το Xubuntu και το Voyager Linux αναγνωρίζονται από τον Grub ως Ubuntu. Χωρίς να είμαι απόλυτα σίγουρος γι αυτό, νομίζω πως το ίδιο ισχύει και για τις διανομές Kubuntu και Lubuntu και ίσως και για κάποιες άλλες ακόμα.

Ας υποθέσουμε λοιπόν πως επειδή διαβάσαμε καλές κριτικές για τη διανομή Voyager Linux, αποφασίσαμε να την εγκαταστήσουμε για να την δοκιμάσουμε, ή ακόμα πως θέλοντας να έχουμε ένα "πειραματόζωο", κάναμε άλλη μια εγκατάσταση Ubuntu στο σύστημά μας για να μην κινδυνεύουμε να "χαλάσουμε" τη βασική διανομή μας.

Κάνοντας λοιπόν την ενημέρωση του Grub με την εντολή
Κώδικας: Επιλογή όλων
sudo update-grub
, στην επόμενη επανεκκίνηση θα δούμε πως οι διαφορετικές διανομές μας έχουν το ίδιο όνομα.

Ίσως να μην είναι σοβαρό πρόβλημα μιας και πάντα μπορούμε να ξεχωρίσουμε για ποια διανομή πρόκειται από το διαμέρισμα στο οποίο έχει εγκατασταθεί (πχ /dev/sda1. /dev/sda2 κτλ), είναι όμως σπαστικό να βλέπεις στον Grub την ίδια καταχώρηση συνέχεια.

Μία λύση είναι να αλλάξουμε με το χέρι τις καταχωρήσεις του Grub στο αρχεία /boot/grub/grub.cfg, για παράδειγμα να αλλάξουμε την καταχώρηση
Κώδικας: Επιλογή όλων
menuentry "Ubuntu, με Linux 3.2.0-27-generic (on /dev/sda2)"
σε
Κώδικας: Επιλογή όλων
menuentry "Voyager με Linux 3.2.0-27-generic (on /dev/sda2)"


Αυτό θα διορθώσει το πρόβλημα μέχρι την επόμενη ενημέρωση του Grub αλλά τότε θα εμφανιστεί ξανά, οπότε χρειαζόμαστε μια πιο μόνιμη λύση.
Η διαδικασία που θα ακολουθήσουμε, χωρίζεται σε 2 βήματα:

  1. Βήμα 1ο: Αλλάζουμε το όνομα με το οποίο ο Grub της διανομής μας αναγνωρίζει την ίδια μας τη διανομή.
    Ο Grub αναγνωρίζει τη διανομή μας σύμφωνα με τη μεταβλητή GRUB_DISTRIBUTOR, η οποία βρίσκεται στο αρχείο /etc/default/grub.
    Δίνοντας την εντολή
    Κώδικας: Επιλογή όλων
    gksudo gedit /etc/default/grub
    θα εμφανιστούν τα περιεχόμενα του αρχείου που περιέχει τη ρύθμιση αυτή.
    Η προεπιλεγμένη για το Ubuntu τιμή, είναι
    Κώδικας: Επιλογή όλων
    GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`

    Τη γραμμή αυτή μπορούμε να την μετατρέψουμε σε
    Κώδικας: Επιλογή όλων
    GRUB_DISTRIBUTOR="Το όνομα που θέλουμε"

    Προσέξτε πως στη 2η γραμμή χρησιμοποιούνται διπλά εισαγωγικά και όχι μονά όπως στην 1η, αυτό έχει σημασία. Αν δεν αλλάξετε και τα εισαγωγικά, τότε θα πάρετε μήνυμα σφάλματος και η αλλαγή δεν θα γίνει


    Έτσι, αφού δώσουμε την εντολή
    Κώδικας: Επιλογή όλων
    sudo update-grub
    η διανομή μας πλέον θα αναγνωρίζεται με το όνομα που θέλουμε.

  2. Βήμα 2ο: Αλλάζουμε το όνομα με το οποίο ο Grub άλλων διανομών αναγνωρίζει τη διανομή μας.
    Όταν ο Grub ψάχνει για τις υπόλοιπες διανομές, διαβάζει το όνομά τους από το αρχείο /etc/lsb-release της κάθε μιας από αυτές.
    Δίνοντας την εντολή
    Κώδικας: Επιλογή όλων
    gksudo gedit /etc/lsb-release
    , θα εμφανιστούν τα περιεχόμενα του αρχείου που περιέχει τα δεδομένα της ονομασίας της διανομής. Στην περίπτωση του Voyager Linux για παράδειγμα θα εμφανιστούν τα στοιχεία
    Κώδικας: Επιλογή όλων
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=12.04
    DISTRIB_CODENAME=precise
    DISTRIB_DESCRIPTION="Ubuntu 12.04 LTS"

    Οπότε ο Grub των άλλων διανομών διαβάζει το Voyager μας ως Ubuntu 12.04 LTS.
    Αυτό λοιπόν που μας ενδιαφέρει, είναι να αλλάξουμε την τιμή της μεταβλητής DISTRIB_DESCRIPTION που βρίσκεται στην 4η γραμμή.
    Αλλάζουμε λοιπόν την τιμή της, κάνοντας το αρχείο ως εξής:
    Κώδικας: Επιλογή όλων
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=12.04
    DISTRIB_CODENAME=precise
    DISTRIB_DESCRIPTION="Voyager 12.04 LTS"

    Έτσι, η διανομή θα αναγνωρίζεται στο εξής ως Voyager και θα ξεχωρίζει στο μενού του Grub.

Το ίδιο μπορούμε να κάνουμε και σε μια standard έκδοση του Ubuntu που έχουμε ως "πειραματόζωο", αντικαθιστώντας τα ονόματα όπως μας βολεύει, ώστε να ξεχωρίζουμε τις δύο διανομές μεταξύ τους.

Τα παραπάνω ισχύουν σε Ubuntu-based διανομές. Για άλλες διανομές τα αρχεία πιθανώς να είναι διαφορετικά. Για παράδειγμα, στις παρακάτω διανομές ισχύει:


  • Για το Sabayon Linux, ο Grub διαβάζει το αρχείο /etc/gentoo-release
  • Για τη Fedora, υπάρχουν τα αρχεία etc/fedora-release και /etc/os-release

Τελευταία επεξεργασία από fkol k4 και 05 Νοέμ 2013, 16:27, έχει επεξεργασθεί 2 φορά/ες συνολικά
Γνώσεις: Linux: ★★★☆☆ Προγραμματισμός: ★☆☆☆☆ Αγγλικά: ★★★★★
Η υπογραφή μου
Οδηγίες για αρχάριους στο Ubuntu (12.04 LTS)Οδηγοί του forum
Άβαταρ μέλους
fkol k4
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4829
Εγγραφή: 28 Φεβ 2011, 22:56
Τοποθεσία: Αθήνα
Launchpad: fkol-k4
IRC: fkol_k4
Εκτύπωση

Re: Άλλαξε το όνομα της διανομής στο μενού του grub.

Δημοσίευσηαπό madvinegar » 10 Αύγ 2012, 09:44

Πολύ χρησιμο! Ευχαριστούμε! :thumbup:
1 Γνώσεις Linux: Μέτριο ┃ Προγραμματισμού: Καθόλου ┃ Αγγλικών: Πολύ Καλό
2 Ubuntu 18.04 bionic beaver 4.13.0-16-generic 64bit (el_GR.UTF-8, Gnome ubuntu)
3 Intel Core2 Duo CPU T5550 1.83GHz ‖ RAM 2008 MiB ‖ Acer Chapala - Acer, inc. Aspire 5920G
4 Advanced Micro Devices, Inc. [AMD/ATI] RV620/M82 [Mobility Radeon HD 3450/3470] [1002:95c4] {radeon}
5 wlan0: Intel PRO/Wireless 3945ABG [Golan] Network Connection [8086:4222] (rev 02) ⋮ eth0: Broadcom NetLink BCM5787M Gigabit Ethernet PCI Express [14e4:1693] (rev 02)
Blog: https://madvinegar.wordpress.com/
Άβαταρ μέλους
madvinegar
superbTUX
superbTUX
 
Δημοσιεύσεις: 3105
Εγγραφή: 15 Ιαν 2012, 21:10
Εκτύπωση

Re: Άλλαξε το όνομα της διανομής στο μενού του grub.

Δημοσίευσηαπό koleygr » 06 Οκτ 2013, 15:33

Γεια σου @fkol_k4...

Μετά από τις αλλαγές στο lsb-release, αλλάζοντας το Ubuntu σε MyUbuntu στη γραμμή DISTR_DESCRIPTION=... και DISTR_ID=...,
το software-center και οι ρυθμίσεις του updater δέ δουλεύουν καθόλου.

Σου ανεβάζω εδώ το screenshot από το αλλαγμένο αρχείο:


Από το τερματικό που προσπαθώ να ανοίξω το software center:


και από την crash report:


Αντίθετα, μόλις "γυρίσω πίσω" σε Ubuntu τα ονόματα, το software-center και οι ρυθμίσεις του updater τρέχουν κανονικά:


Το πείραμα (των screen shots) έγινε σε 12.04 αλλά το έχω συναντήσει και σε Ubuntu 13.04, Lubuntu13.04 και άν θυμάμαι καλά και σε lubuntu 12.04
σε δυο διαφορετικούς υπολογιστές
1 Linux: Χαμηλό ┃ Προγρ: Μέτρια ┃ Αγγλ: Μέτρια
Spoiler: show
DESKTOP:
2 Ubuntu 14.04 3.13.0-43-generic 64bit (en_US.UTF-8, Unity),
Linux Mint 7.1 3.13.0-39-generic 64bit (en_US, Cinamon),
Debian GNU/Linux (7.7) 3.2.0-4-amd64 (en_US, default)
3 Intel Core2 CPU 6600 2.40GHz ‖ RAM 5968 MiB ‖ Gigabyte P35-S3
4 nVidia GT218 [GeForce 210] [10de:0a65] {nouveau}
5 eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 01)
NOTEBOOK:
2 debian 7.7 3.2.0-4-686-pae 32bit(en_US.utf8, default)
3 Intel Atom CPU N270 1.60GHz || RAM 2016 MiB || TOSHIBA KAVAA - TOSHIBA TOSHIBA NB200
koleygr
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 575
Εγγραφή: 01 Ιαν 2010, 21:08
Τοποθεσία: Χανια
Launchpad: koleygr
Εκτύπωση

Re: Άλλαξε το όνομα της διανομής στο μενού του grub.

Δημοσίευσηαπό fkol k4 » 06 Οκτ 2013, 16:11

Ok, το πρόβλημα οφείλεται στην αλλαγή της 1ης γραμμής ( DISTR_ID), αν αλλαχτεί μόνο η 4η δεν υπάρχει πρόβλημα, θα το ψάξω λίγο ακόμη και θα βρω έναν άλλο τρόπο να αυτο-αναγνωρίζεται αλλιώς η διανομή, ευχαριστώ για την επισήμανση.
Γνώσεις: Linux: ★★★☆☆ Προγραμματισμός: ★☆☆☆☆ Αγγλικά: ★★★★★
Η υπογραφή μου
Οδηγίες για αρχάριους στο Ubuntu (12.04 LTS)Οδηγοί του forum
Άβαταρ μέλους
fkol k4
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4829
Εγγραφή: 28 Φεβ 2011, 22:56
Τοποθεσία: Αθήνα
Launchpad: fkol-k4
IRC: fkol_k4
Εκτύπωση

Re: Άλλαξε το όνομα της διανομής στο μενού του grub.

Δημοσίευσηαπό koleygr » 07 Οκτ 2013, 00:19

Εγώ αυτό που κάνω,
προς το παρόν, είναι να αλλάζω το όνομα με τον τρόπο σου,
μετά να κανω update τον grub ωστε να μου εμφανίζει το όνομα που διαλέγω, και
τέλος να αλλάζω ξανά το lsb-release ωστε να τρέχει σωστά και το software center...

Μια εντολή παραπάνω δηλαδή...
1 Linux: Χαμηλό ┃ Προγρ: Μέτρια ┃ Αγγλ: Μέτρια
Spoiler: show
DESKTOP:
2 Ubuntu 14.04 3.13.0-43-generic 64bit (en_US.UTF-8, Unity),
Linux Mint 7.1 3.13.0-39-generic 64bit (en_US, Cinamon),
Debian GNU/Linux (7.7) 3.2.0-4-amd64 (en_US, default)
3 Intel Core2 CPU 6600 2.40GHz ‖ RAM 5968 MiB ‖ Gigabyte P35-S3
4 nVidia GT218 [GeForce 210] [10de:0a65] {nouveau}
5 eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 01)
NOTEBOOK:
2 debian 7.7 3.2.0-4-686-pae 32bit(en_US.utf8, default)
3 Intel Atom CPU N270 1.60GHz || RAM 2016 MiB || TOSHIBA KAVAA - TOSHIBA TOSHIBA NB200
koleygr
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 575
Εγγραφή: 01 Ιαν 2010, 21:08
Τοποθεσία: Χανια
Launchpad: koleygr
Εκτύπωση

Re: Άλλαξε το όνομα της διανομής στο μενού του grub.

Δημοσίευσηαπό fkol k4 » 05 Νοέμ 2013, 16:30

Ο οδηγός ανανεώθηκε για να αντιμετωπιστεί το σφάλμα που επισημαίνει ο koleygr στην 3η δημοσίευση του θέματος.

Γνώσεις: Linux: ★★★☆☆ Προγραμματισμός: ★☆☆☆☆ Αγγλικά: ★★★★★
Η υπογραφή μου
Οδηγίες για αρχάριους στο Ubuntu (12.04 LTS)Οδηγοί του forum
Άβαταρ μέλους
fkol k4
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4829
Εγγραφή: 28 Φεβ 2011, 22:56
Τοποθεσία: Αθήνα
Launchpad: fkol-k4
IRC: fkol_k4
Εκτύπωση

Re: Άλλαξε το όνομα της διανομής στο μενού του grub.

Δημοσίευσηαπό koleygr » 16 Νοέμ 2013, 22:42

Μπράβο fkol k4...
Δεν είχα δεί ότι βρήκες λύση...

Μόλις τη δοκίμασα!
Ευχαριστώ
1 Linux: Χαμηλό ┃ Προγρ: Μέτρια ┃ Αγγλ: Μέτρια
Spoiler: show
DESKTOP:
2 Ubuntu 14.04 3.13.0-43-generic 64bit (en_US.UTF-8, Unity),
Linux Mint 7.1 3.13.0-39-generic 64bit (en_US, Cinamon),
Debian GNU/Linux (7.7) 3.2.0-4-amd64 (en_US, default)
3 Intel Core2 CPU 6600 2.40GHz ‖ RAM 5968 MiB ‖ Gigabyte P35-S3
4 nVidia GT218 [GeForce 210] [10de:0a65] {nouveau}
5 eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 01)
NOTEBOOK:
2 debian 7.7 3.2.0-4-686-pae 32bit(en_US.utf8, default)
3 Intel Atom CPU N270 1.60GHz || RAM 2016 MiB || TOSHIBA KAVAA - TOSHIBA TOSHIBA NB200
koleygr
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 575
Εγγραφή: 01 Ιαν 2010, 21:08
Τοποθεσία: Χανια
Launchpad: koleygr
Εκτύπωση

Re: Άλλαξε το όνομα της διανομής στο μενού του Grub.

Δημοσίευσηαπό koleygr » 05 Φεβ 2018, 05:59

Ένας αυτοματοποιημένος τρόπος για να παίρνουμε δίνουμε κάποιο εξτρα όνομα στη διανομή μας είναι να χρησιμοποιήσουμε
label στο παρτισιον της διανομής μας (έτσι κι αλλιως ειναι χρήσιμο σε multiboot) και να το βάλουμε να φαίνεται στο μενού του grub.

Διαδικασία:

η μεταβλητή:

PTLABEL="`echo $(blkid -po udev ${DEVICE} |grep LABEL_ENC| sed 's/^.*=//')`"

(δοκιμασμενο σε dedian 9.3) είναι το label του παρτισιον του καθε λειτουργικου (ετσι οπως το διαβαζει μεσα απο το αρχειο /etc/grub.d/30_os-prober)

Έτσι, μπορούμε να την προσθέσουμε στα menuentries (και όχι μόνο) με ενα τροπο που να μας βολέυει.

Σε κάθε update-grub θα προσθέτει και το label του partition που χρησιμοποιουμε

Το πήρες /etc/grub.d/30_os-prober που χρησιμοποιησα σου λειτουργικο μου είναι:

Κώδικας: Επιλογή όλων
#! /bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2006,2007,2008,2009  Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

prefix="/usr"
exec_prefix="/usr"
datarootdir="/usr/share"
quick_boot="0"

export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"

. "$pkgdatadir/grub-mkconfig_lib"

found_other_os=

adjust_timeout () {
  if [ "$quick_boot" = 1 ] && [ "x${found_other_os}" != "x" ]; then
    cat << EOF
set timeout_style=menu
if [ "\${timeout}" = 0 ]; then
  set timeout=10
fi
EOF
  fi
}

if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then
  exit 0
fi

if [ -z "`which os-prober 2> /dev/null`" ] || [ -z "`which linux-boot-prober 2> /dev/null`" ] ; then
  # missing os-prober and/or linux-boot-prober
  exit 0
fi

OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"
if [ -z "${OSPROBED}" ] ; then
  # empty os-prober output, nothing doing
  exit 0
fi

osx_entry() {
    found_other_os=1
    if [ x$2 = x32 ]; then
        # TRANSLATORS: it refers to kernel architecture (32-bit)
    bitstr="$(gettext "(32-bit)")"
    else
        # TRANSLATORS: it refers to kernel architecture (64-bit)
    bitstr="$(gettext "(64-bit)")"
    fi
    # TRANSLATORS: it refers on the OS residing on device %s
    onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
        cat << EOF
menuentry '$(echo "${LONGNAME} $bitstr $onstr" | grub_quote)' --class osx --class darwin --class os \$menuentry_id_option 'osprober-xnu-$2-$(grub_get_device_id "${DEVICE}")'  {
EOF
    save_default_entry | grub_add_tab
    prepare_grub_to_access_device ${DEVICE} | grub_add_tab
    cat << EOF
        load_video
        set do_resume=0
        if [ /var/vm/sleepimage -nt10 / ]; then
           if xnu_resume /var/vm/sleepimage; then
             set do_resume=1
           fi
        fi
        if [ \$do_resume = 0 ]; then
           xnu_uuid ${OSXUUID} uuid
           if [ -f /Extra/DSDT.aml ]; then
              acpi -e /Extra/DSDT.aml
           fi
           if [ /kernelcache -nt /System/Library/Extensions ]; then
              $1 /kernelcache boot-uuid=\${uuid} rd=*uuid
           elif [ -f /System/Library/Kernels/kernel ]; then
              $1 /System/Library/Kernels/kernel boot-uuid=\${uuid} rd=*uuid
              xnu_kextdir /System/Library/Extensions
           else
              $1 /mach_kernel boot-uuid=\${uuid} rd=*uuid
              if [ /System/Library/Extensions.mkext -nt /System/Library/Extensions ]; then
                xnu_mkext /System/Library/Extensions.mkext
              else
                xnu_kextdir /System/Library/Extensions
              fi
           fi
           if [ -f /Extra/Extensions.mkext ]; then
              xnu_mkext /Extra/Extensions.mkext
           fi
           if [ -d /Extra/Extensions ]; then
              xnu_kextdir /Extra/Extensions
           fi
           if [ -f /Extra/devprop.bin ]; then
              xnu_devprop_load /Extra/devprop.bin
           fi
           if [ -f /Extra/splash.jpg ]; then
              insmod jpeg
              xnu_splash /Extra/splash.jpg
           fi
           if [ -f /Extra/splash.png ]; then
              insmod png
              xnu_splash /Extra/splash.png
           fi
           if [ -f /Extra/splash.tga ]; then
              insmod tga
              xnu_splash /Extra/splash.tga
           fi
        fi
}
EOF
}

used_osprober_linux_ids=

wubi=

for OS in ${OSPROBED} ; do
  DEVICE="`echo ${OS} | cut -d ':' -f 1`"
  LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
  LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"
  BOOT="`echo ${OS} | cut -d ':' -f 4`"
  PTLABEL="`echo $(blkid -po udev  ${DEVICE} |grep LABEL_ENC| sed 's/^.*=//')`"
  if UUID="`${grub_probe} --target=fs_uuid --device ${DEVICE%@*}`"; then
    EXPUUID="$UUID"

    if [ x"${DEVICE#*@}" != x ] ; then
      EXPUUID="${EXPUUID}@${DEVICE#*@}"
    fi

    if [ "x${GRUB_OS_PROBER_SKIP_LIST}" != "x" ] && [ "x`echo ${GRUB_OS_PROBER_SKIP_LIST} | grep -i -e '\b'${EXPUUID}'\b'`" != "x" ] ; then
      echo "Skipped ${LONGNAME} on ${DEVICE} by user request." >&2
      continue
    fi
  fi

  BTRFS="`echo ${OS} | cut -d ':' -f 5`"
  if [ "x$BTRFS" = "xbtrfs" ]; then
    BTRFSuuid="`echo ${OS} | cut -d ':' -f 6`"
    BTRFSsubvol="`echo ${OS} | cut -d ':' -f 7`"
  fi

  if [ -z "${LONGNAME}" ] ; then
    LONGNAME="${LABEL}"
  fi

  # os-prober returns text string followed by optional counter
  CLASS="--class $(echo "${LABEL}" | LC_ALL=C sed 's,[[:digit:]]*$,,' | cut -d' ' -f1 | tr 'A-Z' 'a-z' | LC_ALL=C sed 's,[^[:alnum:]_],_,g')"

  gettext_printf "Found %s on %s labeled %s\n" "${LONGNAME}" "${DEVICE}" "${PTLABEL}" >&2

  case ${BOOT} in
    chain)

      case ${LONGNAME} in
    Windows*)
      if [ -z "$wubi" ]; then
        if [ -x /usr/share/lupin-support/grub-mkimage ] && \
           /usr/share/lupin-support/grub-mkimage --test; then
          wubi=yes
        else
          wubi=no
        fi
      fi
      if [ "$wubi" = yes ]; then
        echo "Skipping ${LONGNAME} on wubi system" >&2
        continue
      fi
      ;;
      esac

      found_other_os=1
      onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
      cat << EOF
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' $CLASS --class os \$menuentry_id_option 'osprober-chain-$(grub_get_device_id "${DEVICE}")' {
EOF
      save_default_entry | grub_add_tab
      prepare_grub_to_access_device ${DEVICE} | grub_add_tab

      if [ x"`${grub_probe} --device ${DEVICE} --target=partmap`" = xmsdos ]; then
      cat << EOF
    parttool \${root} hidden-
EOF
      fi

      case ${LONGNAME} in
    Windows\ Vista*|Windows\ 7*|Windows\ Server\ 2008*)
    ;;
    *)
      cat << EOF
    drivemap -s (hd0) \${root}
EOF
    ;;
      esac

      cat <<EOF
    chainloader +1
}
EOF
    ;;
    efi)

    found_other_os=1
    EFIPATH=${DEVICE#*@}
    DEVICE=${DEVICE%@*}
    onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
      cat << EOF
menuentry '$(echo "${LONGNAME}  $onstr" | grub_quote)' $CLASS --class os \$menuentry_id_option 'osprober-efi-$(grub_get_device_id "${DEVICE}")' {
EOF
      save_default_entry | sed -e "s/^/\t/"
      prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"

      cat <<EOF
    chainloader ${EFIPATH}
}
EOF
    ;;
    linux)
      if [ "x$BTRFS" = "xbtrfs" ]; then
         LINUXPROBED="`linux-boot-prober btrfs ${BTRFSuuid} ${BTRFSsubvol}  2> /dev/null | tr ' ' '^' | paste -s -d ' '`"
      else
         LINUXPROBED="`linux-boot-prober ${DEVICE} 2> /dev/null | tr ' ' '^' | paste -s -d ' '`"
      fi
      prepare_boot_cache=
      boot_device_id=
      is_top_level=true
      title_correction_code=
      OS="${LONGNAME}"

      for LINUX in ${LINUXPROBED} ; do
        LROOT="`echo ${LINUX} | cut -d ':' -f 1`"
        LBOOT="`echo ${LINUX} | cut -d ':' -f 2`"
        LLABEL="`echo ${LINUX} | cut -d ':' -f 3 | tr '^' ' '`"
        LKERNEL="`echo ${LINUX} | cut -d ':' -f 4`"
        LINITRD="`echo ${LINUX} | cut -d ':' -f 5`"
        LPARAMS="`echo ${LINUX} | cut -d ':' -f 6- | tr '^' ' '`"

        if [ -z "${LLABEL}" ] ; then
          LLABEL="${LONGNAME}"
        fi

    if [ "${LROOT}" != "${LBOOT}" ]; then
      LKERNEL="${LKERNEL#/boot}"
      LINITRD="${LINITRD#/boot}"
    fi

    if [ -z "${prepare_boot_cache}" ]; then
      prepare_boot_cache="$(prepare_grub_to_access_device ${LBOOT} | grub_add_tab)"
      [ "${prepare_boot_cache}" ] || continue
    fi

    found_other_os=1
    onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
    recovery_params="$(echo "${LPARAMS}" | grep 'single\|recovery')" || true
    counter=1
    while echo "$used_osprober_linux_ids" | grep 'osprober-gnulinux-$LKERNEL-${recovery_params}-$counter-$boot_device_id' > /dev/null; do
        counter=$((counter+1));
    done
    if [ -z "$boot_device_id" ]; then
        boot_device_id="$(grub_get_device_id "${DEVICE}")"
    fi
    used_osprober_linux_ids="$used_osprober_linux_ids 'osprober-gnulinux-$LKERNEL-${recovery_params}-$counter-$boot_device_id'"

    if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
            cat << EOF
menuentry '$(echo "$OS $PTLABEL $onstr" | grub_quote)' $CLASS --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-simple-$boot_device_id' {
EOF
        save_default_entry | grub_add_tab
        printf '%s\n' "${prepare_boot_cache}"
        cat <<  EOF
    linux ${LKERNEL} ${LPARAMS}
EOF
            if [ -n "${LINITRD}" ] ; then
          cat << EOF
    initrd ${LINITRD}
EOF
            fi
        cat << EOF
}
EOF
        echo "submenu '$(gettext_printf "Advanced options for %s" "${OS} ${PTLABEL} $onstr" | grub_quote)' \$menuentry_id_option 'osprober-gnulinux-advanced-$boot_device_id' {"
        is_top_level=false
    fi
    title="${LLABEL} ${PTLABEL} $onstr"
        cat << EOF
    menuentry '$(echo "$title" | grub_quote)' --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-$LKERNEL-${recovery_params}-$boot_device_id' {
EOF
    save_default_entry | sed -e "s/^/$grub_tab$grub_tab/"
    printf '%s\n' "${prepare_boot_cache}" | grub_add_tab
    cat <<  EOF
        linux ${LKERNEL} ${LPARAMS}
EOF
        if [ -n "${LINITRD}" ] ; then
            cat << EOF
        initrd ${LINITRD}
EOF
        fi
        cat << EOF
    }
EOF
    if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
        replacement_title="$(echo "Advanced options for ${OS} $onstr" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
        quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
        title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
        grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
    fi
      done
      if [ x"$is_top_level" != xtrue ]; then
      echo '}'
      fi
      echo "$title_correction_code"
    ;;
    macosx)
      if [ "${UUID}" ]; then
    OSXUUID="${UUID}"
    osx_entry xnu_kernel 32
    osx_entry xnu_kernel64 64
      fi
    ;;
    hurd)
      found_other_os=1
      onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
      cat << EOF
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --class hurd --class gnu --class os \$menuentry_id_option 'osprober-gnuhurd-/boot/gnumach.gz-false-$(grub_get_device_id "${DEVICE}")' {
EOF
      save_default_entry | grub_add_tab
      prepare_grub_to_access_device ${DEVICE} | grub_add_tab
      grub_device="`${grub_probe} --device ${DEVICE} --target=drive`"
      mach_device="`echo "${grub_device}" | sed -e 's/(\(hd.*\),msdos\(.*\))/\1s\2/'`"
      grub_fs="`${grub_probe} --device ${DEVICE} --target=fs`"
      case "${grub_fs}" in
    *fs)    hurd_fs="${grub_fs}" ;;
    *)  hurd_fs="${grub_fs}fs" ;;
      esac
      cat << EOF
    multiboot /boot/gnumach.gz root=device:${mach_device}
    module /hurd/${hurd_fs}.static ${hurd_fs} --readonly \\
            --multiboot-command-line='\${kernel-command-line}' \\
            --host-priv-port='\${host-port}' \\
            --device-master-port='\${device-port}' \\
            --exec-server-task='\${exec-task}' -T typed '\${root}' \\
            '\$(task-create)' '\$(task-resume)'
    module /lib/ld.so.1 exec /hurd/exec '\$(exec-task=task-create)'
}
EOF
    ;;
    minix)
      cat << EOF
menuentry "${LONGNAME} (on ${DEVICE}, Multiboot)" {
EOF
         save_default_entry | sed -e "s/^/\t/"
         prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
     cat << EOF
    multiboot /boot/image_latest
}
EOF
    ;;
    *)
      # TRANSLATORS: %s is replaced by OS name.
      gettext_printf "%s is not yet supported by grub-mkconfig.\n" "  ${LONGNAME}" >&2
    ;;
  esac
done

adjust_timeout


Αυτό για τις λοιπές linux διανομες μας.Η τρέχουσα μπορει να αλλαξει είτε όπως λες απο πανω είτε απο το 10_linux αρχειο στον ιδιο φάκελο.

Αν θέλεις μπορεις να χρησιμοποιησεις την απαντηση μου και να προσθεσεις εναν ακομα τροπο.
(κατεληξα σε αυτο επειδη ε εβρισκα το os-release που ειναι το αντιστοιχο του lsb-release για το debian αλλα νομιζω ειναι μια πολυ καλη λυση)

ΥΓ: Έστειλα mail στους developers του grub σαν feature-request να προσθεσουν παρομοιο κώδικα όταν εντοπιζεται διανομή με ιδιο ονομα...
1 Linux: Χαμηλό ┃ Προγρ: Μέτρια ┃ Αγγλ: Μέτρια
Spoiler: show
DESKTOP:
2 Ubuntu 14.04 3.13.0-43-generic 64bit (en_US.UTF-8, Unity),
Linux Mint 7.1 3.13.0-39-generic 64bit (en_US, Cinamon),
Debian GNU/Linux (7.7) 3.2.0-4-amd64 (en_US, default)
3 Intel Core2 CPU 6600 2.40GHz ‖ RAM 5968 MiB ‖ Gigabyte P35-S3
4 nVidia GT218 [GeForce 210] [10de:0a65] {nouveau}
5 eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 01)
NOTEBOOK:
2 debian 7.7 3.2.0-4-686-pae 32bit(en_US.utf8, default)
3 Intel Atom CPU N270 1.60GHz || RAM 2016 MiB || TOSHIBA KAVAA - TOSHIBA TOSHIBA NB200
koleygr
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 575
Εγγραφή: 01 Ιαν 2010, 21:08
Τοποθεσία: Χανια
Launchpad: koleygr
Εκτύπωση


  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Οδηγοί - How to - Tutorials

cron