Grub2, “impariamolo”

grub2

All’inizio GRUB non supportava le ext4, ora il supporto c’è ma in molti lamentano malfunzionamenti o totale fallimento da parte di GRUB in fase di boot, qualunque sia il vostro caso, se volete upgradare a GRUB2 dovete assolutamente imparare a conoscerlo.Le differenze col vecchio GRUB sono numerose e le cose simili invece possono trarre in inganno. Partiamo dal vecchio menu.lst, bene questo file è stato rimpiazzato dal grub.cfg che all’occhio appare molto simile, ecco un esempio estratto dal mio grub.cfg di Debian:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from  and settings from /etc/default/grub
#### BEGIN /etc/grub.d/00_header ###
set default=0
set timeout=5
set root=(hd0,1)
search –fs-uuid –set e1968450-a3e3-46bd-9eed-b4f8a76ea1f0
if loadfont /usr/share/grub/ascii.pf2 ; then
set gfxmode=640×480
insmod gfxterm
insmod vbe
if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don’t
# understand terminal_output
terminal gfxterm
fi
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry “Debian GNU/Linux, linux 2.6.29-1-686” {
set root=(hd0,1)
search –fs-uuid –set e1968450-a3e3-46bd-9eed-b4f8a76ea1f0
linux    /boot/vmlinuz-2.6.29-1-686 root=UUID=e1968450-a3e3-46bd-9eed-b4f8a76ea1f0 ro quiet
initrd    /boot/initrd.img-2.6.29-1-686
}
menuentry “Debian GNU/Linux, linux 2.6.29-1-686 (recovery mode)” {
set root=(hd0,1)
search –fs-uuid –set e1968450-a3e3-46bd-9eed-b4f8a76ea1f0
linux    /boot/vmlinuz-2.6.29-1-686 root=UUID=e1968450-a3e3-46bd-9eed-b4f8a76ea1f0 ro single quiet
initrd    /boot/initrd.img-2.6.29-1-686
}
menuentry “Debian GNU/Linux, linux 2.6.28.9” {
set root=(hd0,1)
search –fs-uuid –set e1968450-a3e3-46bd-9eed-b4f8a76ea1f0
linux    /boot/vmlinuz-2.6.28.9 root=UUID=e1968450-a3e3-46bd-9eed-b4f8a76ea1f0 ro quiet
initrd    /boot/initrd.img-2.6.28.9
}
menuentry “Debian GNU/Linux, linux 2.6.28.9 (recovery mode)” {
set root=(hd0,1)
search –fs-uuid –set e1968450-a3e3-46bd-9eed-b4f8a76ea1f0
linux    /boot/vmlinuz-2.6.28.9 root=UUID=e1968450-a3e3-46bd-9eed-b4f8a76ea1f0 ro single quiet
initrd    /boot/initrd.img-2.6.28.9
}
menuentry “Debian GNU/Linux, linux 2.6.26-1-686” {
set root=(hd0,1)
search –fs-uuid –set e1968450-a3e3-46bd-9eed-b4f8a76ea1f0
linux    /boot/vmlinuz-2.6.26-1-686 root=UUID=e1968450-a3e3-46bd-9eed-b4f8a76ea1f0 ro quiet
initrd    /boot/initrd.img-2.6.26-1-686
}
menuentry “Debian GNU/Linux, linux 2.6.26-1-686 (recovery mode)” {
set root=(hd0,1)
search –fs-uuid –set e1968450-a3e3-46bd-9eed-b4f8a76ea1f0
linux    /boot/vmlinuz-2.6.26-1-686 root=UUID=e1968450-a3e3-46bd-9eed-b4f8a76ea1f0 ro single quiet
initrd    /boot/initrd.img-2.6.26-1-686
}
menuentry “Debian GNU/Linux, linux 2.6.26-1-486” {
set root=(hd0,1)
search –fs-uuid –set e1968450-a3e3-46bd-9eed-b4f8a76ea1f0
linux    /boot/vmlinuz-2.6.26-1-486 root=UUID=e1968450-a3e3-46bd-9eed-b4f8a76ea1f0 ro quiet
initrd    /boot/initrd.img-2.6.26-1-486
}
menuentry “Debian GNU/Linux, linux 2.6.26-1-486 (recovery mode)” {
set root=(hd0,1)
search –fs-uuid –set e1968450-a3e3-46bd-9eed-b4f8a76ea1f0
linux    /boot/vmlinuz-2.6.26-1-486 root=UUID=e1968450-a3e3-46bd-9eed-b4f8a76ea1f0 ro single quiet
initrd    /boot/initrd.img-2.6.26-1-486
}
menuentry “Debian GNU/Linux, linux 2.6.18-6-686” {
set root=(hd0,1)
search –fs-uuid –set e1968450-a3e3-46bd-9eed-b4f8a76ea1f0
linux    /boot/vmlinuz-2.6.18-6-686 root=UUID=e1968450-a3e3-46bd-9eed-b4f8a76ea1f0 ro quiet
initrd    /boot/initrd.img-2.6.18-6-686
}
menuentry “Debian GNU/Linux, linux 2.6.18-6-686 (recovery mode)” {
set root=(hd0,1)
search –fs-uuid –set e1968450-a3e3-46bd-9eed-b4f8a76ea1f0
linux    /boot/vmlinuz-2.6.18-6-686 root=UUID=e1968450-a3e3-46bd-9eed-b4f8a76ea1f0 ro single quiet
initrd    /boot/initrd.img-2.6.18-6-686
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/30-multiboot ###
menuentry “Ubuntu Jaunty Jackalope” {
set root=(hd1,2)
linux /boot/vmlinuz-2.6.28-11-generic root=UUID=f82389f6-7061-408b-88ff-f97c199f30c6
initrd /boot/initrd.img-2.6.28-11-generic
}
### END /etc/grub.d/30-multiboot ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file is an example on how to add custom entries
### END /etc/grub.d/40_custom ###

Diciamo che la prima cosa che dovrebbe saltare all’occhio è quella “strana” scritta all’inizio del file di testo:” DO NOT EDIT THIS FILE”😮 ebbene sì, nonostante le righe siano molto simili a quelle del menu.lst e con un minimo di acume si possa capire la loro struttura, è bene stare alla larga da quel file, infatti se per caso venisse editato potrebbe comportare il non funzionamento del GRUB2. Ovviamente in fase di boot l’edit manuale è comunque possibile (sempre in maniera temporanea come per GRUB), ma c’è qualche piccolo cambiamento che riguarda i tasti da premere, infatti per editare basta premere “e” sulla voce desiderata (come GRUB), quindi editare ciò che più ci aggrada avendo a disposizione in un sol colpo tutte e 3 le righe di configurazione (mentre con GRUB si edita una alla volta) e quindi bootare con “ctrl+x” (al posto di “b”). Ma per l’aggiunta o la modifica di nuove voci? Beh i più arguti avranno sicuramente notato queste scritte:

### BEGIN /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/30-multiboot ###

### BEGIN /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###

è quindi chiaro che ogni sezione del grub.cfg viene gestita da un altro file. Ma vediamo in una piccola e semplice tabella a cosa corrispondono:

FILE FUNZIONE
/etc/grub.d/00_header Contiene le impostazioni base del GRUB2, come il timeout, la partizione root ecc..
/etc/grub.d/05_debian_theme Contiene le informazioni inerenti il tema, in questo caso qullo base Debian bianco/blu
/etc/grub.d/10_linux Configura le voci del sistema operativo sul quale GRUB2 è installato
/etc/grub.d/20_memtest86+ Contiene le impostazioni per bootare i memtest
/etc/grub.d/30-multiboot Questo è il file previsto per aggiungere voci riguardanti altri OS GNU, va aggiunto
/etc/grub.d/30_os-prober Configura le voci per eventuali altri OS rilevati in fase di installazione, in caso di più HD può non funzionare correttamente
/etc/grub.d/40_custom È un esempio su come inserire una voce, in realtà non spiega nulla

Bene ma come sono fatti questi file? In seguito vedremo brevemente come applicare qualche modifica in più, ora analizziamoli singolarmente:

/etc/grub.d/00_header

#! /bin/sh -e# update-grub 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/&gt;.

transform=”s,x,x,”

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
grub_prefix=`echo /boot/grub | sed ${transform}`

. ${libdir}/grub/grub-mkconfig_lib

# Do this as early as possible, since other commands might depend on it.
# (e.g. the `loadfont’ command might need lvm or raid modules)
for i in ${GRUB_PRELOAD_MODULES} ; do
echo “insmod $i”
done

if [ “x${GRUB_DEFAULT}” = “x” ] ; then GRUB_DEFAULT=0 ; fi
if [ “x${GRUB_TIMEOUT}” = “x” ] ; then GRUB_TIMEOUT=5 ; fi
if [ “x${GRUB_GFXMODE}” = “x” ] ; then GRUB_GFXMODE=640×480 ; fi

cat << EOF
set default=${GRUB_DEFAULT}
set timeout=${GRUB_TIMEOUT}
EOF

case ${GRUB_TERMINAL_INPUT}:${GRUB_TERMINAL_OUTPUT} in
serial:* | *:serial)
if ! test -e ${grub_prefix}/serial.mod ; then
echo “Serial terminal not available on this platform.” >&2 ; exit 1
fi

