GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare GRUB su una nuova unità?

Non sono un esperto di grub2 (mi dispiace) ma prova ad aggiungere --skip-fs-probe alla tua linea grub-install, ho scoperto che questo impedisce la creazione di /boot/grub/device.map che può causare l'avvio a un prompt di grub. Penso che senza questo parametro grub-install, invece di fare quello che gli dici, pensi che sia più intelligente di te e potrebbe fare qualcosa di diverso.

Un'altra cosa è assicurarsi di utilizzare l'installazione di grub corretta (ovvero per grub2 e non per grub originale). Questo non è un problema se sei dentro Centos ma con SystemRecoveryCD sono disponibili entrambe le versioni e quindi devi usare grub2-install . Ho imparato a mie spese...

E come ha sottolineato @wurtel (complimenti), dovresti specificare un'unità e non una partizione. Grub2 si installa nel settore 0 dell'intero disco, e questo 'stub' è ciò che viene eseguito all'avvio, ma ha bisogno di sapere dove si trova sul disco dovrebbe installare i file per la fase successiva dell'avvio - questo è ciò che il --root-directory parametro è per. (Penso.)

Leggendo man grub-install e cercando su Google vedo che --root-directory non è realmente pensato per essere utilizzato per grub2 versioni 1.99++, sebbene funzioni nella mia esperienza. Dovresti usare --boot-directory e fai riferimento alla directory di avvio effettiva, quindi questo ti darebbe:

grub-install /dev/sdb --skip-fs-probe --boot-directory=/media/new_drive/boot

Ecco come ho spostato un'installazione Debian composta da una partizione di avvio /boot e una partizione root / su una nuova unità e reso avviabile utilizzando GNU GRUB:

Clona partizioni

  • Utilizzando il live CD di GParted, crea la partizione di avvio e root sulla nuova unità.
  • Utilizzando una console di root in GParted, monta la vecchia partizione di avvio (diciamo che è /dev/sda1 ) e la nuova partizione (/dev/sdb1 ):mount /dev/sda1 /mnt/oldBoot && mount /dev/sdb1 /mnt/newBoot
  • Copia i dati dalla vecchia partizione di avvio a quella nuova:cp -afv /mnt/oldBoot /mnt/newBoot . Spiegazione di cp -afv :
    • a sta per "archivio" che significa:
      • non dereferenziare i collegamenti
      • copia in modo ricorsivo (come -R )
      • preservare tutti gli attributi (timestamp, proprietario, autorizzazione)
    • f :force, se non è possibile aprire un file di destinazione esistente, rimuoverlo e riprovare
    • v :prolisso, spiega cosa si sta facendo
  • Questo genererà un output sulla tua console che mostra quale file è attualmente copiato e se cp fa progressi
  • Monta e copia i file dalla tua vecchia partizione root a quella nuova:
    • Per sicurezza:umount /mnt/oldBoot && umount /mnt/newBoot
    • Monta la vecchia e la nuova partizione root (supponendo che sia /dev/sda2 e /dev/sdb2 ):mount /dev/sda2 /mnt/oldRoot && mount /dev/sdb2 /mnt/newRoot
    • Copia i dati della vecchia partizione root nella nuova partizione root:cp -afv /mnt/oldRoot /mnt/newRoot
  • Modifica la tabella del filesystem che definisce quali partizioni sono montate all'avvio (per questo userò Vim):
    • vi /etc/fstab

    • Noterai che le tue vecchie partizioni sono referenziate qui. Usa invece gli UUID delle nuove partizioni

    • Puoi inserire temporaneamente tutti gli UUID in fstab per copiare e incollare più facilmente con :r !blkid

    • Usa gli UUID delle tue nuove partizioni per modificare le voci in fstab. Dovrebbero assomigliare a questo:

       `# <file system> <mount point> <type> <options> <dump> <pass>
       # Root partition
       UUID=76fd1ffd-fb96-4ab4-be1a-42f8e9223983 / ext4 errors=remount-ro 0 1
       # Boot partition
       UUID=e560e29e-8752-4b83-b1ee-4b86c0009f0b /boot ext2 defaults 0 2`
      
      • Rimuovi l'output di blkid da fstab che hai inserito in precedenza con :r !blkid

Installa GRUB

  • Monta i filesystem virtuali del live CD GParted:

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

  • Rendi disponibili le utilità GRUB del live CD GParted alla partizione root:mount --bind /usr/ /mnt/newRoot/usr

  • Monta la partizione di boot sulla partizione root poiché GRUB memorizzerà la sua configurazione in /boot :mount /dev/sdb1 /mnt/newRoot/boot

  • Usa chroot /mnt/newRoot per rendere la nuova partizione root temporaneamente la root del filesystem

  • Crea un file di configurazione GRUB in /boot/grub/grub.cfg utilizzando update-grub2

  • Installa GRUB sulla nuova unità:grub-install /dev/sdb . Non devi specificare un numero di partizione qui

  • Ritorna al filesystem del live CD di GParted:exit

  • Smonta partizioni:umount /mnt/newRoot/*

  • Spegni la macchina

  • Se hai più unità collegate, assicurati che l'unità più recente sia la prima nell'ordine di avvio

  • Avvia la macchina

Queste istruzioni sono ispirate a quelle di oaktreepeak.com.

In alternativa, puoi provare Clonezilla per ottenere lo stesso risultato.


Linux
  1. Come installare un disco rigido esterno?

  2. Come installare OpenVZ su Debian 9

  3. Come posso creare nuove partizioni e formattare il mio disco rigido in parted?

  4. Come montare una nuova partizione su Red Hat Linux

  5. Come montare un filesystem in un ambiente di sola lettura?

Come installare Devuan(I)

Come installare Devuan(II)

Come installare Google Drive su Ubuntu 20.04

Come installare il sistema operativo Haiku

Come installare il server Ubuntu 20.04

Come montare automaticamente la partizione di scambio?