Pagina 1 di 1
[Grub] Modifica del valore di una voce
Inviato: domenica 16 ottobre 2011, 22:11
da robott
Salve,
ho installato Ubuntu 11.10 in un computer nel quale c'era solo windows. Ho ridimensionato al partizione e creato quelle ad hoc per ubuntu.
Sono riuscito a fare funzionare tutto, se non che il GRUB2 alla voce WindowsXP per vari motivi (dovuti al ridimensionamento delle partizioni, ma che non ci interessano) cerca il BOOT.INI di windows nella partizione sbagliata.
Momentaneamente ho risolto con una copia modificata appositamente del BOOT.INI, inserita dove il GRUB2 la va a cercare.
Studiando in giro il funzionamento del GRUB2 ho capito che le voci vengono create automanticamente attraverso l'esecuzione di script che si trovano nella cartella /etc/grub.d, e non saprei nel caso particolare del mio problema cosa potrei modificare.
In alternativa avevo pensato, nonstante fosse a ragion veduta sconsigliato, di modificare direttamente il grub.cfg (che si trova in /boot/grub), ma non riesco a capire quale sia il campo che indica alla voce dove cercare il file di boot...
In conclusione, come posso modificare (forzare) il valore di una voce del GRUB2?
Grazie anticipatamente!
PS: Ho già provato programmi con Grub-customizer e Start-up... in nessuno di questi ho trovato qualcosa di utile al mio problema.
Re: [Grub] Modifica del valore di una voce
Inviato: domenica 16 ottobre 2011, 22:30
da hellojoker
devi modificarti il file 40_custom in /etc/grub.d/ li crei un entry per grub in modo che ti punti alla posizione corretta lo rendi eseguibile poi sudo update-grub
Re: [Grub] Modifica del valore di una voce
Inviato: domenica 16 ottobre 2011, 22:44
da robott
Potresti farmi un esempio di livello generale che provo ad adattarlo?
Per esempio, come potrebbe essere uno script che punta ad un partizione precisa? Come indico il file di boot?
Re: [Grub] Modifica del valore di una voce
Inviato: domenica 16 ottobre 2011, 22:49
da hellojoker
Prendi la voce che fa riferimento a windows in /boot/grub/grub.cfg (fai copia ed incolla) e la metti nel 40_custom da li poi fai gli adeguamenti senza sapere che modifiche hai fatto al boot.ini, dove grub va a cercare e non trova, come è partizionato il tuo hard disk difficile dare consigli
Re: [Grub] Modifica del valore di una voce
Inviato: domenica 16 ottobre 2011, 23:07
da robott
Non capisco come possa aiutarmi il risultato nel grub.cfg... Penso che mi manchi qualche passaggio che mi impedisca di capire, pertanto di dico perché non mi sembra fattibile così mi puoi correggere dove sbaglio.
Prendere la voce dal grub.cfg mi sembra come prendere 5 e dover risalire al problema che sia frutto della somma di 4+1 o 3+2...
Io devo creare un script generale che in esecuzione, si mi dia il risultato sperato, ma escluda anche tutti gli altri.
Quindi se è vero che sò il tipo di risultato voluto, non essendo esperto, mi viene difficile risalire ad uno script che escluda anche che nell'esecuzione incappino anche altri risultati.
Ho 3 partizioni, nella prima 1 windows, nella seconda 2 semplicemente dati, nella terza 3 ubuntu e la quarta 4 di swap.
Il grub cerca nella 2 il boot.ini, quando dovrebbe cercarlo nella 1. Allora ho messo nella 2 un boot.ini che carica windows dalla 1 (in questo consiste la piccola modifica).
C'è un prototipo di script che cerca in una partizione il sistema operativo? Non mi basterebbe cambiare a questo script l'unità in cui cerca? Ma come... per questo mi affido a te! :P
E sempre grazie!