if [ “x${GRUB_SERIAL_COMMAND}” = “x” ] ; then
grub_warn “Requested serial terminal but GRUB_SERIAL_COMMAND is unspecified. Default parameters will be used.”
GRUB_SERIAL_COMMAND=serial
fi
echo “${GRUB_SERIAL_COMMAND}”
;;
esac

case x${GRUB_TERMINAL_INPUT} in
x)
# Just use the native terminal
;;
x*)
cat << EOF
if terminal_input ${GRUB_TERMINAL_INPUT} ; then true ; else
# For backward compatibility with versions of terminal.mod that don’t
# understand terminal_input
terminal ${GRUB_TERMINAL_INPUT}
fi
EOF
;;
esac

case x${GRUB_TERMINAL_OUTPUT} in
xgfxterm)
# Make the font accessible
prepare_grub_to_access_device `${grub_probe} –target=device ${GRUB_FONT_PATH}`

# Pick a video backend
video_backend=
for i in vbe ; do
if test -e ${grub_prefix}/$i.mod ; then
video_backend=$i
break
fi
done
if ! [ “${video_backend}” ] ; then
echo “No suitable backend could be found for gfxterm.” >&2 ; exit 1
fi

cat << EOF
if loadfont `make_system_path_relative_to_its_root ${GRUB_FONT_PATH}` ; then
set gfxmode=${GRUB_GFXMODE}
insmod gfxterm
insmod ${video_backend}
if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don’t
# understand terminal_output
terminal gfxterm
fi
fi
EOF
;;
x)
# Just use the native terminal
;;
x*)
cat << EOF
if terminal_output ${GRUB_TERMINAL_OUTPUT} ; then true ; else
# For backward compatibility with versions of terminal.mod that don’t
# understand terminal_output
terminal ${GRUB_TERMINAL_OUTPUT}
fi
EOF
;;
esac

Come possiamo notare si tratta di un semplice script dove è facile modificare opzioni come il timeout o la risoluzione, un po’ meno il resto🙂

/etc/grub.d/05_debian_theme

#!/bin/bash -esource /usr/lib/grub/grub-mkconfig_lib

set_blue_theme()
{
cat << EOF
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
EOF
}

# check for usable backgrounds
use_bg=false
if [ “$GRUB_TERMINAL_OUTPUT” = “gfxterm” ] ; then
for i in {/boot/grub,/usr/share/images/desktop-base}/moreblue-orbit-grub.{png,tga} ; do
if is_path_readable_by_grub $i ; then
bg=$i
case ${bg} in
*.png)        reader=png ;;
*.tga)        reader=tga ;;
*.jpg|*.jpeg)    reader=jpeg ;;
esac
if test -e /boot/grub/${reader}.mod ; then
echo “Found Debian background: `basename ${bg}`” >&2
use_bg=true
break
fi
fi
done
fi

# set the background if possible
if ${use_bg} ; then
prepare_grub_to_access_device `${grub_probe} –target=device ${bg}`
cat << EOF
insmod ${reader}
if background_image `make_system_path_relative_to_its_root ${bg}` ; then
set color_normal=black/black
set color_highlight=magenta/black
else
EOF
fi

# otherwise, set the traditional Debian blue theme
if ${use_bg} ; then
set_blue_theme | sed -e “s/^/  /g”
echo “fi”
else
set_blue_theme
fi

Ancora uno script. Sempre semplice la gestione dei colori e l’applicazione del tema in caso di sfondo, se vogliamo evitare possiamo semplicemente cancellare (o meglio spostare altrove) il file in questione.

/etc/grub.d/10_linux

#! /bin/sh -e# update-grub 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/&gt;.

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
. ${libdir}/grub/grub-mkconfig_lib

if [ “x${GRUB_DISTRIBUTOR}” = “x” ] ; then
OS=GNU/Linux
else
OS=”${GRUB_DISTRIBUTOR} GNU/Linux”
fi

# loop-AES arranges things so that /dev/loop/X can be our root device, but
# the initrds that Linux uses don’t like that.
case ${GRUB_DEVICE} in
/dev/loop/*|/dev/loop[0-9])
GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e “s/^[^(]*(\([^)]\+\)).*/\1/”`
;;
esac

if [ “x${GRUB_DEVICE_UUID}” = “x” ] || [ “x${GRUB_DISABLE_LINUX_UUID}” = “xtrue” ] \
|| ! test -e “/dev/disk/by-uuid/${GRUB_DEVICE_UUID}” \
|| [ “`grub-probe -t abstraction –device ${GRUB_DEVICE}`” != “” ] ; then
LINUX_ROOT_DEVICE=${GRUB_DEVICE}
else
LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
fi

test_numeric ()
{
local a=$1
local cmp=$2
local b=$3
if [ “$a” = “$b” ] ; then
case $cmp in
ge|eq|le) return 0 ;;
gt|lt) return 1 ;;
esac
fi
if [ “$cmp” = “lt” ] ; then
c=$a
a=$b
b=$c
fi
if (echo $a ; echo $b) | sort -n | head -n 1 | grep -qx $b ; then
return 0
else
return 1
fi
}

test_gt ()
{
local a=`echo $1 | sed -e “s,.*/vmlinu[zx]-,,g;s/[._-]\(pre\|rc\|test\|git\|old\)/~\1/g”`
local b=`echo $2 | sed -e “s,.*/vmlinu[zx]-,,g;s/[._-]\(pre\|rc\|test\|git\|old\)/~\1/g”`
if [ “x$b” = “x” ] ; then
return 0
fi
dpkg –compare-versions “$a” gt “$b”
return $?
}

find_latest ()
{
local a=””
for i in $@ ; do
if test_gt “$i” “$a” ; then
a=”$i”
fi
done
echo “$a”
}

list=`for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* ; do
if grub_file_is_not_garbage “$i” ; then echo -n “$i ” ; fi
done`

while [ “x$list” != “x” ] ; do
linux=`find_latest $list`
echo “Found linux image: $linux” >&2
basename=`basename $linux`
dirname=`dirname $linux`
rel_dirname=`make_system_path_relative_to_its_root $dirname`
version=`echo $basename | sed -e “s,^[^0-9]*-,,g”`
alt_version=`echo $version | sed -e “s,\.old$,,g”`
linux_root_device_thisversion=”${LINUX_ROOT_DEVICE}”

initrd=
for i in “initrd.img-${version}” “initrd-${version}.img” \
“initrd.img-${alt_version}” “initrd-${alt_version}.img”; do
if test -e “${dirname}/${i}” ; then
initrd=”$i”
break
fi
done
if test -n “${initrd}” ; then
echo “Found initrd image: ${dirname}/${initrd}” >&2
else
# “UUID=” magic is parsed by initrds.  Since there’s no initrd, it can’t work here.
linux_root_device_thisversion=${GRUB_DEVICE}
fi

cat << EOF
menuentry “${OS}, linux ${version}” {
EOF
prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e “s/^/\t/”
cat << EOF
linux    ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}
EOF
if test -n “${initrd}” ; then
cat << EOF
initrd    ${rel_dirname}/${initrd}
EOF
fi
cat << EOF
}
EOF

cat << EOF
menuentry “${OS}, linux ${version} (recovery mode)” {
EOF
prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e “s/^/\t/”
cat << EOF
linux    ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro single ${GRUB_CMDLINE_LINUX}
EOF
if test -n “${initrd}” ; then
cat << EOF
initrd    ${rel_dirname}/${initrd}
EOF
fi
cat << EOF
}
EOF

list=`echo $list | tr ‘ ‘ ‘\n’ | grep -vx $linux | tr ‘\n’ ‘ ‘`
done

Ormai penso non vi stupiate più, come avete capito stiamo parlando sempre di script! Qua è meglio lasciate tutto come si trova…
/etc/grub.d/20_memtest86+

#!/bin/bash
set -eif test -e /boot/memtest86+.bin ; then
echo “Found memtest86+ image: /boot/memtest86+.bin” >&2
cat << EOF
menuentry “Memory test (memtest86+)” {
linux ${GRUB_DRIVE_BOOT}/memtest86+.bin
}
EOF
fi

Anche qui uno script che non serve modificare

/etc/grub.d/30-multiboot

cat << _EOF
menuentry “Ubuntu Jaunty Jackalope” {
set root=(hd1,2)
linux /boot/vmlinuz-2.6.28-11-generic root=UUID=f82389f6-7061-408b-88ff-f97c199f30c6
initrd /boot/initrd.img-2.6.28-11-generic
}
_EOF

Questa è la voce che io ho inserito, la sintassi è molto semplice.

/etc/grub.d/30_os-prober

#! /bin/sh -e# update-grub helper script.
# Copyright (C) 2006,2007,2008  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/&gt;.

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

OSPROBED=”`os-prober 2> /dev/null | tr ‘ ‘ ‘^’ | paste -s -d ‘ ‘`”
if [ -z “${OSPROBED}” ] ; then
# empty os-prober output, nothing doing
exit 0
fi

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`”

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

