Grub-Installation: Das Einbetten in Bios / GPT ist nicht möglich

7

Ich habe seit einigen Tagen Probleme, ein verschlüsseltes NAS einzurichten. Der Grundplan besteht darin, btrfs auf lvm auf luks auf raid1 mit lvmcache im Rückschreibemodus für die Root-Partition zu verwenden, um den Festplattenzugriff zu verringern.

TL; DR:

Nach dem Einrichten der Partitionen und Dateisysteme kann GRUBnicht installiert werden mit:

grub-install: warning: Attempting to install GRUB to a disk with multiple partition labels.  This is not supported yet..
grub-install: error: embedding is not possible, but this is required for RAID and LVM install.

Partitionen

Nach dem Arch Wiki richte ich zunächst die Partitionen ein:

gdisk Ausgabe für / dev / sda und / dev / sdb:

Disk /dev/sda: 976773168 sectors, 465.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 9EFA6587-E34F-4AC1-8B56-5262480A6C6A
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 976773134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            4095   1024.0 KiB  EF02  BIOS boot partition
   2            4096       976773134   465.8 GiB   8300  Linux filesystem

Beachten Sie die BIOS-Startpartition , die GRUBbei der Installation im BIOS/GPTModus anscheinend erforderlich ist .

MDADM

Da ich zwei Festplatten habe, möchte ich sie in einem RAID1Array haben:

mdadm --create --level=1 --raid-devices=2 /dev/md0 /dev/sda2 /dev/sdb2

root@archiso ~ # mdadm --detail --scan
ARRAY /dev/md0 metadata=1.2 name=archiso:0 UUID=bdfc3fea:f4a0ee6d:6ac08012:59ea384b

root@archiso ~ # cat /proc/mdstat     
Personalities : [raid1] 
md0 : active raid1 sdb2[1] sda2[0]
      488253440 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  2.0% (9832384/488253440) finish=96.6min speed=82460K/sec
      bitmap: 4/4 pages [16KB], 65536KB chunk

unused devices: <none>

LUKS

Als nächstes richte ich ein LUKSVolume über RAID:

root@archiso ~ # cryptsetup luksFormat /dev/md0 

WARNING!
========
This will overwrite data on /dev/md0 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase: 
Verify passphrase:


root@archiso ~ # cryptsetup luksOpen /dev/md0 md0-crypt
Enter passphrase for /dev/md0:

LVM

BtrfsSnapshots könnten anstelle von verwendet werden LVM, aber zum Zeitpunkt des Schreibens gibt es keine Möglichkeit, ein SSD-Caching-Gerät hinzuzufügen Btrfs. Also habe ich mich entschieden, LVMdie SSD lvmcachespäter zu verwenden und hinzuzufügen :

(Erstellen der Volume-Gruppe in einem Schritt :)

root@archiso ~ # vgcreate vg0 /dev/mapper/md0-crypt 
  Physical volume "/dev/mapper/md0-crypt" successfully created
  Volume group "vg0" successfully created

root@archiso ~ # lvcreate -L 100M -C y vg0 -n boot
  Logical volume "boot" created.
root@archiso ~ # lvcreate -L 20G vg0 -n root
  Logical volume "root" created.
root@archiso ~ # lvcreate -L 10G vg0 -n var
  Logical volume "var" created.
root@archiso ~ # lvcreate -L 6G -C y vg0 -n swap
  Logical volume "swap" created.
root@archiso ~ # lvcreate -l +100%FREE vg0 -n home
  Logical volume "home" created

Daraus resultiert folgendes Layout:

root@archiso ~ # lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  boot vg0  -wc-a----- 100.00m                                                    
  home vg0  -wi-a----- 429.53g                                                    
  root vg0  -wi-a-----  20.00g                                                
  swap vg0  -wc-a-----   6.00g                                                    
  var  vg0  -wi-a-----  10.00g 

Btrfs / Dateisysteme

Dateisysteme erstellen:

root@archiso ~ # mkfs.ext4 /dev/vg0/boot
root@archiso ~ # mkfs.btrfs /dev/vg0/home
root@archiso ~ # mkfs.btrfs /dev/vg0/root
root@archiso ~ # mkfs.btrfs /dev/vg0/var

( ext4wurde für den Start ausgewählt, weil btrfssich über die geringe Partitionsgröße beschwert.)

Mounten der Dateisysteme:

root@archiso ~ # swapon /dev/vg0/swap
root@archiso ~ # mount /dev/vg0/root /mnt/arch -o compress=lzo
root@archiso ~ # mount /dev/vg0/home /mnt/arch/home -o compress=lzo
root@archiso ~ # mount /dev/vg0/var /mnt/arch/var -o compress=lzo
root@archiso ~ # mount /dev/vg0/boot /mnt/arch/boot

Arch installieren

Eigentlich kopiere ich das System einfach von einer vorherigen Sicherung:

root@archiso ~ # rsync -Pa /mnt/bkp/sda/* /mnt/arch

( Kaffeepause )

Einrichten von mdadm.conf und fstab

root@archiso ~ # genfstab -U /mnt/arch > /mnt/arch/etc/fstab
root@archiso ~ # cat /mnt/arch/etc/fstab 
# /dev/mapper/vg0-root
UUID=62ebf0c9-bb37-4b4e-87dd-eb8a4ace6a69       /               btrfs           rw,relatime,compress=lzo,space_cache 0 0

# /dev/mapper/vg0-home
UUID=53113e11-b663-452f-b4da-1443e470b065       /home           btrfs           rw,relatime,compress=lzo,space_cache 0 0

# /dev/mapper/vg0-var
UUID=869ffe10-7a1c-4254-9612-25633c7ae619       /var            btrfs           rw,relatime,compress=lzo,space_cache 0 0

# /dev/mapper/vg0-boot
UUID=d121a9df-8c03-4ad9-a6e0-b68739b1a358       /boot           ext4            rw,relatime,data=ordered        0 2

# /dev/mapper/vg0-swap
UUID=29035eeb-540d-4437-861b-c30597bb7c16       none            swap            defaults        0 0

root@archiso ~ # mdadm --detail --scan >> /mnt/arch/etc/mdadm.conf
root@archiso ~ # cat /mnt/arch/etc/mdadm.conf
[...]
ARRAY /dev/md0 metadata=1.2 name=archiso:0 UUID=bdfc3fea:f4a0ee6d:6ac08012:59ea384b

Chrooting in das System

root@archiso ~ # arch-chroot /mnt/arch /bin/bash
[root@archiso /]#

mkinitcpio.conf

Diese Haken wurden hinzugefügt: mdadm_udev encrypt lvm2 btrfs

[root@archiso /]# mkinitcpio -p linux

GRUB konfigurieren

Für den interessanten (und fehlgeschlagenen) Teil habe ich mich für GRUBmeinen Bootloader entschieden, da er alle von mir verwendeten Geräte unterstützen soll.

Verweise:

Geänderte Teile in /etc/default/grub:

GRUB_CMDLINE_LINUX="cryptdevice=/dev/md0:vg0"
GRUB_ENABLE_CRYPTODISK=y

Maden installieren:

[root@archiso /]# grub-install --target=i386-pc --recheck  /dev/sda                                                  
Installing for i386-pc platform.
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
grub-install: warning: Attempting to install GRUB to a disk with multiple partition labels.  This is not supported yet..
grub-install: error: embedding is not possible, but this is required for RAID and LVM install.

( --debugAusgabe hier verfügbar )

Ehrlich gesagt ... Ich habe keine Ahnung, wo das Problem liegt. Im BIOS / GPT-Modus sollte GRUB seine core.img in die ef02/BIOS bootPartition einbetten, nicht wahr ?

Bearbeiten

https://bbs.archlinux.org/viewtopic.php?id=144254 gilt hier nicht:

[root@archiso /]# btrfs fi show --all-devices
Label: none  uuid: 62ebf0c9-bb37-4b4e-87dd-eb8a4ace6a69
        Total devices 1 FS bytes used 965.77MiB
        devid    1 size 20.00GiB used 3.04GiB path /dev/mapper/vg0-root

Label: none  uuid: 869ffe10-7a1c-4254-9612-25633c7ae619
        Total devices 1 FS bytes used 339.15MiB
        devid    1 size 10.00GiB used 3.04GiB path /dev/mapper/vg0-var

Label: none  uuid: 53113e11-b663-452f-b4da-1443e470b065
        Total devices 1 FS bytes used 384.00KiB
        devid    1 size 429.53GiB used 2.04GiB path /dev/mapper/vg0-home

Btrfs v3.17.3
fho
quelle
Sie sollten Grub2 verwenden ...
Frostschutz
@frostschutz Ich bin mir ziemlich sicher, dass ich Grub2 benutze ( grubPaket nicht grub-legacy).
Für den
@derobert Grub2 sollte in der Lage sein, verschlüsselte Boot-Partitionen zu verarbeiten, wie hier ersichtlich . Der einzige Grund, warum ich ein separates /bootVolume habe, besteht darin, die Daten am Anfang der Festplatte zu belassen (um ein anderes Problem zu verringern ...).
Für den
@Florian wow, das wusste ich nicht. Nett. [Übrigens: Ich werde meine nicht so nützlichen Kommentare löschen.]
derobert
Sie sollten grubinsgesamt entfernen . Und Sie können auch darauf verzichten lvm- bcacheist ein viel einfacheres Mittel zur Handhabung eines SSD-Caching-Geräts. Übrigens - Sie brauchen keine separate /boot- haben Sie diese bereits in Ihrer EFI-Systempartition. Setzen Sie Ihre initramfs und und Systemkern auf der esp in einigen Ordner, bind-mount diesen Ordner /bootin /etc/fstabund dann laden Sie einfach direkt den Kernel von Firmware ohne Zwischenbootloader überhaupt. Sie sind sowieso nur Kopfschmerzen. Wenn Sie Boot-Menüs wollen - ala grub- etwas einfacher bekommen - rEFIndist schön.
Mikeserv

Antworten:

5

Hmm ... anscheinend war diese Zeile der Hinweis:

grub-install: warning: Attempting to install GRUB to a disk with multiple partition labels.  This is not supported yet..

Zuvor hatte ich btrfsdirekt auf /dev/sdaund installiert /dev/sdb. Aus diesem Grund hatten beide einen FSTYPE und ein LABEL angebracht (wie in gezeigt lsblk).

Lösung: Ich habe jetzt beide /dev/sdaund /dev/sdbmit hdparm(Secure Erase) gelöscht. Es gibt wahrscheinlich einen besseren Weg, um diese Flags zu deaktivieren ... aber das hat bei mir funktioniert.

fho
quelle
2
Sie könnten wahrscheinlich zB verwenden, ddum nur die ersten und vielleicht letzten Megabyte zu löschen. Moot Point jetzt natürlich.
Derobert
Ja ... habe zuerst darüber nachgedacht ... aber dann etwas über die Secure Erase-Funktionen herausgefunden :)
2.
0

Dies ist eines der besten Google-Ergebnisse für

grub-install: error: embedding is not possible, but this is required for RAID and LVM install.

Das Update für mich war, meine Bootdiskette (ich habe versucht, GRUB auf einer USB-Diskette zu installieren) mit dd zu löschen, wie ...

dd if=/dev/zero of=/dev/sdd bs=1M status=progress

Und dann erstellen Sie eine neue Partitionstabelle, außer diesmal starten Sie sie einige Sektoren später als die Standardtabelle ...

fdisk /dev/sdd

n (for new partition)

p (for primary partition)

1 (for partition 1)

50000 (for first sector 50,000 vs default 2,480)

Mit der neuen Partition und Partitionstabelle habe ich das Programm grub-install ausgeführt ...

grub-install --force --skip-fs-probe /dev/sdd
bthomas
quelle