Doküman

MBR ve GPT – Bölüm Tablosu Formatlarının Açıklaması

Önceki bir yazımızda UEFI ve BIOS’u ve bunların her birinde önyükleme işleminin nasıl çalıştığını zaten tartışmıştık.  Şimdi bu yazıda bölüm tablosu formatlarına, yani MBR ve GPT’ye göz atacağız.

Temel olarak sürücüdeki bölüm bilgilerini tutan veri yapısı formatlarını tanımlarlar.  Bölüm bilgisi yerinde olmadığında sistem, bölümün nerede bittiğini ve bir sonrakinin nerede başladığını bilemez.

Bölüm tablosu şemasını kontrol edin (MBR/GPT)

Linux’ta bunu kontrol etmek için birkaç komut vardır, ancak bunu kolaylaştırmak için Gparted’i çalıştırın ve ilgilendiğiniz sürücüyü seçin; sol taraftaki “Aygıt Bilgileri” sütununda bölüm tablosu türünü gösterecektir.  MBR için “msdos” ve GPT için gpt gösterecektir.

Windows’ta Gparted aracını veya Disk Yöneticisi uygulamasını kullanabilirsiniz:

Linux üzerinde depolama cihazlarınızın bölümleme şemasını görüntülemek için “parted -l” komutunu veya “lsblk” komutunu kullanabilirsiniz.  Birkaç harici ssd ve usb sürücünün bağlı olduğu Ubuntu masaüstümde lsblk komutunun çıktısı:

$ lsblk -e7 -o "NAME,PTTYPE,FSTYPE,SIZE,LABEL,PARTLABEL,PATH,PHY-SEC,VENDOR"
NAME   PTTYPE FSTYPE    SIZE LABEL              PARTLABEL PATH      PHY-SEC VENDOR
sda    dos            111.8G                              /dev/sda      512 ATA     
└─sda1 dos    ext4     95.4G                              /dev/sda1     512 
sdb    dos            111.8G                              /dev/sdb      512 ATA     
└─sdb1 dos    ext4     95.8G                              /dev/sdb1     512 
sdc    gpt            447.1G                              /dev/sdc      512 ATA     
└─sdc1 gpt    ext4      400G                              /dev/sdc1     512 
sdd    dos            465.8G                              /dev/sdd      512 Samsung 
└─sdd1 dos    ext4      420G                              /dev/sdd1     512 
sdf    dos             14.6G                              /dev/sdf      512 SanDisk 
└─sdf1 dos    vfat     14.6G UBUNTU 22_1                  /dev/sdf1     512 
sdg    gpt    iso9660  28.9G Ubuntu 22.10 amd64           /dev/sdg      512 hp      
├─sdg1 gpt    iso9660   3.8G Ubuntu 22.10 amd64 ISO9660   /dev/sdg1     512 
├─sdg2 gpt    vfat      4.2M ESP                Appended2 /dev/sdg2     512 
└─sdg3 gpt              300K                    Gap1      /dev/sdg3     512 
$

“Dos” MBR bölümleme stilini gösterdiğinde ve “gpt” GPT stili bölümleme tablosunu gösterdiğinde PTTYPE sütununun değeri.

MBR – The legacy partition scheme

MBR, ister Windows ister Linux tabanlı olsun, çoğu bilgisayar ve dizüstü bilgisayarda geleneksel olarak kullanılan eski bölümleme şemasıdır.  Bunun yerini UEFI paketinin bir parçası olarak gelen daha yeni GPT alıyor.

Mbr bölüm tablosu maksimum 4 birincil bölümü destekler.  Eski günlerde oluşturduğumuz “genişletilmiş” bölüm, mantıksal bölümler olarak adlandırılan diğer alt bölümleri içeren özel bir birincil bölümdü.

1. 4 Primary
2. 3 Primary + 1 Extended Partition (with multiple Logical partitions)

MBR birçok açıdan sınırlıdır ve en önemli dezavantajları şunlardır:

  • 1. Adres uzunluğu yalnızca 32 bittir.  Yani MBR yalnızca 2^32 x 512 bayt = 2 TiB (2,2 TB) sürücü alanına kadar erişebilir.
  • 2. Önyükleyici alanı yalnızca yaklaşık 446 bayt veri tutabilir, bu da grub gibi zengin özelliklere sahip önyükleyicilerin mbr’ye kurulmasını zorlaştırır.
  • 3. 4’ten fazla birincil bölüme sahip olmak mümkün değildir.  Geçici çözüm, 3 birincil + 1’in genişletilmiş olması ve ardından genişletilmiş olanı birden fazla mantıksal bölümü barındırmak için kullanmaktır.
  • 4. Emniyet ve emniyet mekanizmalarının eksikliği.

MBR, BIOS (veya eski BIOS) tabanlı sistemlerle çalışan, varsayılan uyumlu bölümleme tablosudur.

OS installations

MBR tabanlı sürücüde, ilk 446 bayt yürütülebilir önyükleme kodunu (Aşama 1 önyükleyici olarak da bilinir) içerir.

Bu önyükleyici, örneğin /boot/grub’da bulunan Aşama 2 önyükleyicisini çalıştırır ve yükler.

GRUB tabanlı linux kurulumlarında MBR önyükleyici, “boot.img” dosyasındaki yürütülebilir kodu içerir.

MBR tabanlı işletim sistemi kurulum sürücülerinin hem eski BIOS hem de UEFI “bios” ile çalışacağını unutmamak önemlidir.  Ancak bir sorun var.

Linux UEFI + MBR sürücüsüyle çalışabilir.
Windows 10, UEFI “bios” + MBR sürücüsüyle çalışamaz ancak Windows 10, Legacy Bios + MBR sürücüsüyle çalışabilir.

MBR’yi okumak

Yeterince meraklıysanız ve MBR’nin işletim sisteminizin önyükleme sürücüsünde nasıl göründüğünü görmek istiyorsanız, bunu Linux’ta yapmanın bazı yollarını burada bulabilirsiniz.  Yalnızca 512 bayt (yani 1 sektör ve MBR’nin toplam boyutu) alan önyükleme sürücüsünün ham içeriğini kolayca boşaltabilirsiniz.

 