echo “Found ${LONGNAME} on ${DEVICE}” >&2

case ${BOOT} in
chain)
CHAINROOT=”`grub-probe –target=drive –device ${DEVICE} 2> /dev/null`”

cat << EOF
menuentry “${LONGNAME} (on ${DEVICE})” {
set root=${CHAINROOT}
chainloader +1
}
EOF
;;
linux)
LINUXPROBED=”`linux-boot-prober ${DEVICE} 2> /dev/null | tr ‘ ‘ ‘^’ | paste -s -d ‘ ‘`”

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 ‘^’ ‘ ‘`”

LINUXROOT=”`grub-probe –target=drive –device ${LBOOT} 2> /dev/null`”

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

cat << EOF
menuentry “${LLABEL} (on ${DEVICE})” {
set root=${LINUXROOT}
linux ${LKERNEL} ${LPARAMS}
EOF
if [ -n “${LINITRD}” ] ; then
cat << EOF
initrd ${LINITRD}
EOF
fi
cat << EOF
}
EOF
done
;;
hurd|*)
echo ”  ${LONGNAME} is not yet supported by grub-mkconfig.” >&2
;;
esac
done

Anche qua uno script che è meglio non toccare…

/etc/grub.d/40_custom

#!/bin/sh
exec tail -n +3 $0
# This file is an example on how to add custom entries

Questo è un esempio, può essere tranquillamente eliminato o essere sfruttato per aggiunte personalizzate come avviene in 30-multiboot o magari solo per aggiungere un testo..

Iniziamo ora a spiegare un po’ come agire su questi file. Per prima cosa cito il README presente in /etc/grub.d:

00_*: Reserved for 00_header.
10_*: Native boot entries.
20_*: Third party apps (e.g. memtest86+).

e come potete intuire capiamo che i numeri non sono casuali, quindi neanche noi dobbiamo modificarli a caso.

lo 00_ davanti al nome del file è riservato al file di configurazione, a noi quindi non servirà.

10_ è per il sistema operativo ospitante, anche qui non lo utilizziamo per eventuali nuovi file

20_ è per le applicazioni come il memtest, anche qui a meno di aggiunta di nuove applicazioni/script possiamo saltare…

i numeri che seguono possono essere usati liberamente (30_ 40_ 50_…) e servono a decidere quale file verrà letto per primo e quindi quali voci appariranno per prime nel grub.cfg. Nel mio caso il 30- serve appunto per arrivare prima del 30_, ma generalmente consiglio di dare un numero differente ad ogni script! Abbiamo quindi capito che la rimozione di un file corrisponde alla rimozione delle righe interessate, cosa praticamente d’obbligo per chi ha più di un hd. Questo menu.cfg infatti non è quello che utilizzo dato che attualmente utilizzo il GRUB2 installato su Jaunty, GRUB2 molto rieditato da me per i miei vari hd e sistemi operativi. Quando all’installazione il GRUB2 ha eseguito lo script os-prober ha infatti rilevato tutto ma ha fatto un po’ di confusione con le varie partizioni/hd, per questo ho dovuto eliminarlo. Eliminando quello script possiamo aggiungere le voci che ci interessano creando il file 30-multiboot, dove ogni voce deve avere la seguente struttura:

cat << _EOF
menuentry “Nome distribuzione GNU” {
set root=(hdX,Y)
linux /boot/vmlinuz-X.Y root=UUID=xxxxxxxxxxxxxxxxxxxxx
initrd /boot/initrd.img-X.Y
}
_EOF

dove ovviamente dobbiamo mettere il nome della nostra distro (n.b. solo distribuzioni GNU, gli altri sistemi operativi tipo MacOSX o Windows NO!), la partizione root, le immagini di boot e l’UUID della partizione contente il nostro OS.

ATTENZIONE: la numeratura  delle partizioni è cambiata! mentre in GRUB le partizioni iniziano da “0” ora iniziano da “1”, rimane invariato invece il discorso per gli hard disk, quindi se la partizione con GRUB è “0,0” con GRUB2 sarà “0,1”

ATTENZIONE: è sempre possibile sostituire UUID= con /dev/sdX, ovvero col numero partizione, io consiglio tuttavia l’utilizzo dell’UUID che è più sicuro (si ottiene da terminale con : ls -l /dev/disk/by-uuid/)

Ogni volta che cancelliamo o modifichiamo un file di configurazione dobbiamo lanciare da terminale il seguente comando:

sudo update-grub

in modo tale che il grub.cfg venga rigenerato.

Diciamo che all’appello c’è tutto quello che può interessare, manca però una cosa che potrebbe essere utile a chi utilizza MacOSX, Windows o magari un altro OS che vuole avviare col suo boot loader. Per aggiungere questa opzione basta cerare un altro file, ma va bene anche quello esempio, col seguente contenuto:

cat << _EOF
menuentry “Nome sistema operativo” {
set root=(hdX,Y)
chainloader +1
}
_EOF

In questo caso risulta possibile una altra via, ovvero editare il file etc/default/grub utile anche per altri aspetti:

# This file is sourced by update-grub, and its variables are propagated
# to its children in /etc/grub.d/
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX=”quiet”# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo’
#GRUB_GFXMODE=640×480

# Uncomment if you don’t want GRUB to pass “root=UUID=xxx” parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

ovvero aggiungendo queste righe:

GRUB_OTHER_TITLES=(“MacOSX” “FreeBSD”)
GRUB_OTHER_DEVICES=(/dev/sdxY /dev/sdyZ)

Ovviamente sostituendo i dati con i nostri. Come sempre ricordiamoci di aggiornare il GRUB2 dopo una modifica!

Siete convinti di questo loader? bene allora installarlo è davvero semplice, basta installare il pacchetto GRUB2

sudo apt-get install grub2

e per far si che si sostituisca a grub dare

sudo upgrade-from-grub-legacy

chiaro no?🙂

AGGIORNAMENTI:

Come far partire di default una entry presente nel grub.cfg:

Editare il file /etc/default/grub

e alla voce GRUB_DEFAULT=”” inserire esattamente la riga desiderata, così come appare. Esempio:

GRUB_DEFAULT=”Microsoft Windows XP Home Edition (on /dev/sda1)”

salvare e chiudere, quindi il solito

sudo update-grub

(Grazie ad et4beta per aver spiegato il funzionamento di questa voce tra i commenti di questo post! )

Aggiungere una voce customizzata alla ubuntu way.

Sopra ho riportato due modi per aggiungere un OS, o una qualsiasi voce personalizzata, nel nostro grub.cfg. Ne aggiungo un terzo, presente da ubuntu kk in poi:

editare il file /etc/grub.d/40_custom :

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the ‘exec tail’ line above.
menuentry “xxxxxxxxxxx” {
set root=(hdX,Y)
search –no-floppy –fs-uuid –set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
chainloader +1
}

aggiungendo l’os desiderato,  quindi aggiornare grub con il solito

sudo update-grub

Serve aiuto? LQH!

79 Responses to “Grub2, “impariamolo””


  1. 2 ubuket 12 aprile, 2009 alle 2:09 pm

    Chiaro no?
    Per te forse si per me ancora no… lo letto 2 volre ma mi sa che lo devo fare altre 20… speriamo bene… il tempi di avvio si abassa anche per chi come me non ha un dual-core, o rimane uguale a prima..? Ho letto che con Grub2 ci sono problemi (diciamo che non è facile come con Grub) con la rimozione dei vecchi Kernel, è vero? Hai fatto un bel lavoro Streetcross, come sempre d’altronde… Buone Feste a Tutti…

  2. 3 Cla 14 aprile, 2009 alle 10:08 am

    Mamma mia che casino sto nuovo Grub..
    ho cercato di aggiungere una nuova riga per far partire Arch che ho appena installato ma non ci sono mica riuscito.
    Ho creato il file 30_multiboot come hai detto te (aggiungendo #! /bin/e all’inizio dato che deve riconoscerlo come uno script) e ho lanciato l’update-grub ma non riesce a riconoscermi questo file e non compare nel menu..

    Per ora ho risolto aggingendo le righe a grub.conf ma so gia che se do un update-grub adesso esce fuori un bel casino.. bisogna sempre complicarle le cose altrimenti non siamo contenti vero?😛

  3. 4 streetcross 14 aprile, 2009 alle 1:02 pm

    @Muflone Grazie🙂
    @Ubuket quando installi/rimuovi i kernel c’è l’update automatico esattamente come avviene per GRUB, anzi con un update grazie allo script di configurazione (teoricamente) si ha l’aggiornamento anche delle voci per gli altri OS (anche se come nel mio caso può applicare una errata numerazione degli hd rendendo la funzione inutile, ma ricordiamoci che è ancora in sviluppo) quindi nessun problema da quel punto di vista, i tempi di boot non sono legati propriamente a GRUB o GRUB2, la differenza vera sta in jaunty che è un miracolo!
    @Cla non serve aggiungere #!bin/bash o sh o quant’altro, bastano solo quelle 4 righe che ho messo e funziona alla grande, comunque sì, nel caso di update puoi avere rogne, anzi qualcuno le ha già avute anche prima dell’update🙂

  4. 5 streetcross 14 aprile, 2009 alle 1:02 pm

    @Cla per sicurezza assicurati anche che il file abbia i permessi di esecuzione😉

  5. 6 demogta 19 aprile, 2009 alle 4:14 pm

    ciao…complimenti per la guida, ma se possibile vorrei sapere dove scaricare i temi per grub2, e magari come fare per installarli!!

  6. 7 streetcross 19 aprile, 2009 alle 8:04 pm

    @demogta grazie, i temi per grub2 non so neanche io dove trovarli onestamente, ho trovato un paio googleggiando ma nulla di serio, per l’installazione dipende di volta in volta, ci sono sempre le istruzioni, per i temi “classici” invece, ovvero quelli semplici con foto di sfondo e basta, l’installazione è uguale a quella del GRUB solo che ovviamente invece di aggiungere subito le righe al grub.cfg devi mettere lo script

  7. 8 iteand 28 aprile, 2009 alle 4:18 pm

    è sempre un piacere leggerti!

  8. 9 streetcross 29 aprile, 2009 alle 12:22 pm

    @iteand grazie ^_^

  9. 10 Paolo 31 maggio, 2009 alle 7:24 am

    Salve, io l’ho installato, non mi piace nemmeno un pò, sapresti dirmi come rimuoverlo e ritornare a GRUB??
    Grazie.

  10. 11 streetcross 31 maggio, 2009 alle 2:55 pm

    @Paolo certo. se prima di installarlo lo hai provato (come consigliato) e quindi non hai dato l’upgrade, ti basta andare in synaptic e reinstallare grub. se invece hai dato anche l’upgrade e solo dopo hai deciso di tornare indietro allora oltre a reinstallare grub da synaptic devi aprire un terminale e dare sudo grub-install /dev/sda dove sda è l’hd principale da cui il bios legge per primo ovviamente😉

  11. 12 Zoff 13 giugno, 2009 alle 9:57 am

    Bravo streetcross, stavo cercando giusto una spiegazione come questa ;D

  12. 13 streetcross 14 giugno, 2009 alle 2:47 pm

    @Zoff grazie😉

  13. 14 et4beta 25 giugno, 2009 alle 2:21 pm

    Ciao street,
    scusa ma pur avendo momentaneamente eliminato GRUB2, dato che non mi aveva riconosciuto gli altri O.S. già installati, sto sistemando gli script per poterlo utilizzare in futuro.
    Non ho però capito un passo di ciò che hai scritto, e precisamente:
    “Quando all’installazione il GRUB2 ha eseguito lo script os-prober ha infatti rilevato tutto ma ha fatto un po’ di confusione con le varie partizioni/hd, per questo ho dovuto eliminarlo. Eliminando quello script possiamo aggiungere le voci che ci interessano creando il file 30-multiboot, dove ogni voce deve avere la seguente struttura:”
    Cioè non mi è chiaro se hai dovuto togliere il file 30_os-prober o che altro.
    Puoi chiarirmi.
    Grazie.

  14. 15 streetcross 30 giugno, 2009 alle 2:01 pm

    @et4beta scusa per il ritardo ma ero impegnato, sì ho eliminato quello script in modo tale che non venga rieseguito ad ogni aggiornamento di grub, penso che questo baco verrà risolto prima del rilascio della prossima ubuntu (è uno script tipico di ubuntu credo, dato che non è uguale negli altri os) ma per ora mi “incasina” tutte le partizioni/hd e non riesco ad avviare nulla🙂

  15. 16 et4beta 30 giugno, 2009 alle 4:01 pm

    Grazie street,
    preciso che il tuo scritto era sufficientemente chiaro, ma prima di effettuare cambiamenti importanti mi piace avere la certezza assoluta. Anche se, invece di eliminare lo script, potrei semplicemente rinominarlo.
    Confermo che il bug, che definirei un po’ grossolano, è piuttosto fastidioso, infatti installato Karmic (Alpha 2), sono rimasto di stucco nel vedere che nel menù del Grub(2) era l’unico O.S. avviabile dei quattro presenti, per cui l’ho subito “spianato” reinstallando il vecchio, ma tanto prima o poi toccherà adattarsi.
    Mi rimane poi da risolvere come inserire l’avvio di XP, cui non posso rinunciare, ma questa è un’altra storia di cui riparleremo.

  16. 17 streetcross 3 luglio, 2009 alle 10:15 am

    @et4beta leggi bene, ho scritto come aggiungere windows🙂 ad ogni modo spero per ubuntu che fixi il tutto prima del rilascio ufficiali, altrimenti il fallimento di windows vista in confronto sembrerà una cosa da nulla… lo script meglio non renderlo eseguibile se lo rinomini, tutto ciò che sta nella cartella viene eseguito se è eseguibile

  17. 18 et4beta 3 luglio, 2009 alle 12:56 pm

    Infatti ho rinominato 30_os-prober in ex_30_os-prober, e lui lo ha eseguito ugualmente, però dopo l’ultimo aggiornamento il Grub2 mi ha fatto comparire una finestra con la richiesta di spuntare gli HD sui quali cercare gli OS, io che ne ho due ho spuntato sia “sda” sia “sdb” e lui mi ha trovato tutti: XP su sda, e Intrepid, Jaunty e ovviamente Karmic su sdb, e da come me li ha presentati sono quasi sicuro che si è andato a leggere e copiare i menu.lst.
    Per cambiare il timeout e la riga di avvio di default nel menu del grub2 ho avuto risultato editando il file /etc/default/grub.
    Il file 30-multiboot che ho creato dietro tuo suggerimento non l’ho ancora reso eseguibile e la sua presenza viene ignorata.

  18. 19 et4beta 3 luglio, 2009 alle 1:14 pm

    Ho fatto una prova ed ora ho la certezza che si va a leggere e si copia le righe di avvio presenti nei file “menu.lst” di tutte le distro linux installate.

  19. 20 streetcross 4 luglio, 2009 alle 7:07 am

    @et4beta la copia dal menù.list è una funzione proposta in fase di installazione di grub2 se non erro, puoi anche evitarlo, a me però ha dato “problemi” in ambo i casi

  20. 21 et4beta 4 luglio, 2009 alle 10:29 am

    Per ora io invece ho l’impressione di non avere problemi con Grub2.
    In fase di installazione (la seconda, perché nella prima mi si era inchiodato l’xorg dopo un aggiornamento, Karmic non partiva più quindi ho reinstallato tutto) non mi ha chiesto nulla, solo al primo mega-aggiornamento mi ha chiesto su quali HD cercare gli altri OS, come già ti ho scritto.
    Ora, se vado a modificare un menu.lst, sia di Intrepid, sia di Jaunty, togliendo o aggiungendo delle righe, è sufficiente che lanci Karmic e dia da terminale “sudo update-grub”, dopo aver corretto nel file /etc/default/grub il parametro “default” al giusto valore della riga che voglio, per vedere al successivo avvio il menu di grub2 aggiornato.
    Attendo di avere le idee più chiare, ma per ora tutto ok.

  21. 22 step 23 luglio, 2009 alle 6:39 pm

    Come si fa con grub2 a cambiare l’ordine di avvio dei sistemi operativi ? Avendo il kernel di default 2.6.26, ultimamente ho installato il kernel 2.6.30 per provarlo e me lo ha messo come primo sistema che mi parte al boot, io vorrei farlo diventare il secondo.
    Con grub era una banalità, mi bastava semplicemente modificare il file menu.lst spostando le relative righe ma, so che il file di configurazione di grub2, a differenza, non puo’ essere modificato direttamente, quindi qual’è il file da configurare in questo caso in modo che un update-grub mi rimette il tutto nell’ordine desiderato ?

  22. 23 streetcross 24 luglio, 2009 alle 3:39 pm

    @eta4beta può essere che su karmic stiano risolvendo, io non ci ero riuscito, non avendo fatto altre prove (anche perchè comunque lo uso su debian che quindi non segue gli aggiornamenti ubuntiani) non posso dirti se ora è tutto ok, ma se a te funziona è probabile che il team ubuntu sia a buon punto. Bisogna vedere se questi fix valgono anche nella versione “originale”

    @step effettivamente essendo tutto gestito da uno script è una gran bella inchiappettata. non penso ci sia un modo per invertire le voci però potresti aggiungere manualmente una voce per il kernel 2.6.26 prima dello script per ubuntu

  23. 24 step 25 luglio, 2009 alle 12:09 pm

    Ho trovato la soluzione al problema di quale sistema operativo far partire di default al boot. Per ottenere questo non serve cambiare l’ordine di avvio ossia di far trovare sulla prima riga il kernel che interessa far partire in automatico, lo stesso si ottiene modificando la posizione della selezione di avvio, il problema pero’ è che il sistema deve farlo da se. Ecco allora che modificando la seguente opzione:

    $ cat /etc/default/grub|grep GRUB_DEFAULT
    GRUB_DEFAULT=2

    originariamente era a 0 e la selezione evidenziava la prima riga sulla schermata di avvio di grub2, portando il valore a 2 ed effettuando un update-grub ora si posiziona, al boot, sulla riga 3 selezionando il kernel che mi interessa avviare in automatico senza dover effettuare nessuna operazione manuale con la tastiera.

  24. 25 streetcross 25 luglio, 2009 alle 1:19 pm

    @step è vero non ci avevo pensato, la stessa cosa è attuabile anche in grub legacy -.-‘ sono pirla🙂 grazie della segnalazione!

  25. 26 Alexteo 28 agosto, 2009 alle 5:14 pm

    Ciao streetcross ottima guida, volevo chiedere consiglio per un problema al quale non riesco a trovare una soluzione. In realtà non è un problema strettamente riguardante la configurazione, bensì più inerente all’installazione. Visto che nemmeno sul forum internazionale pare esserci una risposta chiedo a te…sperando di non andare troppo fuori argomento. Ho installato grub2 su Jaunty, successivamente per errore ho fatto degli aggiornamenti su Karmic alpha, installato in un altra partizione e questo ha sovrascritto grub2. Ora al boot si avvia grub2 appartenente alla partizione di Karmic che al momento è l’unico OS che riesco ad avviare. Come si pùò fare in modo che all’avvio parta grub2 installato su Jaunty?
    Ho provato a cercare nel manuale e credevo di aver trovato il comando che facesse al caso mio grub-retup -r (hd0,1) ma non ho ottenuto nulla.

    Grazie

  26. 27 streetcross 3 settembre, 2009 alle 2:54 pm

    @ Alexteo puoi utilizzare supergrub disk per fixare grub2 di jaunty, esattamente come per il grub, altrimenti devi aggiungere al grub2 di karmic la voce per jaunty, bootarlo e da jaunty dare sudo grub-install /dev/sda (senza specificare la partizione perché vuoi che vada nell’mbr)

  27. 28 Martino 8 settembre, 2009 alle 8:32 am

    Hi.
    Complimenti per la presentazione.
    Visto che hai gia’ analizzato GRUB2, pongo la vexata quaestio:
    D1::” e’ possibile con GRUB2 analizzare data.ora e decidere quale OS buttare tra gli N-os disponibili ? “.
    D2::” e’ possibile con GRUB2 analizzare data.ora e decidere quale OS buttare, e quale file INITTAB eseguire o cmq dare un parametro per determinare uno script da eseguire pre o post INITTAb ????”.
    Grazie 1K in anticipo per l’attenzione che mi dedichi.
    Cordialmente.Martino

  28. 29 streetcross 8 settembre, 2009 alle 1:27 pm

    @Martino, domande pensanti🙂 ma non credo di avere capito bene tutto.
    1) §Intendi fare in modo che ad una determinata ora parta di defalt un os e in un’altra ora un altro?
    2) a che OS ti riferisci? su ubuntu non c’è più inittab. In ogni caso per queste cose mi sembra più adatto sfruttare le potenzialità dell’os che grub, quello che chiedi dovrebbe essere tutto fattibile tramite script di avvio e bash

  29. 30 Martino 10 settembre, 2009 alle 3:05 pm

    Ciao streetcross.
    ecco l’esempio. Abbiamo un calcolatore con diverse partizioni e diversi OS a bordo. L’ OS in macchina, via CRON, puo’ essere pilotato al reboot. .
    Ora, in fase di reboot, mi piacerebbe pilotare da GRUB2 la baracca per decidere, a seconda di data ed ora, quale OS bootstrappare, e non necessariamente il default.
    Ovviamente, il tutto puo’ essere gestito dall’ OS che pilota il GRUB, rimappando il menu.lst, un secondo prima del reboot.
    Tuttavia, mettere in piedi questa cosa in GRUB, al prezzo di tempo e fatica, per vedere poi che in GRUB2 “viene ????” gestita in modo facile e “robusto ???”, uno si suicida, oppure si documenta per non reinventare l’acqua calda.
    Ecco sintetizzate le condizioni al contorno del mio precedente messaggio.
    apropos…cosa vuol dire “domande pensanti🙂 ” ??
    As usual, grazie 1K per il tempo che mi dedichi.
    Cordialmente. Marino

  30. 31 streetcross 11 settembre, 2009 alle 10:21 am

    @Martino, allora credo che non sia possibile, perchè il grub.cfg viene generato da script che debbono essere eseguiti durante l’attività dell’os, quindi è difficile che possa cambiare il “default” in corsa, penso che la via più pratica sia quella del workaround che hai spiegato tu stesso, però stai attento perchè devi creare uno script che modifichi gli script e poi rigenre grub.cfg, preferibilmente distanziando la sua esecuzione di qualche secondo dall’effettivo shutdown dato che richiede una manciata di secondi la sua esecuzione.

    Per domande pesanti intendo domande intelligenti🙂 è un complimento

  31. 32 Valdan 11 settembre, 2009 alle 11:22 pm

    @step
    Ho notato che startup-manager funziona su grub2!

  32. 33 The Doctor 13 settembre, 2009 alle 10:26 am

    Ciao streetcross. Ho letto la guida ma ti faccio lo stesso questa domanda perchè non voglio fare casini. Qual è il sistema più semplice per eliminare le voci dei vecchi kernel e lasciare solo l’ultimo? Con GRUB bastava editare il menu.lst e cancellarli ma con GRUB2?

  33. 34 streetcross 14 settembre, 2009 alle 2:57 pm

    @The Doctor quello che facevi con GRUB era già sbagliato, le voci non vanno solo cancellate, devi disinstallare i kernel, altrimenti se ne stanno lì solo ad occupare spazio inutilmente😉

  34. 35 cyberfra 17 settembre, 2009 alle 5:40 am

    Istruttivo il tuo articolo, sono alle prese con grub2.
    Per avere le entries di alti SO senza editare i file (non si sa mai…) in alternativa si puo’
    – installare il pacchetto os-prober (secondo me dovrebbe essere
    una dipendenza di grub2..)
    – update-grub2

    Spero che eliminano questa bug al piu’ presto
    http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=544064

  35. 36 Free 17 settembre, 2009 alle 11:06 am

    Ciao, una domanda. dovendo installare ubuntu su un acer aspire 3810t ho letto che si doveva aggiungere libata.noacpi=1 alla kernel boot command line, quindi si doveva editare il menu.lst. con grub 2 invece come faccio? dove devo inserire questa istruzione? grazie

  36. 37 streetcross 18 settembre, 2009 alle 5:11 pm

    @cyberfra ottimo, grazie della dritta!
    @Free intanto controlla che sia vero, magari col kernel aggiornato non sserve😉 poi basta editare lo script che impone le opzioni standard, ovvero /etc/default/grub per la precisione alla riga

    GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

    all’interno delle “” che tengono quiet splash

  37. 38 gian64 19 ottobre, 2009 alle 11:51 pm

    Ciao street😀 la mia situazione attuale è questa: HD interno del portatile con jaunty più due sistemi windows. HD esterno con karmic più eventuale altra distro, il tutto avviato dal grub di jaunty.

    Il mio intento è (a suo tempo)

    1) aggiornare jaunty a karmic reinstallando la root e installando grub2

    2) aggiornare karmic alla alpha di “lucid linx” installando (suppongo sarà ancora possibile) in questo caso grub2 nella root per non fargli sovrascrivere quello di jaunty.

    Suppongo a questo punto, per avviare la alpha di “lucid” dal grub2 di karmic io dovrei editare il file /etc/grub.d/30-multiboot (di karmic) inserendovi una voce simile a questa

    cat << _EOF
    menuentry “Ubuntu Jaunty Jackalope” {
    set root=(hd1,2)
    linux /boot/vmlinuz-2.6.28-11-generic root=UUID=f82389f6-7061-408b-88ff-f97c199f30c6
    initrd /boot/initrd.img-2.6.28-11-generic
    }
    _EOF

    Il tutto seguito da un bel

    sudo update-grub

    Almeno mi sembra di aver capito questo…

    O devo agire anche sull'omonimo file di lucid ?

  38. 39 streetcross 20 ottobre, 2009 alle 1:41 pm

    @gian64 così aggiungi manualmente la voce per il tuo nuovo lucid, se però dai semplicemente l’update-grub lo script os-prober dovrebbe rilevare automaticamente il nuovo sistema. in caso contrario o lo aggiungi come dici tu o (te lo consiglio) semplicemente aggiungi tramite chainload il nuovo grub di lucid, così il grub di lucid sarà sempre aggiornato con i vari kernel e tu non dovrai modificare a mano ogni volta lo script

  39. 40 gian64 20 ottobre, 2009 alle 10:10 pm

    Cioè intendi dire

    1) installare su hd interno karmic installando normalmente grub2 nel MBR

    2) installare lucid su hd esterno installando questa volta grub2 nella sua root

    3) dare update-grub

    oppure

    1)…

    2)…

    3) qui non credo di aver capito bene, devo aggiungere al file

    /etc/grub.d/30-multiboot di karmic

    una voce tipo questa

    cat << _EOF
    menuentry “Nome sistema operativo” {
    set root=(hdX,Y)
    chainloader +1
    }
    _EOF

    relativa a lucid copiata dall'omonimo file di questo

  40. 41 streetcross 22 ottobre, 2009 alle 7:50 pm

    @gian64 l’ultima che hai detto è quella giusta:
    1)..
    2)..
    3) aggiungi

    cat << _EOF
    menuentry “Nome sistema operativo” {
    set root=(hdX,Y)
    chainloader +1
    }
    _EOF

    (tramite script chiaramente)

    al grub installato sull'mbr, così utilizzi tutti e due i grub senza problemi

  41. 42 streetcross 22 ottobre, 2009 alle 7:52 pm

    @gian64 scusa con “giusta” intendevo migliore😉 anche la prima spiegazione è corretta, però te la sconsiglio perchè non sempre os-prober funziona bene purtroppo, su LQH abbiamo visto diversi problemi legati a grub2 e lo script os-prober

  42. 43 mau 24 ottobre, 2009 alle 11:29 am

    Ottima guida steetcross

    Ovviamente tutte le novità hanno bisogno di un periodo di adattamento.
    Parlando di Karmic devo dire che la fase di boot relativa a GRUB è più lunga della fase di caricamento dell’intero s.o. 🙂

    Ho visto che ci sono diversi temi utilizzabili nello splash
    1. come abilitare lo splash?
    2. come cambiare tema di default?

    ho provato qualche modifica in default-grub ma senza esito
    per ora sono riuscito a far comparire il menu :-))))))

    ciaociao

  43. 44 gian64 24 ottobre, 2009 alle 1:21 pm

    Ok, grazie. Però una cosa non ho capito bene, in che senso devo aggiungere la voce tramite script…

    Allora, riassumendo: io non posso editare il file /grub.cfg, però le varie voci relative ai vari SO sono aggiunte al /grub.cfg dagli script che io vado a editare, tipo il /etc/grub.d/30-multiboot: però una cosa non mi è chiara, per editare questo file devo oppure no farlo a mano? in caso contrario non ho capito…

    Grazie per la pazienza, ciao

  44. 45 sartana666 29 ottobre, 2009 alle 12:56 pm

    Scusate …. sarò grezzo ma cambiando gli attributi di grub.cfg con chmod e modificando la stringa di default e del time con sudo nano ho risolto il problema della sequenza e dell’attesa….. non capisco tutta questa paura di editare il file

  45. 46 gian64 30 ottobre, 2009 alle 1:01 am

    Ciao, ho installato per prova grub2 su jaunty, al riavvio tutto regolare, dopo il “sudo upgrade-from-grub-legacy” tutto funzina alla perfezione, sia jaunty che windows si avviano regolarmente.

    I guai arrivano dopo, quando tento di inserire in grub2 una voce relativa a karmic su hd esterno.

    Non trovando lo script /etc/grub.d/30-multiboot e non sapendo come crearlo decido di inserire la voce

    cat << _EOF
    menuentry “Ubuntu Jaunty Jackalope” {
    set root=(hd1,2)
    linux /boot/vmlinuz-2.6.28-11-generic root=UUID=f82389f6-7061-408b-88ff-f97c199f30c6
    initrd /boot/initrd.img-2.6.28-11-generic
    }
    _EOF

    nello script /etc/grub.d/40_custom…

    Dato "sudo update-grub", sorpresa!

    Non c'è più verso di avviare jaunty!

    All'avvio di grub2 mi dice

    Syntax error dicendomi che qualcosa non va alle righe 70 e 72 di non ricordo quale file + press any key to continue…

    premo, mi mostra la schermata di scelta ma se seleziono ubuntu mi dice che prima di avviare dovrei caricare il kernel…

    Ho provato in tutti imodi compreso SGD a ripristinare grub ma non c'è stato verso, alla fine per riavere la mia jaunty ho dovuto reinstallare…

    Quindi di sicuro ho errato nel modificare quel file, come devo fare a creare il file /etc/grub.d/30-multiboot?

  46. 47 gian64 30 ottobre, 2009 alle 1:05 am

    Dimenticavo, in tutto questo pasticcio, contrariamente a quanto accade in genere a me windows si è sempre avviato regolarmente.

  47. 48 Lorenzo 3 novembre, 2009 alle 8:40 pm

    Ho un computer un po’ vecchiotto. Per far si che si spegnesse, con il vecchio GRUB, aggiungevo ACPI=force, in /boot/grub/menu.lst, e tutto funzionava.
    Ora non riesco a capire dove, sempre che sia possibile, devo aggiungerlo.
    Ciao

  48. 49 guglielmo 3 novembre, 2009 alle 10:25 pm

    SALVE,

    dopo aver istallato UBUNTU 9.10 ho collegato un’altro HD con WinXP.
    Eseguito sudo update-grub ho riavviato il tutto.
    Al boot di grub ho trovato presente la riga per avviare WIndows.
    Selezionando e dando invio per il boot, ecco l’errore:
    ERROR: INVALID SIGNATURE

    Che cosa significa.

    Ah, dimenticavo, quando ho eseguito sudo update-grub mi ha restituito un errore:

    Generating grub.cfg …
    Found linux image: /boot/vmlinuz-2.6.31-14-generic
    Found initrd image: /boot/initrd.img-2.6.31-14-generic
    Found memtest86+ image: /boot/memtest86+.bin
    Found Microsoft Windows XP Professional on /dev/sdb1
    grub-probe: error: Cannot find a GRUB drive for /dev/sdb1. Check your device.map.

    done

    Con UBUNTU 9.04 modificando aggiungento la mappature degli HD ero riuscito a fare avviare il S.O. che mi piaceva in quel momento.
    Di seguito le linee del vecchio menu.lst :

    title WindowsXP
    map (hd0) (hd1)
    map (hd1) (hd0)
    chainloader (hd1,0)+1

    Queste con grub vecchio ho risolto il mio problema.
    Come faccio con GRUB2?

    Un G R A Z I E grandissimo anticipato …..

  49. 50 Francesco L. 27 novembre, 2009 alle 2:16 am

    Guardate, proprio non capisco perché si voglia fare di tutto per rendere incomprensibile ciò che prima era comprensibilissimo.
    A me il grub 2 (tutto minuscolo), pare come frutto di seghe mentali, di gente frustrata dalla tastiera.
    Sono offensivo?
    Forse.
    Le offese sono motivate?
    Sicuramente.
    Soltanto per questo schifo di bootloader, sento crescermi nel petto la voglia di mandare a quel paese il Pinguino e di cominciare a mettere da parte i soldi per comprarmi un Mac…
    Penso che chi l’ha creato abbia pensato che era giusto inserire un sistema di scripting perché troppa gente stava cominciando ad avvicinarsi al Pinguino, pure con una certa soddisfazione.
    E’ una questione di mantenimento di posizione di potere: non è giusto, questo nelle loro menti, che un “utonto” cominci a mettere mano a certi arcana e pensi di provare a utilizzare per diletto più di un Pinguino oltre a una delle più facili distribuzioni che esistono.
    “No, sono io il geek, solo quelli come me, che sanno di scripting, devono poter imparare usando più di uno GNU/Linux, e porcaputtana! Gli utonti dovranno rimanere tali! Questi usino Ubuntu, Puppy Linux, Small Damn Linux ecc.! Solo io, che sono il master dello script, posso usare tutti i i Pinguini che voglio! Troppo facile, eh? “Sì perché io sono io e voi non siete un cazzo”, utonti dei miei stivali!”
    Che sia consapevole o inconsapevole, è questione di posizione.
    Possiamo comprendere, ma non possiamo giustificare.
    Per la stessa ragione, mi tengo per me il modo di far andare ext4 col Grub 1 (che se ci pensate, è abbastanza semplice)…
    In ogni caso, Strettcross, il tuo è un ottimo how-to e ti ringrazio.😀

  50. 51 anht 2 dicembre, 2009 alle 1:54 am

    Il problema e se volessi eliminare qualcosa dal menù o semplicemente modificare che si fa?

    esempio;

    Ubuntu
    Debian
    windows xp
    windows vista
    Wingoogle
    winlibero

    questo è il menu di multiboot, ipotetico.

    non mi interessa più windows XP che faccio?

  51. 52 streetcross 16 dicembre, 2009 alle 1:14 pm

    @mau grazie, penso che scriverò una guida per i temi, anche se ho visto che ci sono diversi progetti al riguardo, chissà quale sarà il il migliore😀

    @gian64 il file lo crei con un semplice editor di testo, quindi controlli i permessi e ti assicuri che abbia quelli di esecuzione (clik dx-proprietà) se windows partiva vuol dire che il grub non era installato correttamente (o intendi lanciato da grub?)

    @sartana666 se leggi nel file c’è scritto chiaramente di non editarlo a mano, questo perchè in alcuni casi può bloccare del tutto il funzionamento di grub, a te decidere se vale la pena rischiare contro l’opinione del programmatore di grub😉

    @Lorenzo in /etc/default/grub alla riga
    GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

    @guglielmo perchè necessita di una rimappatura, come ti suggerisce (Check your device.map.) devi effettuarla nel file device.map (e non nel vecchio menu.lst)

    @Francesco L. figurati, tutti hanno il diritto all’opinione nel mondo open e dubito che qualcuno si offenda per un po’ di colore, io la penso vagamente come te, ovviamente le motivazioni ci sono e non sono “siamo cattivi” però effettivamente è una bella complicazione che in fin dei conti sarebbe evitabile, dato che il file a cui fa riferimento grub resta sempre e solo uno.

    @anht se è stato trovato da os prober (quindi automaticamente) e hai disinstallato XP ti basta aggiornare grub con il comando sudo update-grub (o in certi casi con l’esecuzione dello script os prober come avveniva in grub legacy) altrimenti basta che cancelli (o rendi ineseguibile) lo script tramite cui hai aggiunto xp e quindi dai l’update-grub

  52. 53 guglielmofede 16 dicembre, 2009 alle 8:30 pm

    SALVE, anht
    volevo sapere se hai ancora installato WinXP in qualche partizione.

    A presto…

  53. 54 carcass 18 dicembre, 2009 alle 4:51 pm

    bella guida.🙂

    io non ho avuto problemi di sorta col boot, ma piuttosto qualcuno ha settato il framebuffer??? io ho seguito le guide settando la risoluzione in /etc/default/grub, in /etc/grub.d/00_header dato update-grub2 ma la risoluzione rimane quella………perchè ????

  54. 56 streetcross 18 dicembre, 2009 alle 6:48 pm

    @carcass prova semplicemente son update-grub

  55. 57 ikam 12 gennaio, 2010 alle 3:36 pm

    Ciao streetcoss,
    complimenti per l’ottima guida. Io ancora ho le idee poco chiare
    sul come fare ad esempio a nascondere i precedenti kernel dal menù
    di avvio del grub2 senza per il momento disinstallarli fisicamente
    dall’HD.
    Vorrei tenere solamente l’ultimo aggiornato.
    Grazie per le eventuali risposte.

  56. 58 streetcross 12 gennaio, 2010 alle 7:16 pm

    @ikam grazie a te. Infatti quella è una nota dolente, non potendo editare manualmente il file grub.cfg non puoi nascondere facilmente quello che vuoi, lo script adibito a trovare il sistema operativo infatti ti scrive tutti i kernel, e dovresti agire su quello, 30_os-prober, altrimenti una via semplice è quella di creare uno script per le voci che vuoi vedere (come spiegato sopra) e disabiliti lo script os_prober in modo tal che non aggiunga alcuna voce. Ovviamente in questo caso per ogni kernel installato dovrai rimodificare a mano lo script, stando al wiki del grub non ci sono ancora modifiche ufficiali, e questo è quindi il metodo.

  57. 59 ikam 13 gennaio, 2010 alle 9:44 am

    Grazie streetcross di avermi dato risposta al mio quesito.
    Ancora complimenti per il tuo blog.

  58. 60 streetcross 13 gennaio, 2010 alle 10:25 am

    @ikam, non c’è di che, grazie a te dei complimenti🙂

  59. 61 Andrea 29 gennaio, 2010 alle 11:09 am

    Ciao, sai per caso come si fa a modificare le scritte nel grub? cioè invece di Windows 7 loader /(sda etc etc.. vorrei mettere semplicemente scritto Windows 7 Professional. Come si fa?
    Grazie in anticipo!

  60. 62 streetcross 29 gennaio, 2010 alle 6:50 pm

    @Andrea devi togliere lo script per gli altri os e aggiungere manualmente una voce per windows con un nuovo script (vedi sopra)

    cat << _EOF
    menuentry “Nome sistema operativo” {
    set root=(hdX,Y)
    chainloader +1
    }
    _EOF

  61. 63 rai 30 gennaio, 2010 alle 11:58 am

    grazie della bella guida streetcross🙂
    certo, di grub2 si apprezzano prima le complicazioni che i benefici.
    per esempio: ho un pc in cui vorrei il boot di default di XP e vorrei che rimanesse così anche dopo gli aggiornamenti del kernel.
    Per capirci, quello che in grub facevo con
    default=_numero_di_XP_
    e con
    # updatedefaultentry=true

    sono certo che c’è un modo, ma sai quale?

    grazie, ciao

  62. 64 streetcross 30 gennaio, 2010 alle 1:58 pm

    @rai in /etc/default/grub c’è l’opzione default, per far partire in automatico la linea desiderata, effettivamente è un problema in caso di aggiornamento kernel, non vedo la voce updatedefaultentry nel mio file, puoi però provare ad aggiungerla (sotto alla voce default) e vedere se funziona. In alternativa crea uno script per aggiungere windows sempre al primo posto, chiamandolo ad esempio 00_a

  63. 65 rai 30 gennaio, 2010 alle 6:33 pm

    Grazie della risposta streetcross
    se capisco, vuoi dire di:
    far sparire il file 30_os-prober
    creare un file tipo quello che consigliavi nella risposta @Andrea
    chiamarlo 00_a_qualcosa per farlo vedere per primo

    dopodichè per vedere se funziona aggiungere o cancellare un kernel e dare update-grub

    Ora provo. Intanto ti segnalo che la GUI per grub (startupmanager) funziona (parzialmente) anche con grub2
    è vero che padroneggiare i file di configurazione aiuta a capire, però anche la semplicità di uso non guasta😉
    ciao

  64. 66 et4beta 30 gennaio, 2010 alle 9:05 pm

    @rai
    Ho letto il post ed il tuo quesito, e pur ammettendo che il grub2 stenta un po’ a farsi benvolere, direi che nel tuo caso offre la possibilità di una soluzione molto comoda, con la chiamata “testuale”.
    Mi spiego.
    Se tu vuoi con il grub2 mettere sempre di default in avvio un O.S., ad esempio Windows XP, non devi fare altro che mettere, nel file /etc/default/grub, alla riga GRUB_DEFAULT=”xxxxxxxxx”, al posto delle “x”, la stessa stringa che è alla riga “menuentry” dell’XP che vuoi di default.
    Faccio un esempio.
    Se io volessi avere di default al menu di avvio, il mio Windows XP che ha nel /boot/grub/grub.cfg queste righe di avvio:
    menuentry “Microsoft Windows XP Home Edition (on /dev/sda1)” {
    saved_entry=${chosen}
    save_env saved_entry
    insmod ntfs
    set root=(hd0,1)
    search –no-floppy –fs-uuid –set befc4cc8fc4c7ca1
    drivemap -s (hd0) ${root}
    chainloader +1

    Non devo far altro che mettere nel /etc/default/grub, così:

    GRUB_DEFAULT=”Microsoft Windows XP Home Edition (on /dev/sda1)”

    Virgolette comprese, anzi, per non sbagliare, dato che la stringa è lunga, conviene fare con copia/incolla dal grub.cfg al default/grub.
    E da quel momento in poi, indipendentemente dall’ordine delle righe di avvio nel menu, Win sarà sempre in “pool position”.
    Ciao.

  65. 67 rai 30 gennaio, 2010 alle 10:04 pm

    @ et4beta grazie😀
    queste sono cose che possono raddrizzare un inizio d’anno storto: una soluzione che unisce all’efficienza il plus della semplicità si può definire `bella` nel senso alto del termine.
    Ma l’hai scoperto da te (e allora tanto di cappello) o c’è qualcosa da leggere che puoi consigliare?😉
    ciao

  66. 68 et4beta 30 gennaio, 2010 alle 11:44 pm

    @rai
    Non conosco l’esistenza di una guida completa del grub2, ci sono solo guide come quella del presente blog e quella del Wiki di Ubuntu-it, che ti permettono di capire le cose basilari sul nuovo bootloader, ma per “affinare” la conoscenza bisogna cercare nel Web tra i vari blog e forum raccogliendo una mollichina alla volta.
    Io, ed anche streetcross, frequentiamo il forum ubuntu-it ed anche lì ormai di info sul grub2 se ne cominciano a trovare abbastanza.
    Purtroppo però è un programma in fase di sviluppo ed è ancora soggetto a problemi, che purtroppo disorientano un po’ l’utenza, anche perché non tutti risolvibili.
    Comunque gli sviluppatori ci stanno lavorando, in Lucid (10.04) il grub2, al momento, non è più l’1.97, ma è l’1.98-2, e posso dirti che i suoi script sono sensibilmente diversi da quelli del predecessore.
    Mi auguro che riescano in tempi brevi ad arrivare ad una release che non dia problemi, anche se non sarà facile, visto che le cause di questi sembrano legate a non ben conosciute anomalie hardware e software.
    Ciao.

  67. 69 Andrea 31 gennaio, 2010 alle 5:22 pm

    ciao streetcross, innanzitutto grazie per la tua risposta, ma sono dispiaciuto nel dirti che sono praticamente un principiante e non ho capito quello che mi hai suggerito, potresti essere un pò più preciso? ti ringrazio molto
    ps il mio messaggio di aiuto è del 29 dicembre
    ancora grazie

  68. 70 streetcross 2 febbraio, 2010 alle 12:31 pm

    @et4beta wow, grazie dell’info, quando ci provai io non funzionava ^_^ evidentemente o hanno aggiustato le cose, o avevo sbagliato a copiare la riga😀

    @andrea devi togliere i permessi di esecuzione allo script otheros, quindi crearne uno nuovo (crea un file di testo in tale directory) in cui aggiungi manualmente gli os che vuoi fare avviare, col nome che vuoi tu. Attenzione perchè logicamente poi dovrai aggiornarlo manualmente!
    Per fare quanto deto in maniera pratica:

    sudo chmod -x /etc/grub.d/30_otheros

    sudo gedit /etc/grub.d/30_myos

    ci incolli dentro le righe per aggiungere windows (vedi sopra)
    salvi e chiudi

    sudo chmod +x /etc/grub.d/30_myos

    sudo update-grub

  69. 71 dommy 20 febbraio, 2010 alle 8:28 am

    Una cosa è certa, sembra che ogni tanto salti fuori qualcuno che deve dare una mano a Microsoft……..
    Se questo è il modo per aiutare ad avvicinare tutti a linux, be….. penso che ci sia ancora molto da imparare.
    Le persone normali non hanno proprio nessuna voglia di perdere giornate per aggiustare un boot manager che fà di tutto per essere brutto ed incomprensibile….. e che poi mette i default come vuole lui……..
    Grub2, avrà anche risolto il problema dell’ ext4 ma è un vero casino………
    Dommy

  70. 72 armando 20 marzo, 2010 alle 12:34 pm

    ho notato la incompatibilita’ di grub2 nel caso sia presente una entrata nel menu.lst del vecchio grub come questo:

    title Xen 3.2 / Ubuntu 8.04.4 LTS, kernel 2.6.24-27-xen
    root (hd0,5)
    kernel /boot/xen-3.2.gz
    module /boot/vmlinuz-2.6.24-27-xen
    module /boot/initrd.img-2.6.24-27-xen

    gru2 quando non trova alla voce kernel un vmlinuz e sopratutto
    se incontra la voce module lo ignora completamente rendendo di fatto impossibile l’avvio di quel kernel.
    avreste una idea per risolvere questo problema?

  71. 73 Cristiano 10 maggio, 2010 alle 1:13 pm

    Ciao sto realizzando un raid1 con ubuntu 10.04. Ho letto per bene la tua guida ed anche molte altre su come realizzare il raid1 software. Mi riesce tutto bene sin quando c’è da configurare il grub, infatti in tutte le guide che ho trovato sin ora ci si riferisce al grub-legacy mentre ubuntu 10.04 monta il grub2.
    Non essendo io un gran esperto di grub in generale non riesco a venirne fuori. Qualcuno saprebbe aiutarmi in merito a tale configurazione? O magari anche postare la config di una macchina con grub2 in raid1 ?

  72. 74 Mario 30 ottobre, 2010 alle 2:40 pm

    Ragazzi, vedo molti commenti, io ci provo… se no magari in forum ubuntu.
    Allora, io ho due dischi sata, uno con ubuntu e ora uno con win xp.
    Pensavo di fare il figo accedendo al menu di boot “pop-up” del bios per bootare windows. E invece no, Ubuntu parte, windows invece si resetta in loop senza partire. Questo lo fa solo se c’è il disco di Ubuntu in contemporanea, da solo Win parte senza problemi. Cambio ordine nel bios, etc, niente.
    Installo Grub 2. Vedo le varie voci, mi dico, è fatta, e invece Windows ha lo stesso problema. Si resetta all’infinito…
    Forse smanettando nelle configurazioni di Grub? Mah… Se riuscite a darmi qualche dritta ve ne sarò grato.

  73. 75 linus 13 novembre, 2010 alle 3:20 pm

    ciao perche’ appena inserisco la entry con nome modificato, ma preso il tutto dal file grub.cfg, al file 40_custom, lanciando update-grub mi carica sempre quello del file grub.cfg, e non quello del file 40_custom?

    nel grub.cfg ho questo:
    ### BEGIN /etc/grub.d/30_os-prober ###
    menuentry “Windows Recovery Environment (on /dev/sda2)” {
    insmod part_msdos
    insmod ntfs
    set root='(hd0,msdos2)’
    search –no-floppy –fs-uuid –set xxxxxxxx
    drivemap -s (hd0) ${root}
    chainloader +1
    }

    io ho messo in 40_custom windows 7 , com privilegi di root
    ma appena pero lancio update-grub, mi carica sempre Windows Recovery Environment (on /dev/sda2)
    dove sbaglio?
    grazie ciao

  74. 76 freedom71 2 aprile, 2011 alle 2:58 pm

    Ciao, e complimenti per la guida.
    Su un SATA ho installato una Debian 6.0 e la uso per installare il GRUB2.
    Dopo aver installato Ubuntu10.04 su un PATA, non riuscivo a farlo caricare da GRUB2.
    Ho seguito +/- la tua guida, ma non funzionava.
    Tutti i parametri erano corretti, ma non andava.
    Dopo qualche ora ho scoperto il problema.
    Una stupidagine…..
    Quando aggiungi la voce

    menuentry “Ubuntu ” {

    bisogna utilizzare la virgoletta semplice ‘ al posto del doppio virgolettato “.

    menuentry ‘Ubuntu ‘ {

    dopo questa “modifica” tutto funziona come previsto.

    Comunque con il vecchio GRUB era tutto molto + semplice.

    Ciao


  1. 1 V4LD4N » Grub2 croce e delizia… Trackback su 11 settembre, 2009 alle 10:15 pm
  2. 2 Karmic e GRUB2 « Ubuntu+1 Trackback su 16 ottobre, 2009 alle 9:30 pm
  3. 3 SOURCES.LIST » Blog Archive » Guida all’installazione e alla configurazione dei temi per il Grub2 Trackback su 5 gennaio, 2010 alle 1:10 pm

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...




Serve aiuto? LQH!
aprile: 2009
L M M G V S D
« Mar   Mag »
 12345
6789101112
13141516171819
20212223242526
27282930  

Blog Stats

  • 419,021 hits

Più cliccati

  • Nessuna
Planet LQH
Planet di ubuntu-it


Smilla Magazine
iwinuxfeed.altervista.org

RSS Feed sconosciuto

  • Si è verificato un errore; probabilmente il feed non è attivo. Riprovare più tardi.

%d blogger cliccano Mi Piace per questo: