Adattatore NVME NFHK e Intel SSD 660p in Linux

L’utilizzo dei dischi SSD risulta anche in ambito linux una scelta che non può essere trascurata. Se si devono caricare velocemente molti dati come accade quando si utilizzano programmi come grandorgue l’utilizzo di queste unità consente di risparmiare parecchio tempo. Operativamente il caricamento di un sample set può passare da 4 minuti a 30 secondi. Le unità SSD al momento sono disponibili in diverse versioni. Si va dal tradizionale disco da 2,5 pollici con una velocità di lettura che si attesta su circa 500MB/s alle unità NVME che utilizzando il bus dati PCIe possono viaggiare nel caso di bus 3.0 a circa 3000MB/sec. Per contro la velocità di  lettura di una unità disco tradizionale in genere non supera i 150MB/s.

L’adattatore NFHK Model:N-M201 consente di utilizzare le unità SSD di tipo NVMe quelle con le performance migliori. Il costo dell’adattatore è contenuto se acquistato su siti come gearbest, meno di 3 euro. Da amazon si può trovare a circa 9 euro. E’ bene precisare che l’utilizzo di un un disco SSD NVME ha senso solo se si dispone di uno slot  PCIe 3.0 libero con 4 linee dati disponibili ( PCI 3.0 x4 ). Diversamente la velocità decade drasticamente e può risultare inferiore anche ad un disco SSD di tipo SATA.

Esistono diversi tipi di disco SSD quelli NVMe si riconoscono per la presenza del connettore Key M.

Intel SSD 660p

Il disco Intel SSD NVMe 660p 512GB è stato introdotto nel 2018 dal costo relativamente contenuto ha prestazioni intermedie e una buona efficenza energetica. La velocità in lettura dichiarata è di 1500MB/s quella in scrittura 1000MB/s. Per una unità SSD NVMe si tratta di performance buone decisamente superiori a quelle di una unità SSD SATA ma non al top della categoria che possono superare i 3000MB/s in lettura e i 2000MB/s in scrittura.  Il 660p monta le nuove memorie QLC 3D NAND a 64 layer che consentono di incrementare la capactà di archiviazione. La memoria NAND QLC consente infatti memorizzare 4 bit per cella. Utilizzando 4 bit per cella servono 16 diversi livelli di carica per rappresentare i 4 bit.  Queste memorie QLC se da un lato consentono di contenere i costi e migliorare l’efficenza energetica dall’altro lato hanno prestazioni inferiori e una resistenza inferiore ai cicli di scrittura.  Il disco SSD 660p ha comunque una garanzia di 5 anni. Queste unità danno il meglio di se se le operazioni di lettura/scrittura hanno percetuali 70/30 ( i tempi di riposo sono sfruttati per ottimizzare cache Slc e l’utilizzo delle celle ) se si prevedono frequenti operazioni di scrittura magari con una occupazione di spazio disco alta sopra 80% è preferibile valutare unità con maggiore resistenza alla scrittura: unità SSD con memorie TLC ( a 3 bit ) o MLC ( a 2 bit ).

 

Il disco SSD NVMe 660p che ha formato M.2 2280 una volta inserito nel connettore femmina viene tenuto in posizione con la vite presente adattatore NVMe.

Utilizzo in Linux SSD 660p

L’abbinamento adapter NVMe e SSD 660p non da particolari problemi con le ultime versioni delle distribuzioni Debian ed Ubuntu.

Utilizzo in linux unità SSD 660p non riconosciuta all’avvio dalla motherboard

Ovviamente qualora si utilizzi una  scheda madre datata si assiste al mancato riconoscimento del SSD NVMe come unità di avvio. Il disco che è tranquillamente utiilzzabile una volta che il sistema viene avviato putroppo non viene elencato come unità di boot.
Il problema del mancato riconoscimento come unità aviabile del disco SSD NVMe  può essere risolto installando la sola directory di boot in un secondo disco che fungerà da unità di avvio.

Unità SSD 660p non riconosciuta all’avvio

La motherboard FM2-A85XA-G65 ha oramai qualche annetto alle spalle e non riconosce l’unità NVMe come unità avviabile.

EFI boot manager evidenzia mostra due dischi Seagate uno da 500GB selezionato e uno da 80GB. Il

Il disco Seagate ST9500 è stato utilizzato come unità di avvio. In fase di installazione la sola directory di boot è stata installata sul disco Seagate  .

La schermata di GRUB 2.0 evidenzia le distribuzioni localizzate sull’unità NVMe.

In particolare la distribuzione selezionata Debian GNU/Linux 9 (stretch) risulta installata sulla partizione 5 dell’unità  nvme (  /dev/nvme0n1p5 )

Nell’esempio ambedue i dischi sono partizionati in GPT le partizioni di boot NVME sono localizzate nel disco seagate è sono inferiori ad 1 GB. La directory di boot (/boot) in fase di prima installazione generalmente non supera i 100 MB.

Velocità di letttura e scrittura e tempo accesso misurate dal tool Benchmark Disk presente in gnome-disk-utility. Utilizzando sample da 10MB risultati in linea con le attese: lettura 1500 MB/s, scrittura 950 MB/s tempo di accesso 0,07 msec.

Ovviamente se non si dispone di uno slot  PCIe 3.0 libero con 4 linee dati disponibili ( PCI 3.0 x4 ) il risultati potrebbero anche ricordare un SSD Sata anche poco performante.

Nota finale in un utilizzo di linux standard le performance operative complessive dell’unità SSD intel 660p potrebbero non discostarsi molto dalle unità SSD tradizionali.

Risorse:

Annunci

efibootmgr – l’applicazione per interagire e modificare l’ EFI Boot Manager – Linux

efibootmgr è un’applicazione userspace utilizzata per modificare il Boot Manager Extensible Firmware Interface (EFI) di Intel. EFI che oramai ha rimpiazzato il BIOS è l’interfaccia firmware che si occupa del modo in cui hardware e software comunicano in un computer. Tra i benefici di EFI è di essere non legato all’architettura x86.  Attualmente viene implementata l’estensione di  EFI denominata UEFI (Unified EFI ).  Tra i compiti di UEFI c’è proprio anche quello di occuparsi dei servizi di Boot. Grazie ad UEFI è possibile avviare diversi sistemi operativi Linux, Mac, Windows senza la necessità di un bootmanager esterno. UEFI infatti può automaticamente selezionare la partizione appropriata con il sistema operativo. L’unica condizione è che l’hardware e  il software ( SO ) supportino le specifiche UEFI.

Esempi di UEFI Boot Menu.

AsRock FM2 – AMD
x79-Xeon

ATTENZIONE: nei primi tempi le implementazioni UEFI, seppur lungimiranti, sono state accompagnate da diversi bug anche peggiorativi rispetto alla controparte BIOS. In questi casi l’utilizzo di efibootmgr si deve accompagnare alla conoscenza della motherboards specifica. 
In generale poichè si potrebbe anche rendere necessario il caricamento del firmware della MB si sconsiglia la modifica con efibootmgr ( anche nel caso dei Macintosh si sconsiglia la modifica con efibootmgr dei menu entry).
Per disporre di un boot manager userfriendly  si consiglia di valutare l’uso di rEFInd.

Boot Manager: rEFInd

Verificare che il sistema sia stato avviato in UEFI mode

Per poter utilizzare efibootmgr è necessario che le variabili filesystem EFI ( EFI vars )  siano accessibili. Questo implica che il sistema sia stato avviato in EFI mode.

In debian:

# sudo [ -d /sys/firmware/efi ] && echo "EFI boot on HDD" || echo "Legacy boot on HDD"
EFI boot on HDD

dal kernel 4.0 si può verificare che l’avvio sia avvenuto in EFI mode con

# cat /sys/firmware/efi/fw_platform_size
se UEFI mode
64  # se 64 bit 
32  # se 32 bit 
diversamente No UEFI mode  
cat: /sys/firmware/efi/fw_platform_size: No such file or directory 

Per visualizzare le variabili EFI si può utilizzare il comando

# efivar –list

Altro comando per verificare l’avvio in EFI mode

#mount | grep efivars
efivarfs on /sys/firmware/efi/efivars type efivarfs (ro,relatime)

Se  il sistema NON è stato avviato in EFI mode digitando efibootmgr avremo il seguente messaggio:

# efibootmgr 
EFI variables are not supported on this system.

UEFI Boot Manager

Usualmente un Computer UEFI mette a disposizione anche tool di configurazione per il menu del Boot Manager EFI. Se il tool non è sufficientemente amichevole  è preferibile utilizzare il già citato rEFInd oppure l’applicazione efibootmgr oggetto del post.

Efibootmgr

Efibootmgr può creare e rimuovere le voci nel menu di avvio UEFI, modificare l’ordine delle voci nel menu e altro ancora.

In debian/ubuntu  efibootmgr si installa da terminale al solito con

# apt install efibootmgr

lanciato efibootmgr verranno visualizza i dati relativi all’ UEFI Boot Manager con il menu di Avvio UEFI, la voce di avvio corrente del sistema, l’ordine di visualizzazione,…

# efibootmgr 
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0000,0001,0006,0004,0005,0002
Boot0000* ubuntu
Boot0001* mx
Boot0002* UEFI: Built-in EFI Shell 
Boot0004* Hard Drive 
Boot0005* USB 
Boot0006* UEFI: Samsung Flash Drive 1100

Il menu di avvio è composto da 6 voci: Boot0000, Boot0001, …

BootCurrent: la prima linea evidenzia quella che è la voce predefinita del menu di avvio. In questo caso mx.

Timeout: il tempo di attesa del menu di avvio che risulta di default inpostato a 0 infatti in genere non si riesce a vedere il menu di avvio.

BootOrder: la successione che verra seguita qualora il precedente menu entry non venga caricato / fallisca il caricamento.
Nell’esempio l’ordine seguito sarà: 0000,  0001, 0006, 0004, 0005, 0002

E ‘  possibile visualizzare le voci del menu EFI  in modo completo utilizzando l’opzione -v verbose

# efibootmgr 
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0000,0001,0006,0004,0005,0002
Boot0000* ubuntu	HD(2,GPT,defb0216-f5f6-4969-8345-ff816517a944,0xee800,0x1ad000)/File(\EFI\ubuntu\shimx64.efi)
Boot0001* mx	HD(1,GPT,9c281ac1-76a6-4b39-b2c2-ff65b0d0bef6,0x800,0x1ef000)/File(\EFI\mx\grubx64.efi)
Boot0002* UEFI: Built-in EFI Shell 	VenMedia(5023b95c-db26-429b-a648-bd47664c8012)AMBO
Boot0004* Hard Drive 	BBS(HD,,0x0)AMGOAMNO........m.S.e.a.g.a.t.e. .S.T.9.5.0.0.5.6.2.0.A.S....................A.........................>..Gd-.;.A..MQ..L. . . . . . . . . . . . .Y.5.1.X.D.C.C.9......AMBO
Boot0005* USB 	BBS(USB,,0x0)AMGOAMNO........s.S.a.m.s.u.n.g. .F.l.a.s.h. .D.r.i.v.e. .1.1.0.0....................A.......................F..Gd-.;.A..MQ..L.S.a.m.s.u.n.g. .F.l.a.s.h. .D.r.i.v.e. .1.1.0.0......AMBO
Boot0006* UEFI: Samsung Flash Drive 1100	PciRoot(0x0)/Pci(0x10,0x0)/USB(2,0)/HD(1,MBR,0x23,0x800,0x4e3e800)AMBO

In questo caso è possibile individuare anche le informazioni relative al percorso del bootloader. Ad esempio la varibile mx, ( Boot0001) relativa alla derivativa debian, mx linux, evidenzia che il booloader è di fatto GRUB. Il percorso con la configurazione efi ( grubx64.efi), menu entry ( mx) per il bootloader grub nella partizioni EFI system partition risulta essere (\EFI\mx\grubx64.efi ). La partizione è localizzata nel disco 1 che è partizionato GPT.

Cambiare il Timeout

Se si desidera visualizzare il menu per poter scegliere sempre dal bootmanager EFI si può portare il timeout a 5 srecondi con

efibootmgr -t 5

Cambiare l’ordine di avvio

Per cambiare l’ordine di avvio si utilizza l’opzione -o

efibootmgr -o 0001,0000,0006,0004,0005,0002

è possibile cambiare l’ordine solo per il primo successivo avvio.
In questo caso si usa l’opzione -n

efibootmgr -n 0002

Creare una voce nel menu di boot EFI

Per aggiungere un entry al menu EFI si usa l’opzione -c

efibootmgr -c -d /dev/sdb -p 2 -L “Debian” -l “\EFI\debian\grubx64.efi”

