Multi boot Linux + OpenBSD UEFI + GPT + software raid keskkonnas

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

TODO

non-raid juhtumil

Väited

  • tundub, et openbsd bootx64.efi rakendus otsib plokkseadmelt 'OpenBSD data' nimelise partitsiooni ja püüab sealt disklabel 'a' pealt käivitada /bsd nimega tuuma

non-raid dual boot debian-openbsd süsteemi tekitamiseks sobib

  • paigaldada esmalt debian ja jätta osa plokkseademest partitsioneerimata (tulemusena on gpt partsioonitabeli kontrolli all /dev/sda1 - /boot/efi ja /dev/sda2 linux lvm)
  • käivitada debian os ja tekitada kolmas gpt partitsioon openbsd jaoks, tüüp 'OpenBSD data'
  • bootida arvuti openbsd installerilt (nt ajutiselt kasutada /dev/sdb (virtuaalse arvuti puhul juurde lisatud tavaline plokkseade, füüsilise arvuti puhul usb pult), kuhu on install69.img kopitud dd abil)
  • paigaldada openbsd efi ja gpt režiimis

Tulemusena on /dev/sda1 peal valikud 'BOOT' ja 'debian' - vastavalt openbsd ja debian jaoks.

OpenBSD operatsioonisüsteemi kopeerimiseks ühest arvutist teisse teiseks operatsioonisüsteemiks

  • dst arvuti dst plokkseadmel on juba olemas uefi ja debian (/dev/sda1 on vfat ja /dev/sda2 on lvm)
  • dst arvuti plokkseadmel on partitsioneerimata vaba ruumi, tekitada /dev/sda3
  • käivitada dst arvuti debian režiimis ja meelepärasele dst plokkseadme gpt partitsiooni tüübiks määrata 'openbsd data'
  • seisata dst arvuti ajutiselt
  • teha src kävitule dst plookseade ajutisel kättesaadavaks ja käivitada src arvutis openbsd süsteem (native, live cd vms)
  • monteerida src arvuti /dev/sd0i (efi vfat) külge /mnt/sd0i alla
  • monteerida dst arvuti /dev/sd1i (efi vfat) külge /mnt/sd1i alla
  • tekitada dst plokkseadme dst partitsioonile dislabel, disklabel -E sd1 (a - juurikas ja b - swap)
  • tekitada dst plokkseadmele failisüsteem, newfs /dev/rsd1a
  • monteerida dst arvuti /dev/sd1a külge /mnt/sd1a alla
  • kopeerida efi openbsd boot rakendus, rsync -avH --numeric-ids /mnt/sd0i/BOOT/ /mnt/sd1i/BOOT/
  • kopeerida efi refind boot rakendus, rsync -avH --numeric-ids /mnt/sd0i/refind/ /mnt/sd1i/refind/
  • kopeerida juurfailisüsteem, rsync -avH --numeric-ids --exclude=mnt / /mnt/sd1a/
  • kohendada riistvara halduslideses efi boot valikuid
  • tekitada sobiv refind.conf, nt

Kopeerimisel tar abil tundub, et on lihtsam kasutada gtar programmi kuna OpenBSD enda tar on üsna imelike omadustega (nt eriliselt tuleb tegeleda loabittide säilitamisega).


# cat /mnt/sd0i/EFI/refind/refind.conf
menuentry "OpenBSD" {
  loader /EFI/BOOT/BOOTX64.efi
  icon /EFI/BOOT/icons/os_freebsd.png
}

Tööpõhimõte

Linux poolt vaadates on eesmärk tekitada selline dual boot arvuti

# efibootmgr 
BootCurrent: 0003
Timeout: 1 seconds
BootOrder: 0003,0004
Boot0003* debian
Boot0004* UEFI OS

kus

  • debian - operatsioonisüsteem Debian
  • UEFI OS - operatsioonisüsteem OpenBSD

Seejuures on kasutusel kaks plokkseadet, Linux seisukohalt /dev/sda ja /dev/sdb ja tulemusena on seal sellised partitsioonid

# parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s                                                           
(parted) p                                                                
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 30
blocks) or continue with the current setting? 
Fix/Ignore? I                                                             
Model: ATA SAMSUNG SP0411C (scsi)
Disk /dev/sda: 78242976s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start      End        Size       File system  Name  Flags
 1      2048s      999423s    997376s    fat32              boot, esp
 2      999424s    16623615s  15624192s                     raid
 3      16623616s  78242912s  61619297s

