Bewegen Sie Grub vollständig zur neuen Partition

9

Wie können Sie Grub vollständig auf eine neue Partition verschieben? Als ich Ubuntu (Kubuntu) installiert habe, habe ich nur 256 MiB für die /bootPartition zugewiesen, was nicht ausreicht. Jedes Mal, wenn ein neuer Kernel installiert wird, schlägt die Installation teilweise fehl, da nicht genügend Speicherplatz vorhanden ist und ich manuell eingreifen muss. Ich versuche also, grub von meiner alten Boot-Partition /dev/sdb5auf meine neue 512-MiB-Partition zu verschieben /dev/sdb7.

Ich habe bearbeitet /etc/fstab, um die neue Boot-Partition zu verwenden.

# /boot was on /dev/sdb5 during installation
#UUID=f1fcbfbe-7943-4e48-9796-8d0c42076c0b      /boot   ext4    defaults        0       2
# /boot is now on /dev/sdb7
UUID=70d8be3a-6b6c-4722-ab0d-e79d93e6dd1c       /boot   ext4    defaults        0       2

Ich habe /boot/efi( /dev/sdb2) und /boot( /dev/sdb5) abmontiert . Und dann montiert /dev/sdb7als /boot, wieder montiert /boot/efiund wieder montiert /dev/sdb5als /mnt/boot.

Ich rannte:

$ sudo grub-install /dev/sdb7
Installing for x86_64-efi platform.
Installation finished. No error reported.

Und:

$ sudo update-grub
Generating grub configuration file ...
Found Windows Boot Manager on /dev/sdb2@/EFI/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for EFI firmware configuration
done

Das Linux-Image fehlt jedoch in /boot:

$ ls -1 /boot
efi
grub
lost+found

Während der alte /boothat:

$ ls -1 /mnt/boot/
abi-4.15.0-32-generic
abi-4.15.0-33-generic
config-4.15.0-32-generic
config-4.15.0-33-generic
efi
grub
initrd.img-4.15.0-33-generic
lost+found
memtest86+.bin
memtest86+.elf
memtest86+_multiboot.bin
retpoline-4.15.0-32-generic
retpoline-4.15.0-33-generic
System.map-4.15.0-32-generic
System.map-4.15.0-33-generic
vmlinuz-4.15.0-33-generic

Mir muss ein Schritt fehlen. Was ist der richtige Prozess, um dies zu tun? Fehlt mir ein Befehl zum Neuerstellen des Linux-Images?

HINWEIS: Der Grund, warum ich /booteine separate Partition sein möchte , /ist, dass /es sich um eine LUKS-verschlüsselte ext4-Partition handelt.


Ausgabe von sudo fdisk -l:

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: CFE364AE-6B98-4A85-BE10-7E8A8833426F

Device         Start       End   Sectors   Size Type
/dev/sda1       2048 976762879 976760832 465.8G Microsoft basic data
/dev/sda2  976762880 977287167    524288   256M Linux filesystem


Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 1AB601E6-CACA-4A3F-828A-A334CC3564DF

Device          Start        End    Sectors   Size Type
/dev/sdb1        2048     923647     921600   450M Windows recovery environment
/dev/sdb2      923648    1128447     204800   100M EFI System
/dev/sdb3     1128448    1161215      32768    16M Microsoft reserved
/dev/sdb4     1161216 1534093311 1532932096   731G Microsoft basic data
/dev/sdb5  1534093312 1534617599     524288   256M Linux filesystem
/dev/sdb6  1534617600 1952475135  417857536 199.3G Linux filesystem
/dev/sdb7  1952475136 1953523711    1048576   512M Linux filesystem




Disk /dev/mapper/sdb6_crypt: 199.3 GiB, 213940961280 bytes, 417853440 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Ausgabe von lsblk -lf:

NAME       FSTYPE      LABEL          UUID                                 MOUNTPOINT
sda                                                                        
sda1       ntfs        Extra Disk     54186D8E186D7042                     
sda2       ext4                       fae6b821-6644-4883-a2f1-da5c42485431 
sdb                                                                        
sdb1       ntfs        Recovery       44F21BC7F21BBC5C                     
sdb2       vfat                       941C-5A1E                            /boot/efi
sdb3                                                                       
sdb4       ntfs                       6C32289F3228706E                     
sdb5       ext4        Linux Boot Old f1fcbfbe-7943-4e48-9796-8d0c42076c0b /boot
sdb6       crypto_LUKS                b2d73541-783b-4336-a62c-1e11d0cc2b47 
sdb7       ext4        Linux Boot     70d8be3a-6b6c-4722-ab0d-e79d93e6dd1c 
sr0                                                                        
sdb6_crypt ext4        Linux Root     1e8b2b29-1857-4b38-84ee-d3c386f5085e /
Alle Arbeiter sind wesentlich
quelle

