[Grub] Modifica del valore di una voce

Problemi riscontrati durante l'installazione di Ubuntu, degli aggiornamenti e degli avanzamenti del sistema.
Scrivi risposta
robott
Prode Principiante
Messaggi: 20
Iscrizione: domenica 26 ottobre 2008, 13:23

[Grub] Modifica del valore di una voce

Messaggio 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.
Avatar utente
hellojoker
Rampante Reduce
Rampante Reduce
Messaggi: 7740
Iscrizione: martedì 22 febbraio 2011, 20:37
Desktop: Gnome Shell
Distribuzione: Fedora|Win10

Re: [Grub] Modifica del valore di una voce

Messaggio 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
robott
Prode Principiante
Messaggi: 20
Iscrizione: domenica 26 ottobre 2008, 13:23

Re: [Grub] Modifica del valore di una voce

Messaggio 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?
Avatar utente
hellojoker
Rampante Reduce
Rampante Reduce
Messaggi: 7740
Iscrizione: martedì 22 febbraio 2011, 20:37
Desktop: Gnome Shell
Distribuzione: Fedora|Win10

Re: [Grub] Modifica del valore di una voce

Messaggio 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 
robott
Prode Principiante
Messaggi: 20
Iscrizione: domenica 26 ottobre 2008, 13:23

Re: [Grub] Modifica del valore di una voce

Messaggio 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!  :D
Avatar utente
hellojoker
Rampante Reduce
Rampante Reduce
Messaggi: 7740
Iscrizione: martedì 22 febbraio 2011, 20:37
Desktop: Gnome Shell
Distribuzione: Fedora|Win10

Re: [Grub] Modifica del valore di una voce

Messaggio da hellojoker »

Facciamo cosi posta

Codice: Seleziona tutto

sudo fdisk -l 

Codice: Seleziona tutto

 cat /boot/grub/grub.cfg

Codice: Seleziona tutto

sudo blkid
metti tutto nei tag code l'icona cancelletto nel messaggio di risposta
Ultima modifica di hellojoker il domenica 16 ottobre 2011, 23:19, modificato 1 volta in totale.
robott
Prode Principiante
Messaggi: 20
Iscrizione: domenica 26 ottobre 2008, 13:23

Re: [Grub] Modifica del valore di una voce

Messaggio 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" 
patel
Accecante Asceta
Accecante Asceta
Messaggi: 23782
Iscrizione: martedì 15 aprile 2008, 20:27
Località: Livorno

Re: [Grub] Modifica del valore di una voce

Messaggio 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
}
Un titolo ben azzeccato attira l'attenzione degli esperti in quel campo, fa risparmiare tempo a voi, aumenta la probabilità di successo.
robott
Prode Principiante
Messaggi: 20
Iscrizione: domenica 26 ottobre 2008, 13:23

Re: [Grub] Modifica del valore di una voce

Messaggio 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?
Avatar utente
hellojoker
Rampante Reduce
Rampante Reduce
Messaggi: 7740
Iscrizione: martedì 22 febbraio 2011, 20:37
Desktop: Gnome Shell
Distribuzione: Fedora|Win10

Re: [Grub] Modifica del valore di una voce

Messaggio 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
robott
Prode Principiante
Messaggi: 20
Iscrizione: domenica 26 ottobre 2008, 13:23

Re: [Grub] Modifica del valore di una voce

Messaggio 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!  :)
Ultima modifica di robott il lunedì 17 ottobre 2011, 17:10, modificato 1 volta in totale.
Avatar utente
hellojoker
Rampante Reduce
Rampante Reduce
Messaggi: 7740
Iscrizione: martedì 22 febbraio 2011, 20:37
Desktop: Gnome Shell
Distribuzione: Fedora|Win10

Re: [Grub] Modifica del valore di una voce

Messaggio da hellojoker »

msdos3 msdos5 inicano le rispettivamente le partizioni in sda3 e 5, per il problema al momento non ho idee
robott
Prode Principiante
Messaggi: 20
Iscrizione: domenica 26 ottobre 2008, 13:23

Re: [Grub] Modifica del valore di una voce

Messaggio da robott »

Ma la partizione non viene già indicata con l'uuid? Ad esempio B47C16F07C16ACDC?
patel
Accecante Asceta
Accecante Asceta
Messaggi: 23782
Iscrizione: martedì 15 aprile 2008, 20:27
Località: Livorno

Re: [Grub] Modifica del valore di una voce

Messaggio 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
Un titolo ben azzeccato attira l'attenzione degli esperti in quel campo, fa risparmiare tempo a voi, aumenta la probabilità di successo.
robott
Prode Principiante
Messaggi: 20
Iscrizione: domenica 26 ottobre 2008, 13:23

Re: [Grub] Modifica del valore di una voce

Messaggio 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.
Ultima modifica di robott il lunedì 17 ottobre 2011, 17:28, modificato 1 volta in totale.
Scrivi risposta

Ritorna a “Installazione e aggiornamento del sistema operativo”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 5 ospiti