kus

  • tõenäolselt on parem mitte Fix'ima hakata
  • kasutatakse gpt partitsioonitabelit
  • nr 1 ESP partitsioon on kõigile operatsioonisüsteemidele ühine
  • nr 2 partitsioon on Linux software raid
  • nr 3 partitsioon on OpenBSD software raid

fdisk näitab sama pilti nii

# fdisk /dev/sda -l
Disk /dev/sda: 37.3 GiB, 40060403712 bytes, 78242976 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: F0E7EF22-0AAF-4472-BED5-3112CCA627F3

Device        Start      End  Sectors  Size Type
/dev/sda1      2048   999423   997376  487M EFI System
/dev/sda2    999424 16623615 15624192  7.5G Linux RAID
/dev/sda3  16623616 78242912 61619297 29.4G OpenBSD data

OpenBSD poolelt paistab (mõlemad füüsilised kettad, st sd0 ja sd1)

# fdisk sd0                                                                                                                        
Disk: sd0       Usable LBA: 64 to 78242912 [78242976 Sectors]
   #: type                                 [       start:         size ]
------------------------------------------------------------------------
   0: EFI Sys                              [        2048:       997376 ]
   1: a19d880f-05fc-4d3b-a006-743f0f84911e [      999424:     15624192 ]
   2: OpenBSD                              [    16623616:     61619297 ]

ning disklabel partitsioonid

# disklabel sd0 
# /dev/rsd0c:
type: SCSI
disk: SCSI disk
label: SAMSUNG SP0411C 
duid: dc66798328ef0108
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 4870
total sectors: 78242976
boundstart: 16623616
boundend: 78242913
drivedata: 0 

16 partitions:
#                size           offset  fstype [fsize bsize   cpg]
  a:         61619297         16623616    RAID                    
  c:         78242976                0  unused                    
  i:           997376             2048   MSDOS                    
  j:         15624192           999424 unknown      

ja raid sisu

# disklabel sd2 
# /dev/rsd2c:
type: SCSI
disk: SCSI disk
label: SR RAID 1
duid: dd36ee39ec473660
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 3835
total sectors: 61618769
boundstart: 1024
boundend: 61618706
drivedata: 0 

16 partitions:
#                size           offset  fstype [fsize bsize   cpg]
  a:         28000000             1024  4.2BSD   2048 16384 12958 # /
  b:          2000000         28001024    swap                    # none
  c:         61618769                0  unused                    
  d:         31617664         30001024  4.2BSD   2048 16384     1 
  i:              960               64   MSDOS     

kus

  • tõenäoliselt raid seadmel ei oleks olnud vajadust tekitada gpt moodi partitsioone (i)
# bioctl sd2                                                                                                                       
Volume      Status               Size Device  
softraid0 0 Online        31548809728 sd2     RAID1 
          0 Online        31548809728 0:0.0   noencl <sd0a>
          1 Online        31548809728 0:1.0   noencl <sd1a>

Süsteemi ettevalmistamise tegevused

  • arvuti riistvara käivitatakse UEFI režiimis
  • paigaldatakse Debian, kasutades GPT partitsioonitabelit (vaikimisi UEFI riistvaral nii kasutatakse)
  • paigaldatakse OpenBSD (vajalik gpt partitsioon moodustatakse väljudes installerist shelli)

Linux paigaldamine

Linux paigaldatakse tavalisel viisil

  • installeris moodustatakse /boot/efi jaoks ESP partitsioonid 512 MBait suurusega
  • installeris moodustatakse software raid kahest partitsioonist /dev/sda2 ja /dev/sdb2
  • installeris moodustatakse lvm köited /dev/system/swap ja /dev/system/root seadmele /dev/md0

OpenBSD paigaldamine

OpenBSD paigaldamise käigus

  • väljutakse korraks installerist ja moodustatakse ketastele kolmas partitsioon, tüüp A6 (OpenBSD)
  • tekitatakse tarkvaraline raid OpenBSD vahenditega
  • jätkatakse OpenBSD paigaldamist tavalisel viisil, software raid plokkseadmele

OpenBSD operatsioonisüsteemi uuendamine

  • Igaks juhuks võiks kasutada uuendamisel selle versiooni efi bootx64.efi rakendust /bsd.upgrade bootimisel, millele uuendatakse
  • sysupgrade kasutamisel võiks protsessi töö lõpetada peatamisega enne rebooti
# sysupgrade -k -n
  • tundub, et sysupgrade töötab kõige paremini kui juurfailisüsteem asub /dev/sd1a vms 'a' disk slice peal

Kasulikud lisamaterjalid

  • TODO