$ sudo hd -n 512 /dev/sda
00000000  eb 63 90 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |.c..............|
00000010  fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |...|.........!..|
00000020  00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |....8.u........u|
00000030  f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 01 8b  |.........|...t..|
00000040  4c 02 cd 13 ea 00 7c 00  00 eb fe 00 00 00 00 00  |L.....|.........|
00000050  00 00 00 00 00 00 00 00  00 00 00 80 01 00 00 00  |................|
00000060  00 00 00 00 ff fa 90 90  f6 c2 80 74 05 f6 c2 70  |...........t...p|
00000070  74 02 b2 80 ea 79 7c 00  00 31 c0 8e d8 8e d0 bc  |t....y|..1......|
00000080  00 20 fb a0 64 7c 3c ff  74 02 88 c2 52 bb 17 04  |. ..d|<.t...R...|
00000090  f6 07 03 74 06 be 88 7d  e8 17 01 be 05 7c b4 41  |...t...}.....|.A|
000000a0  bb aa 55 cd 13 5a 52 72  3d 81 fb 55 aa 75 37 83  |..U..ZRr=..U.u7.|
000000b0  e1 01 74 32 31 c0 89 44  04 40 88 44 ff 89 44 02  |..t21..D.@.D..D.|
000000c0  c7 04 10 00 66 8b 1e 5c  7c 66 89 5c 08 66 8b 1e  |....f..\|f.\.f..|
000000d0  60 7c 66 89 5c 0c c7 44  06 00 70 b4 42 cd 13 72  |`|f.\..D..p.B..r|
000000e0  05 bb 00 70 eb 76 b4 08  cd 13 73 0d 5a 84 d2 0f  |...p.v....s.Z...|
000000f0  83 d0 00 be 93 7d e9 82  00 66 0f b6 c6 88 64 ff  |.....}...f....d.|
00000100  40 66 89 44 04 0f b6 d1  c1 e2 02 88 e8 88 f4 40  |@f.D...........@|
00000110  89 44 08 0f b6 c2 c0 e8  02 66 89 04 66 a1 60 7c  |.D.......f..f.`||
00000120  66 09 c0 75 4e 66 a1 5c  7c 66 31 d2 66 f7 34 88  |f..uNf.\|f1.f.4.|
00000130  d1 31 d2 66 f7 74 04 3b  44 08 7d 37 fe c1 88 c5  |.1.f.t.;D.}7....|
00000140  30 c0 c1 e8 02 08 c1 88  d0 5a 88 c6 bb 00 70 8e  |0........Z....p.|
00000150  c3 31 db b8 01 02 cd 13  72 1e 8c c3 60 1e b9 00  |.1......r...`...|
00000160  01 8e db 31 f6 bf 00 80  8e c6 fc f3 a5 1f 61 ff  |...1..........a.|
00000170  26 5a 7c be 8e 7d eb 03  be 9d 7d e8 34 00 be a2  |&Z|..}....}.4...|
00000180  7d e8 2e 00 cd 18 eb fe  47 52 55 42 20 00 47 65  |}.......GRUB .Ge|
00000190  6f 6d 00 48 61 72 64 20  44 69 73 6b 00 52 65 61  |om.Hard Disk.Rea|
000001a0  64 00 20 45 72 72 6f 72  0d 0a 00 bb 01 00 b4 0e  |d. Error........|
000001b0  cd 10 ac 3c 00 75 f4 c3  03 46 01 00 00 00 80 20  |...<.u...F..... |
000001c0  21 00 83 fe ff ff 00 08  00 00 00 b8 eb 0b 00 00  |!...............|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200

Veya şu komutu kullanın

dd if=/dev/sda bs=512 count=1 | hexdump -C

Mbr’de bulunan önyükleyici kodu aslında grubun içindeki boot.img dosyasından gelir.  Şuna da bir göz atmak isteyebilirsiniz:

 

enlightened@enlightened:/boot/grub/i386-pc$ sudo hd -n 512 boot.img 
00000000  eb 63 90 00 00 00 00 00  00 00 00 00 00 00 00 00  |.c..............|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000050  00 00 00 00 00 00 00 00  00 00 00 80 01 00 00 00  |................|
00000060  00 00 00 00 ff fa eb 05  f6 c2 80 74 05 f6 c2 70  |...........t...p|
00000070  74 02 b2 80 ea 79 7c 00  00 31 c0 8e d8 8e d0 bc  |t....y|..1......|
00000080  00 20 fb a0 64 7c 3c ff  74 02 88 c2 52 bb 17 04  |. ..d|<.t...R...|
00000090  f6 07 03 74 06 be 88 7d  e8 17 01 be 05 7c b4 41  |...t...}.....|.A|
000000a0  bb aa 55 cd 13 5a 52 72  3d 81 fb 55 aa 75 37 83  |..U..ZRr=..U.u7.|
000000b0  e1 01 74 32 31 c0 89 44  04 40 88 44 ff 89 44 02  |..t21..D.@.D..D.|
000000c0  c7 04 10 00 66 8b 1e 5c  7c 66 89 5c 08 66 8b 1e  |....f..\|f.\.f..|
000000d0  60 7c 66 89 5c 0c c7 44  06 00 70 b4 42 cd 13 72  |`|f.\..D..p.B..r|
000000e0  05 bb 00 70 eb 76 b4 08  cd 13 73 0d 5a 84 d2 0f  |...p.v....s.Z...|
000000f0  83 d0 00 be 93 7d e9 82  00 66 0f b6 c6 88 64 ff  |.....}...f....d.|
00000100  40 66 89 44 04 0f b6 d1  c1 e2 02 88 e8 88 f4 40  |@f.D...........@|
00000110  89 44 08 0f b6 c2 c0 e8  02 66 89 04 66 a1 60 7c  |.D.......f..f.`||
00000120  66 09 c0 75 4e 66 a1 5c  7c 66 31 d2 66 f7 34 88  |f..uNf.\|f1.f.4.|
00000130  d1 31 d2 66 f7 74 04 3b  44 08 7d 37 fe c1 88 c5  |.1.f.t.;D.}7....|
00000140  30 c0 c1 e8 02 08 c1 88  d0 5a 88 c6 bb 00 70 8e  |0........Z....p.|
00000150  c3 31 db b8 01 02 cd 13  72 1e 8c c3 60 1e b9 00  |.1......r...`...|
00000160  01 8e db 31 f6 bf 00 80  8e c6 fc f3 a5 1f 61 ff  |...1..........a.|
00000170  26 5a 7c be 8e 7d eb 03  be 9d 7d e8 34 00 be a2  |&Z|..}....}.4...|
00000180  7d e8 2e 00 cd 18 eb fe  47 52 55 42 20 00 47 65  |}.......GRUB .Ge|
00000190  6f 6d 00 48 61 72 64 20  44 69 73 6b 00 52 65 61  |om.Hard Disk.Rea|
000001a0  64 00 20 45 72 72 6f 72  0d 0a 00 bb 01 00 b4 0e  |d. Error........|
000001b0  cd 10 ac 3c 00 75 f4 c3  00 00 00 00 00 00 24 12  |...<.u........$.|
000001c0  0f 09 00 52 be bd 7d 31  c0 cd 13 46 8a 0c 84 c9  |...R..}1...F....|
000001d0  75 0f be da 7d e8 da ff  eb a4 46 6c 6f 70 70 79  |u...}.....Floppy|
000001e0  00 bb 00 70 8e c3 31 db  b8 01 02 b5 00 b6 00 cd  |...p..1.........|
000001f0  13 72 d4 b6 01 b5 4f e9  ff fe 00 00 00 00 55 aa  |.r....O.......U.|
00000200
enlightened@enlightened:/boot/grub/i386-pc$