efibootmgr -c -d /dev/sdb -p 1 -L "multibootusb" -l "\EFI\boot\bootx64.cfg"
  • --create or -c crea una nuova voce;
  • --part or -p seguito dal numero di partizione della Partizione di Sistema EFI;
  • --disk or -d seguito dal disco nel quale la Partizione di Sistema EFI è ospitata;
  • --label or -L seguito dall’etichetta da utilizzare come voce nel menu di avvio;
  • --loader or -l seguito dal percorso dell’immagine EFI da avviare \EFI\boot\bootx64.cfg.

Cancellare una voce dal menu EFI

per cancellare un voce di menu di utilizza l’opzione -B

efibootmgr -b 4 -B

–bootnum (-b) seleziona la voce del menu da cancella
–delete-bootnum (-B) effettua la cancellazione

Se la voce cancellata era la prima fare attenzione e cambiare l’ordine di avvio dei menu.

UEFI Bootloader di fallback

Nelle specifiche UEFI 2.3, section 3.4.1.2, si precisa che in assenza di boot variabili configurate è permesso al firmware trattare la EFI system partition come media rimovibile – il percorso di boot sarà EFI/boot/bootx64.efi.

Quindi va considerata l’opportunità dell’installazione di un bootloader di fallback. Di seguito esempi di bootloader di fallback per debian e window

Nel caso di Debian Linux boot entry in NVRAM debian percorso di Boot EFI nella partizione EFI system partition:

EFI/debian/grubx64.efi

il percorso del bootloader di fallback risulta essere

EFI/boot/grubx64.efi

ad esempio nel caso di window variabile di boot configurata: microsoft
oltre a percorso di boot

EFI/microsoft 

potremmo avere il percorso di fallback

EFI/boot/bootx64.efi  

 

Opzioni efibootmgr:

-a | –active
Sets bootnum active
-A | –inactive
Sets bootnum inactive
-b | –bootnum XXXX
Modify BootXXXX (hex)
-B | –delete-bootnum
Delete bootnum (hex)
-c | –create
Create new variable bootnum and add to bootorder
-d | –disk DISK
The disk containing the loader (defaults to /dev/sda)
-e | –edd 1|3|-1
Force EDD 1.0 or 3.0 creation variables, or guess.
-E | –device NUM
EDD 1.0 device number (defaults to 0x80)
-g | –gpt
Force disk with invalid PMBR to be treated as GPT
-H | –acpi_hid XXXX
set the ACPI HID (used with -i)
-i | –iface NAME
create a netboot entry for the named interface
-l | –loader NAME
Specify a loader (defaults to \\elilo.efi)
-L | –label LABEL
Boot manager display label (defaults to “Linux”)
-n | –bootnext XXXX
Set BootNext to XXXX (hex)
-N | –delete-bootnext
Delete BootNext
-o | –bootorder XXXX,YYYY,ZZZZ
Explicitly set BootOrder (hex)
-O | –delete-bootorder
Delete BootOrder
-p | –part PART
Partition number containing the bootloader (defaults to 1)
-q | –quiet
Quiet mode – supresses output.
–test filename
Don’t write to NVRAM, write to filename.
-t | –timeout seconds
Boot Manager timeout, in seconds.
-T | –delete-timeout
Delete Timeout variable.
-u | –unicode | –UCS-2
pass extra command line arguments as UCS-2 (default is ASCII)
-U | –acpi_uid XXXX
set the ACPI UID (used with -i)
-v | –verbose
Verbose mode – prints additional information
-V | –version
Just print version string and exit.
-w | –write-signature
write unique signature to the MBR if needed
-@ | –append-binary-args
append extra variable args from file (use – to read from stdin). Data in file is appended as command line arguments to the boot loader command, with no modification to the data, so you can pass any binary or text data necessary.

Risorse:

Linux password di root dimenticata – Debian 9.xx

Può capitare di dimenticare la password di root oppure di modificare i permessi di modo che non risulta più possibile accedere al livello di amministrazione con il comando  sudo  ( per poter lanciare i comandi via sudo è necessario che l’utente appartenza al gruppo sudo ).  In questo caso conviene sfruttare il boot loader grub per accedere al terminale senza login.

Accesso al terminale senza password