Re: [Grub] Modifica del valore di una voce
Inviato: domenica 16 ottobre 2011, 23:16
da hellojoker
Facciamo cosi posta
metti tutto nei tag code l'icona cancelletto nel messaggio di risposta
Re: [Grub] Modifica del valore di una voce
Inviato: lunedì 17 ottobre 2011, 11:50
da robott
Questo è il risultato di fdisk -l.
Codice: Seleziona tutto
Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 testine, 63 settori/tracce, 9729 cilindri, totale 156301488 settori
Unità = settori di 1 * 512 = 512 byte
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificativo disco: 0x42a18a44
Dispositivo Boot Start End Blocks Id System
/dev/sda1 2048 20482047 10240000 27 Hidden NTFS WinRE
/dev/sda2 20482936 88389629 33953347 f W95 Esteso (LBA)
/dev/sda3 88395776 135118847 23361536 7 HPFS/NTFS/exFAT
/dev/sda4 135118848 156301311 10591232 83 Linux
/dev/sda5 * 20482938 88389629 33953346 7 HPFS/NTFS/exFAT
Il computer l'ho avuto in prestito appositamente per installare Ubuntu, quindi sono limitato nel poter riformattare e partizionarlo a mio gradimento.
Nell'sda1 è una piccola partizione di quelle di ripristino (che si trovano di solito all'acquisto).
L'sda5 contiene Windows.
L'sda3 è la partizione DATI.
l'sda4 è ubuntu (dove è montata la radice /)
Per quanto riguarda lo swap avendo il limite di max 4 partizioni primarie, attraverso una procedura trovata in rete l'ho creato come un semplice file contenuto nella stessa sda4.
Qui il file grub.cfg:
Codice: Seleziona tutto
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
set have_grubenv=true
load_env
fi
set default="0"
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function recordfail {
set recordfail=1
if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
}
function load_video {
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
}
insmod part_msdos
insmod ext2
set root='(hd0,msdos4)'
search --no-floppy --fs-uuid --set=root 5fca8c36-ae7f-40e8-9c76-19831e050908
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=auto
load_video
insmod gfxterm
insmod part_msdos
insmod ext2
set root='(hd0,msdos4)'
search --no-floppy --fs-uuid --set=root 5fca8c36-ae7f-40e8-9c76-19831e050908
set locale_dir=($root)/boot/grub/locale
set lang=it_IT
insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ]; then
set timeout=-1
else
set timeout=10
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
if background_color 44,0,30; then
clear
fi
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
if [ ${recordfail} != 1 ]; then
if [ -e ${prefix}/gfxblacklist.txt ]; then
if hwmatch ${prefix}/gfxblacklist.txt 3; then
if [ ${match} = 0 ]; then
set linux_gfx_mode=keep
else
set linux_gfx_mode=text
fi
else
set linux_gfx_mode=text
fi
else
set linux_gfx_mode=keep
fi
else
set linux_gfx_mode=text
fi
export linux_gfx_mode
if [ "$linux_gfx_mode" != "text" ]; then load_video; fi
menuentry 'Ubuntu, con Linux 3.0.0-12-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos4)'
search --no-floppy --fs-uuid --set=root 5fca8c36-ae7f-40e8-9c76-19831e050908
linux /boot/vmlinuz-3.0.0-12-generic root=UUID=5fca8c36-ae7f-40e8-9c76-19831e050908 ro vga=758 quiet splash vt.handoff=7
initrd /boot/initrd.img-3.0.0-12-generic
}
menuentry 'Ubuntu, con Linux 3.0.0-12-generic (modalità ripristino)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos4)'
search --no-floppy --fs-uuid --set=root 5fca8c36-ae7f-40e8-9c76-19831e050908
echo 'Caricamento Linux 3.0.0-12-generic...'
linux /boot/vmlinuz-3.0.0-12-generic root=UUID=5fca8c36-ae7f-40e8-9c76-19831e050908 ro recovery nomodeset vga=758
echo 'Caricamento ramdisk iniziale...'
initrd /boot/initrd.img-3.0.0-12-generic
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
insmod part_msdos
insmod ext2
set root='(hd0,msdos4)'
search --no-floppy --fs-uuid --set=root 5fca8c36-ae7f-40e8-9c76-19831e050908
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
insmod part_msdos
insmod ext2
set root='(hd0,msdos4)'
search --no-floppy --fs-uuid --set=root 5fca8c36-ae7f-40e8-9c76-19831e050908
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows Vista (loader) (on /dev/sda1)" --class windows --class os {
insmod part_msdos
insmod fat
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root a20a-9608
chainloader +1
}
menuentry "Microsoft Windows XP Professional (on /dev/sda3)" --class windows --class os {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos3)'
search --no-floppy --fs-uuid --set=root 0A78B1B378B19E3F
drivemap -s (hd0) ${root}
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
# 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.
### END /etc/grub.d/40_custom ###
### BEGIN /etc/grub.d/41_custom ###
if [ -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
Qui blkid:
Codice: Seleziona tutto
/dev/sda1: LABEL="PQSERVICE" UUID="A20A-9608" TYPE="vfat"
/dev/sda3: LABEL="DATA" UUID="0A78B1B378B19E3F" TYPE="ntfs"
/dev/sda4: UUID="5fca8c36-ae7f-40e8-9c76-19831e050908" TYPE="ext4"
/dev/sda5: UUID="B47C16F07C16ACDC" TYPE="ntfs"
Re: [Grub] Modifica del valore di una voce
Inviato: lunedì 17 ottobre 2011, 12:37
da patel
la voce che devi modificare è quella in grassetto:
menuentry "Windows Vista (loader) (on /dev/sda1)" --class windows --class os {
insmod part_msdos
insmod fat
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root a20a-9608
chainloader +1
}
Re: [Grub] Modifica del valore di una voce
Inviato: lunedì 17 ottobre 2011, 12:47
da robott
Perché dovrei modificare questa voce?
A me interessa che funzione windows XP che si trova nell'altra partizione. Questo Windows Vista è un rimasuglio di non sò quale tentativo d'installazione (infatti è un semplice recovery). Non mi chiedete perché esista, come premesso il computer non è mio. In compenso penso non infici quello per cui ho scritto il post.
Invece ho provato a modificare manualmente il campo root con l'UUID della partizione di windows, ma così modificato parte la classica schermata nera che si blocca con il trattino basso lampeggiante... Non capisco a cosa possa essere dovuto. Tant'è che ritornando alla conf. deviata funziona.
Forse va necessariamente modificato attraverso lo script? O magari non basta modificare solamente l'UUID nel campo root?
Re: [Grub] Modifica del valore di una voce
Inviato: lunedì 17 ottobre 2011, 14:24
da hellojoker
Prova così vediamo se va (certo una situazione peggiore non se la poteva scegliere windows su partizione logica, con un vista di mezzo)
menuentry "Microsoft Windows XP Professional (on /dev/sda3)" --class windows --class os {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set=root B47C16F07C16ACDC
drivemap -s (hd0) ${root}
chainloader +1
Re: [Grub] Modifica del valore di una voce
Inviato: lunedì 17 ottobre 2011, 17:05
da robott
Ho provato il codice suggerito ma non ha avuto buon esito, anche in questo caso si è bloccato alla schermata nera con underscore lampeggiante.
Cosa vuol dire questa schermata? Il boot.ini l'ho inserito nella partizione dove viene indirizzato il grub.. non capisco cosa lo faccia fermare.
Ah.. per curiusità, che differenza c'è tra msdos3 e msdos5? che regola questo campo? Potrei pensare, anche se non ne sono affatto sicuro, che sia relativo alla versione di windows...
Sempre grazie dell'aiuto! :)
Re: [Grub] Modifica del valore di una voce
Inviato: lunedì 17 ottobre 2011, 17:15
da hellojoker
msdos3 msdos5 inicano le rispettivamente le partizioni in sda3 e 5, per il problema al momento non ho idee
Re: [Grub] Modifica del valore di una voce
Inviato: lunedì 17 ottobre 2011, 17:18
da robott
Ma la partizione non viene già indicata con l'uuid? Ad esempio B47C16F07C16ACDC?
Re: [Grub] Modifica del valore di una voce
Inviato: lunedì 17 ottobre 2011, 17:20
da patel
msdos3 = sda3
msdos5= sda5
hai vista e xp ? in quali partizioni sono ? perché uno dei 2 in partizione logica ? spiega come hai fatto a installarli
Re: [Grub] Modifica del valore di una voce
Inviato: lunedì 17 ottobre 2011, 17:26
da robott
Premesso che non li ho installati io. Di Vista c'è solamente un recovery, cioè quelle operazione che Vista permette di fare per la manutenzione, e non tutto il sistema.. perchè ci sia non lo so. Penso che il fatto che ci sia la partizione logica derivi dalla confusione creata da chi c'aveva messo mano prima di me.
Nell'sda1 è una piccola partizione di quelle di ripristino.
L'sda5 contiene WindowsXP.
L'sda3 è una partizione DATI.
l'sda4 è ubuntu (dove è montata la radice /)
Per installarli ho semplicemente ridimensionato la partizione dati NTFS, e la nuova parte lo formatta con ext4 e c'ho installato ubuntu.