Ne kadar benzer göründüklerine dikkat edin.

GPT sürücüsü tabanlı işletim sistemi kurulumları

GPT, mbr sınırlamalarının üstesinden gelen yeni nesil bölümleme tablosu şemasıdır.  GPT aynı zamanda “UEFI teknolojisi” paketinin bir parçasıdır ve çoğu modern sistem için önerilir, ancak katı bir gereklilik DEĞİLDİR.

İşletim sistemi yüklemelerinin olası yapılandırmaları:

  • İşletim sistemi kurulumu için UEFI (Eski BIOS modu/CSM) + MBR sürücüsüne sahip olabilirsiniz.  Linux bunu destekliyor ancak Windows 10’u desteklemiyor.
  • İşletim sistemi kurulumu için UEFI (Eski BIOS modu/CSM) + GPT sürücüsüne sahip olabilirsiniz.
  • İşletim sistemi kurulumu için UEFI + GPT sürücüsüne sahip olabilirsiniz.  Bu modern önerilen yaklaşımdır.

Eski BIOS sistemleri işletim sistemini bir GPT sürücüsünden başlatabilir mi?

Evet, Eski BIOS, işletim sistemini önyüklemek için GPT sürücüsünü kullanabilir, ancak özel bir BIOS Önyükleme bölümüne ihtiyaç duyar.

Eski BIOS, GPT’yi değil yalnızca MBR’yi tanır.  Ancak GPT sürücüleri aynı zamanda geriye dönük uyumluluk için “korumalı bir MBR”ye sahip olduğundan, mbr önyükleme kaydı, önyükleme yükleyicisinin bir sonraki aşamasını içeren özel bir BIOS-Önyükleme bölümüne işaret edecek şekilde yapılır.