Per ripristinare la password di root conviene appoggiarsi a grub modificando le direttive di accesso a livello della riga  che lancia il Kernel così da accedere in modo diretto al terminale con i privilegi di root senza la necessità di effettuare il login.
Per effettuare l’accesso diretto aggiungere la direttiva  init=/bin/bash al termine della riga

Per entrare in modalità edit di grub premere il tasto e  come indicato in basso nella schermata di grub

La schermata in modalità edit di grub 2.02 con le istruzioni per avvio di Debian 9.xx.

modificare la riga per l’avvio del Kernel

la riga per l’avvio del kernel che inizia con il comando linux va modificata dopo i parametri ro quiet  va appunto aggiunto init=/bin/bash

Adesso è possibile avviare debian come indicato in basso nella schermata premere F10 o Ctrl-X.

Ua volta che si è in modalità terminale come root si monta il file system in modalità rw

root@(none):/mount -o remount,rw /

A questo punto si ha il controllo del sistema e come utente root sarà possibile eseguire tutti i comandi necessari.

Ad esempio ripristinare la password con

passwd

assegnare i diritti di root ad un utente inserendolo nel gruppo sudo

usermod -aG sudo maurizio

riavviare con

root@(none):/reboot -f

Alcuni utili comandi

Prima di ripristinare la password dimenticata  in Debian 9.xx alcuni utili comandi:

Controllare i gruppi a cui l’utente appartiene con

id

Se l’utente non appartiene al gruppo sudo non avrà i privilegi di root e non potrà avviare comandi che li richiedono espressamente come mount, …

per controllare gli users di un determinato gruppo ( ad esempio gruppo sudo )  si può utilizzare

getent group sudo

il file /etc/sudoers elenca i privilegi per il lancio dei.

Ad esempio in Ubuntu è presente la linea

%sudo   ALL=(ALL:ALL)  ALL

che sta indicare che il gruppo sudo ha gli stessi privilegi dell’utente root

root    ALL=(ALL:ALL)  ALL

Risorse:

Ubuntu 14.xx password dimenticata

Può capitare di dimenticare una password oppure di modificare i permessi di modo che non risulta più possibile accedere al livello di amministrazione con il comando  sudo  ( per poter lanciare i comandi via sudo è necessario che l’utente appartenza al gruppo sudo ). Prima di ripristinare la password dimenticata  in Ubuntu 14.xx alcuni utili comandi:

Controllare i gruppi a cui l’utente appartiene con

id

Se l’utente non appartiene al gruppo sudo non avrà i privilegi di root e non potrà avviare comandi che li richiedono espressamente come mount, …

per controllare gli users di un determinato gruppo ( ad esempio gruppo sudo )  si può utilizzare

getent group sudo

il file /etc/sudoers elenca i privilegi per il lancio dei.

Ad esempio in Ubuntu è presente la linea

%sudo   ALL=(ALL:ALL)  ALL

che sta indicare che il gruppo sudo ha gli stessi privilegi dell’utente root

root    ALL=(ALL:ALL)  ALL

Accesso al terminale senza password

Per ripristinare la password è necessario accedere al terminale in modo diretto senza necessità di login.
Perso il controllo del sistema in Ubuntu 14.xx una modalità efficace è data dall’

avvio del kenel di Ubuntu utilizzando il parametro

init=/bin/bash

ubuntu 14.04 grub2-start
la schermata in modalità edit di grub 2.02 con le istruzioni per avvio di Ubuntu 14.04 .
Per entrare in modalità edit come indicato in basso nella schermata di grub digitare e
la riga per l’avvio del kernel che inizia con il comando linux va modificata dopo il parametro ro va appunto aggiunto init=/bin/bash

init=bin/bash

init=bin/bash

per avviare come indicato in basso nella schermata premere F10 o Ctrl-X.

Ua volta che si è in modalità terminale come root si monta il file system in modalità rw

root@(none):/mount -o remount,rw /

A questo punto si ha il controllo del sistema e come utente root sarà possibile eseguire tutti i comandi necessari.

Ad esempio ripristinare la password con

passwd

assegnare i diritti di root ad un utente inserendolo nel gruppo sudo

usermod -aG sudo maurizio

riavviare con

root@(none):/reboot -f

 

Risorse:

 

 

Grub customizer ubuntu linux