Antworten:

6

Ich könnte es erreichen, indem ich es auf folgende Weise mache.

Unten sehen Sie die aktuelle Befehlszeilenansicht, als ich die /bootPartition von sda7 auf sda9 geändert habe

kubuntu@kubuntu:~$ sudo blkid
/dev/sda2: UUID="BCB3-3DA0" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="e5db3aba-af70-4112-8858-1aff620887a0"
/dev/sda3: UUID="F2B6E7A8B6E76C13" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="02c16852-6715-42db-ac16-c9007d86934a"
/dev/sda4: UUID="2d2846e3-4382-4dec-bad3-ec27c9f3311d" TYPE="ext4" PARTUUID="67dd28fb-4a80-4deb-aa25-8f1b93f1a4ba"
/dev/sda5: LABEL="SAS DI" UUID="605EEA015EE9D038" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="82da16ec-8c57-41b8-9f8b-e2d2bdc3b183"
/dev/sda6: LABEL="MADURI" UUID="C4F8CC63F8CC54F8" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="6c75ef1c-376c-4ede-9072-3a888b0bf94d"
/dev/sda7: UUID="4eab37c8-7d22-4580-b53e-47e8768318c8" TYPE="ext4" PARTUUID="8d49090a-7495-4f10-a83d-3e4f4abca525"
/dev/sda8: UUID="e569a993-a701-4b1f-acc1-ba0e862ba0de" TYPE="ext4" PARTLABEL="Kubuntu 18.04" PARTUUID="af772c38-570b-4e9b-a5ce-ca26b28bec1a"
/dev/sda9: UUID="360b1c4c-b6f8-49fd-93e2-c9c086e95e4c" TYPE="ext4" PARTUUID="3327a153-0c8a-46c1-a23d-ef4774564875"
/dev/loop0: TYPE="squashfs"
/dev/sda1: PARTLABEL="Microsoft reserved partition" PARTUUID="c2ca0fe9-67db-468a-bf0f-8d9ce78cf129"
/dev/sdb1: UUID="2018-07-25-03-28-48-00" LABEL="Kubuntu 18.04.1 LTS amd64" TYPE="iso9660" PTUUID="418c5dc0" PTTYPE="dos" PARTUUID="418c5dc0-01"
/dev/sdb2: SEC_TYPE="msdos" UUID="0D5F-1DB6" TYPE="vfat" PARTUUID="418c5dc0-02"
kubuntu@kubuntu:~$ sudo mount /dev/sda8 /mnt
kubuntu@kubuntu:~$ sudo mount /dev/sda9 /mnt/boot
kubuntu@kubuntu:~$ sudo chroot /mnt
root@kubuntu:/# sudo nano /etc/fstab
sudo: unable to resolve host kubuntu: Resource temporarily unavailable
root@kubuntu:/# exit
exit
kubuntu@kubuntu:~$ sudo mkdir /mnt/home/OBP
kubuntu@kubuntu:~$ sudo mount /dev/sda7 /mnt/home/OBP
kubuntu@kubuntu:~$ sudo cp -r /mnt/home/OBP/* /mnt/boot/
kubuntu@kubuntu:~$ sudo mount /dev/sda2 /mnt/boot/efi
kubuntu@kubuntu:~$ for i in /sys /proc /dev /run; do sudo mount --bind "$i" "/mnt$i"; done
kubuntu@kubuntu:~$ sudo chroot /mnt                                                                                                                                                             
root@kubuntu:/# update-grub                                                                                                                                                                     
Generating grub configuration file ...                                                                                                                                                          
Found linux image: /boot/vmlinuz-4.15.0-29-generic                                                                                                                                              
Found initrd image: /boot/initrd.img-4.15.0-29-generic                                                                                                                                          
grub-probe: error: cannot find a GRUB drive for /dev/sdb1.  Check your device.map.                                                                                                              
Found Windows Boot Manager on /dev/sda2@/EFI/Microsoft/Boot/bootmgfw.efi                                                                                                                        
Found Ubuntu 18.10 (18.10) on /dev/sda4                                                                                                                                                         
Adding boot menu entry for EFI firmware configuration                                                                                                                                           
done                                                                                                                                                                                            
root@kubuntu:/# grub-install /dev/sda                                                                                                                                                           
Installing for x86_64-efi platform.                                                                                                                                                             
Installation finished. No error reported.                                                                                                                                                       
root@kubuntu:/# update-grub                                                                                                                                                                     
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-29-generic
Found initrd image: /boot/initrd.img-4.15.0-29-generic
grub-probe: error: cannot find a GRUB drive for /dev/sdb1.  Check your device.map.
Found Windows Boot Manager on /dev/sda2@/EFI/Microsoft/Boot/bootmgfw.efi
Found Ubuntu 18.10 (18.10) on /dev/sda4
Adding boot menu entry for EFI firmware configuration
done
root@kubuntu:/# ls -1 /boot
abi-4.15.0-29-generic
config-4.15.0-29-generic
efi
grub
initrd.img-4.15.0-29-generic
lost+found
memtest86+.bin
memtest86+.elf
memtest86+_multiboot.bin
retpoline-4.15.0-29-generic
System.map-4.15.0-29-generic
vmlinuz-4.15.0-29-generic
root@kubuntu:/# lsblk -lf
NAME  FSTYPE   LABEL                     UUID                                 MOUNTPOINT
loop0 squashfs                                                                
sda                                                                           
sda1                                                                          
sda2  vfat                               BCB3-3DA0                            /boot/efi
sda3  ntfs                               F2B6E7A8B6E76C13                     
sda4  ext4                               2d2846e3-4382-4dec-bad3-ec27c9f3311d 
sda5  ntfs     SAS DI                    605EEA015EE9D038                     
sda6  ntfs     MADURI                    C4F8CC63F8CC54F8                     
sda7  ext4                               4eab37c8-7d22-4580-b53e-47e8768318c8 /home/OBP
sda8  ext4                               e569a993-a701-4b1f-acc1-ba0e862ba0de /
sda9  ext4                               360b1c4c-b6f8-49fd-93e2-c9c086e95e4c /boot
sdb   iso9660  Kubuntu 18.04.1 LTS amd64 2018-07-25-03-28-48-00               
sdb1  iso9660  Kubuntu 18.04.1 LTS amd64 2018-07-25-03-28-48-00               
sdb2  vfat     Kubuntu 18.04.1 LTS amd64 0D5F-1DB6                            
sr0                                                                           
root@kubuntu:/# exit
exit
kubuntu@kubuntu:~$ shutdown now

Wissenswertes, bevor Sie sich bei "Try Kubuntu" anmelden.

  1. Root-Partition; in meinem Fall ist es /dev/sda8.
  2. EFI-Partition; in meinem Fall ist es /dev/sda2.
  3. /bootalte Partition; in meinem Fall ist es /dev/sda7.
  4. Neue /bootPartition; in meinem Fall ist es /dev/sda9.
  5. Laufwerksbuchstabe der Festplatte; in meinem fall ist es sda.

Ich werde meine Boot-Partition von sda7 auf sda9 ändern

Geben Sie hier die Bildbeschreibung ein

Melden Sie sich mit Kubuntu 18.04 "Try Kubuntu" -Sitzung an.

Öffnen Sie die Konsole und führen Sie den Befehl aus

  1. sudo blkid und kopieren Sie die UUID der Partition, die neu sein wird / Boot-Partition, die sda9 ist

  2. sudo mount /dev/sda8 /mnt # Root-Partition mounten

  3. sudo mount /dev/sda9 /mnt/boot # Mounten einer neuen / Boot-Partition

  4. sudo chroot /mnt

  5. nano /etc/fstab # Öffnen Sie die fstab-Datei

Scrollen Sie mit den Pfeiltasten manuell zum UUID-Teil /bootder /etc/fstabDatei.

Fügen Sie die kopierte UUID (ab Schritt 1) ​​ein, indem Sie die UUID der alten Startpartition löschen.

So speichern Sie die Datei, drücken Sie Ctrl+ X, YundEnter

  1. exit # Chroot verlassen

Vor dem Mounten der /boot/efiPartition müssen wir die Daten in der alten Boot-Partition auf die neue Boot-Partition kopieren.

  1. sudo mkdir /mnt/home/OBP # Ordnererstellung zum Mounten der alten Boot-Partition
  2. sudo mount /dev/sda7 /mnt/home/OBP # Montage der alten Boot-Partition
  3. sudo cp -r /mnt/home/OBP/* /mnt/boot/
  4. sudo mount /dev/sda2 /mnt/boot/efi
  5. for i in /sys /proc /dev /run; do sudo mount --bind "$i" "/mnt$i"; done
  6. sudo chroot /mnt
  7. update-grub
  8. grub-install /dev/sda
  9. update-grub
  10. exit
  11. shutdown now

Starten Sie das System neu und Sie können jetzt die alte Boot-Partition löschen.

Geben Sie hier die Bildbeschreibung ein

PRATAP
quelle
Obwohl ich selbst geantwortet habe, mag ich die Details und Screenshots in Ihrer Antwort so +1.
WinEunuuchs2Unix
3

256 MB für /bootund 200 GB für/

Sie haben viel Speicherplatz, aber das /bootVerzeichnis ist "Speicherplatz herausgefordert". Ich würde vorschlagen , sich bewegende /bootvon sdb5zu /auf sdb6.

Ihr aktueller Plan, /bootauf eine neue Partition sdb7mit nur 512 MB zu wechseln, scheint begrenzt zu sein. Manchmal /bootkann es viele GB sein, wenn ich mehrere Kernel teste.

Wie bewege ich mich /bootzu/

Es gibt bereits eine Antwort hier :

Ja, es ist möglich. Auch ist es nicht einfach. Wenn Sie eine getrennte / boot-Partition und / oder / partition verschieben möchten, sollten Sie zunächst die fstab-Einträge ändern.

Wenn Sie die Dateien auf eine neue Partition verschieben, vergessen Sie nicht, sie cp -pbeim Kopieren zu verwenden, um die Berechtigungen beizubehalten. Passen Sie dann Ihre /etc/fstabneuen UUIDs der Partitionen an, die Sie verwenden werden. Sie können die UUID der Partition abrufen, indem Sie ausführen, blkid /dev/sdXnwobei X der Name des Laufwerks und n die Anzahl der Partitionen ist.

Sie können blkid auch verwenden, um Beschriftungen an Ihre Partitionen anzuhängen und dann über Beschriftungen zu mounten, was viel einfacher zu lesen ist man blkid, um mehr zu erfahren.

Nachdem Sie die Partitionen geändert und / etc / fstab angepasst haben, sollten Sie das update-grubSkript - verfügbar unter Debian / Ubuntu ausführen oder grub-mkconfig -o /boot/grub/grub.cfgeine neue Konfigurationsdatei generieren und dann grub auf der ersten Festplatte neu installieren, von der aus Sie bot.grub-install --recheck /dev/sdb

Vergessen Sie natürlich nicht, dass Sie beim Kopieren eine neue / oder / boot-Partition auf / mnt mounten und nach dem Kopieren aller Dateien diese als / und / boot chroot mounten und erst dann das Update des Grubs ausführen, wenn Sie möchten, dass die Dinge korrekt ausgeführt werden .

WinEunuuchs2Unix
quelle
Ich habe vergessen zu erwähnen, dass /bootes sich bei einer separaten Partition /um eine LUKS-verschlüsselte ext4-Partition handelt. 512 MiB für ist /bootwahrscheinlich zu klein. Ich werde es auf 1 GiB erhöhen. Ich teste keine neuen Kernel, außer wenn apt-get sie aktualisiert, und ich überprüfe, ob ich erfolgreich booten kann.
Alle Arbeiter sind wesentlich
@cpburnz Verstanden. Wenn ich jedoch eine separate /bootPartition haben müsste, würde ich vorsichtig sein und beispielsweise 1 oder 2 GB verwenden, was nur 0,5% oder 1% Ihres 200 GB Speicherplatzes entspricht. Denken Sie daran, wenn Sie vergessen zu laufen sudo apt autoremove, könnten Sie ein paar Kernel haben. Dann hätte ich einen Cron-Neustart-Job, der mir eine E-Mail schickte, wenn ich mehr als 3 Kernel installiert hätte. Vielen Dank, dass Sie die Verwendung der Verschlüsselung erklärt haben, da ich diesen Weg noch nie gegangen bin.
WinEunuuchs2Unix
1

Ich denke, Sie müssen nur alle Kerneldateien aus dem alten Verzeichnis in ein neues verschieben / kopieren und grub aktualisieren. Versuchen:sudo cp /mnt/boot/* /boot && sudo update-grub

metallisch
quelle