Linux sistemlerde GRUB2, core.img kodunu BIOS-Boot bölümünde saklar; bu bölüm, görevi sistemi hazırlamak ve “/boot/grub” konumunda bulunan Stage 2 boot-loader’ı yüklemek olan Stage 1.5 Boot-loader olarak düşünülebilir. .

Gparted GPT DIsk Partitions – Ubuntu with ESP

Yukarıdaki sistem, bir dizüstü bilgisayarda tek bir nvme ssd üzerinde çift önyükleme yapılandırmasında Windows 10 + Ubuntu’ya sahiptir.  İlk bölüm, üzerinde “boot” ve “esp” bayrakları bulunan bir EFI Sistem bölümüdür.

Aynı veriler parted komutuyla komut satırında düzgün bir biçimde görüntülenebilir:

acerlight@acerlight-laptop:~$ sudo parted -l
[sudo] password for acerlight: 
Model: Linux device-mapper (crypt) (dm)
Disk /dev/mapper/encryptedhome: 102GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags: 

Number  Start  End    Size   File system  Flags
 1      0.00B  102GB  102GB  ext4


Model: HFM512GDJTNI-82A0A (nvme)
Disk /dev/nvme0n1: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size    File system     Name                          Flags
 1      1049kB  106MB  105MB   fat32           EFI system partition          boot, esp
 2      106MB   123MB  16.8MB                  Microsoft reserved partition  msftres
 3      123MB   215GB  215GB   ntfs            Basic data partition          msftdata
 5      215GB   297GB  81.9GB  ext4
 6      297GB   399GB  102GB
 7      399GB   416GB  16.4GB  linux-swap(v1)                                swap
 8      457GB   511GB  53.7GB  ntfs                                          msftdata
 4      511GB   512GB  1074MB  ntfs            Basic data partition          hidden, diag


acerlight@acerlight-laptop:~$

215GB “msftdata” bölümü Windows 10’un kurulu olduğu yerdir.  Bir bölümün, önceki bölümün bittiği noktada başladığını unutmayın.  Ancak EFI Sistem bölümü olan ilk bölüm 1049kB işaretinden başlar.  Bu, ondan önceki parçanın, bölünmüş komut çıktısından gizlenen GPT başlığı olduğunu gösterir.

Çift Önyükleme Konuları

Örneğin Windows 10 ve Ubuntu kullanarak masaüstünüzde veya dizüstü bilgisayarınızda çift önyükleme ayarlamak istiyorsanız, yukarıda tartışılan önyükleme teknolojileriyle ilgili olarak devreye giren bazı önemli faktörler vardır.

Öncelikle bir sistemdeki tüm işletim sistemlerinin aynı önyükleme yöntemlerini kullanacak şekilde kurulması/yapılandırılması gerekir.  Ya tümü BIOS+MBR olmalı ya da tümü UEFI/ESP tabanlı olmalıdır.  Bunun nedeni, her teknolojinin önyükleme işlemi “kontrol akışının” çok farklı olmasıdır.

Bu basit diyagrama bir göz atın.

Aşağıdaki senaryoları göz önünde bulundurun:

1. UEFI önyüklemesi, ESP ve gpt bölümü önceden yüklenmiş olan bir Windows 10 dizüstü bilgisayarınız var.  Artık Ubuntu’yu üzerine kurarsanız, Ubuntu’nun da ESP kullanması ve GRUB önyükleme yükleyicisini ESP bölümüne yüklemesi gerekir.  Ubuntu’yu başlatmak için Eski BIOS yöntemlerini kullanamazsınız.

2. BIOS+MBR ile Windows 10 önyüklemeli bir masaüstünüz varsa, yalnızca BIOS’u kullanmak için sonraki işletim sistemini yüklemeniz gerekir.  Ubuntu eski MBR tabanlı önyüklemeyi kullandığında GRUB önyükleyici, kök bölümde veya ayrı bir bölümde olabilen özel bir “/boot” yoluna yerleştirilir.

 

Yazının orijinalini buradan okuyabilirsiniz.