Grub Customizer è un applicativo ad interfaccia grafica per configurare i bootloader Grub2 e Burg che non può essere trascurato. Se le modifiche ai menu nella versione di grub 0.97 erano sufficientemente agevoli,la versione 2 ha complicato un po’ il tutto. Quest’ultima versione infatti pur essendo decisamente efficace, utilizza stringhe di comando molto più articolate e se non viene utilizzata frequentemente rende gli interventi di modifica alle voci del bootloader grub decisamente più ostiche. E da questo punto di vista grub customizer viene  decisamentein aiuto.

grub-customizer

grub-customizer

L’ultima versione,  grub-customizer 3.0, si installa a partire dal relativo ppa:danielrichter2007/grub-customizer   con

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer

grub customizer home e ppa:

Di seguito alcune schermata della amichevole interfaccia di grub-customizer:

I menu e le finestre per svolgere le azioni principali in grub customizer:

  •  modifica diretta delle voci di menu con agevole modifica dell’ordinamento.
  • Menu entry amichevole per le nuove voci di menu con la possibilità di esaminare e modificare anche lo script testuale.

grub-customizer finestre

grub-customizer finestre e menu

grub customizer entry editor source

grub customizer entry editor source

Risorse:

.

grub-probe: error: cannot find a device for / (is /dev mounted?).

Se nell’installare grub utilizzando  grub-install  si presenta un  errore del tipo

grub-probe: error: cannot find a device for / (is /dev mounted?).

Ciò significa che si lanciando il comando da una situazione di chroot non configurata in modo appropriato. In genere questo accade utilizzando ad esempio le distribuzioni  live.

Installare reinstallare grub legacy da distro live

Per installare grub  a partire da una distribuzione live  debian, ubuntu o derivate.  Avviare la live. Quindi montare il sistema e passare in chroot.

Ad esempio se si dispone di una installaizone della distro linux nella partizione  11 i comandi saranno i seguenti:

sudo mount -t auto /dev/sda11 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys

adesso lavorare grazie a chroot sul sistema operativo della partizione  11

sudo chroot /mnt

Per installare il boot manger grub attivare il prompt grub con:

 grub --no-curses 

quindi  con il comando root impostare la partizione con il boot grub e con il comando setup installare il boot manager

grub> root (hdx,y)

hdx =  (x) è il drive ( 0 perl primo disco )
y la partizione (la prima partizione sarà 0 non 1)

Istallare grub con il comando setup

setup (hdx) oppure setup (hd0,0)

uscire dal prompt grub con

grub> quit

per generare aggiornare il file menu.lst contenete il menu di grub lanciare:

update-grub

per ricercare le partizioni raggiungibili conrrettamente con il boot grub si può utilizzare il comando find

grub> find /boot/grub/stage1

Installare Reinstallare Grub 2 da live

Un approccio più radicale  anche se agevole  è il ripristono del boot loader.  Procurarsi un live di ubuntu ( di fatto il disco di installazione) .  Quindi alla schermata di installazione passare ad una console con [CTRL-ALT-F2]   e digitare seguenti comandi:

per determinare la partizione in cui è installato ubuntu  ( in genere è quella marcata con l’asterisco )

sudo fdisk  -l

nel mio caso /dev/sda3

montare la patizione in cui risiede il sistema  in /mnt con

sudo mount -t auto /dev/sda3  /mnt

montare il resto dei dispositivi con

sudo mount --bind  /dev  /mnt/dev
sudo mount --bind  /proc  /mnt/proc
sudo mount --bind  /sys  /mnt/sys

per modificare il sistema montato in /mnt effettuare un chroot

 sudo chroot /mnt

qualora sia presente un partizione di  /boot separata sarà necessario il mount anche di questa.
Se /boot si trova in /dev/sda2 digiteremo:

 sudo mount /dev/sda2 /boot

per installare grub2 nel master boot sector MBR digitare

sudo grub-install  /dev/sda
sudo update-grub2

smontare le partizioni e riavviare

sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt
sudo reboot

in caso di errori è possibile riprovare con

grub-install --recheck /dev/sda

per installare in una partizione del sistema ( scelta sconsigliata )
sudo grub-install /dev/sda3

Risorse:

grub 2 recovery – grub rescue >

Qualora al riavvio di ubuntu versioni 10.04 iin poi  appaia il famigerato

grub rescue  >

abbiamo le seguenti strade:

1) riavviare dalla shell 

2) reistallare il grub2 loader con una live

3) utilizzare supergrub

Riavviare dalla shell

In genere quando compare la shell significa che GRUB per qualche ragione non riesce a caricare il modulo ‘normal’ questo potrebbe essere dovuto ad un errore nel prefix o nel path.

Proviamo a fissare questi problemi:

Determiniamo il prefix corrent

set

tra le righe che appaiono due dovrebbero essere del tipo che segue

prefix = (hd0,msdos1)/boot/grub
root=hd0,msdos1

e indicano dove GRUB va a ricercare le informazioni. Nel nostro caso probabilmente c’è un errore.

GRUB controlliamo quali device sono disponili

ls

e cerchiamo di ricordare dove è posizionata la directory di boot che ospita grub nel mio caso /dev/sda3

impostiamo il valore corretto

set prefix = (hd0,msdos3)/boot/grub
set root=(hd0,msdos3)

quindi

insmod  normal

Il caricamento di un modulo per espandere  le capacità della console può essere ottenuto anche con.
insmod (hdx,y)/boot/grub/linux.mod

linux /vmlinuz ro single
initrd /initrd.img
boot

Considerato che il grub rescue potrebbe  essere conseguenza di una modifica nella tabella partizioni. una volta riavviato il sistema meglio procedere con un update-grub da terminale .

update-grub

Per reinstallare grub 2 nel disco /dev/sda

grub-install  /dev/sda

voci che compaiono nel file grub.cnf e che consentono l’avvio di una distribuzione

menuentry ‘Ubuntu, with Linux 2.6.38-8-generic (recovery mode)’ –class ubuntu –class gnu-linux –class gnu –class os {
recordfail
set gfxpayload=$linux_gfx_mode
insmod part_msdos
insmod ext2
set root=’(/dev/sda,msdos2)’
search –no-floppy –fs-uuid –set=root 2ef15820-edd5-49e2-a7f6-a9337be395f6
echo	‘Loading Linux 2.6.38-8-generic …’
linux	/boot/vmlinuz-2.6.38-8-generic root=UUID=2ef15820-edd5-49e2-a7f6-a9337be395f6 ro single
echo	‘Loading initial ramdisk …’
initrd	/boot/initrd.img-2.6.38-8-generic
}

più sinteticamente senza UUID  e con il caricamento del kernel con sim link

set root='(/dev/sda,msdos2)'
linux /vmlinuz root=/dev/sda2
initrd /initrd.img

per avviare altro S.O. o altro grub

insmod ext2
set root='(hd0,5)'
chainloader +1

chainloader potrebbe richiedere anche il percorso del tipo 
(hd1,1)+1

GNU GRUB Manual 1.99
http://www.gnu.org/software/grub/manual/html_node/GRUB-only-offers-a-rescue-shell.html

Reinstallare Grub 2

Un approccio più radicale  anche se agevole  è il ripristono del boot loader.  Procurarsi un live di ubuntu ( di fatto il disco di installazione) .  Quindi alla schermata di installazione passare ad una console con [CTRL-ALT-F2]   e digitare seguenti comandi:

per determinare la partizione in cui è installato ubuntu  ( in genere è quella marcata con l’asterisco )

sudo fdisk  -l

nel mio caso /dev/sda3

montare la patizione in cui risiede il sistema  in /mnt con

sudo mount -t auto /dev/sda3  /mnt

montare il resto dei dispositivi con

sudo mount --bind  /dev  /mnt/dev
sudo mount --bind  /proc  /mnt/proc
sudo mount --bind  /sys  /mnt/sys

per modificare il sistema montato in /mnt effettuare un chroot

 sudo chroot /mnt

qualora sia presente un partizione di  /boot separata sarà necessario il mount anche di questa.
Se /boot si trova in /dev/sda2 digiteremo:

 sudo mount /dev/sda2 /boot

per installare grub2 nel master boot sector MBR digitare

sudo grub-install  /dev/sda
sudo update-grub2

smontare le partizioni e riavviare

sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt
sudo reboot

in caso di errori è possibile riprovare con

grub-install --recheck /dev/sda

per installare in una partizione del sistema ( scelta sconsigliata )
sudo grub-install /dev/sda3

Risorse: