30 Mayıs 2011 Pazartesi

UNIX ve MBR Partitions

MBR – Master Boot Record baş harflerinden oluşur. Bir çok PC kullanıcısı için ana açılış kaydı olarak bilinir. MBR tek işlevinin de sadece sistemin başlatılmasını sağlayan kodu barındıran küçük bir alandan ibaret olduğu düşünülür. BIOS'un bu bölümden açılış kodunu yükleyerek sonrada işlemci tarafından çalıştırılıp işletim sisteminin başlatılmasını sağlayan kodun barındırıldığı alan olarak da tanımlanır. Ancak UNIX (BSD) tarafından bakıldığında bu kadar ile sınırlı değildir. MBR aynı zamanda MBR partitions yani MBR bölümleri olarak da tanımlayabileceğimiz disk bölümleri tablosunun da barındırdığı alandır.



MBR partitions kavramı PC ile özdeştir. Söz konusu olan mimari x86 ve AMD64 olduğunda, MBR Windows ve Linux dağıtımları tarafından standart olarak desteklenir. UNIX (BSD) tarafında ise MBR desteklenir ama alışıldık disk bölümleme pratiği açısından bakıldığında UNIX (BSD), MBR disk bölümlerini destekler ama sistemin bulunduğu disk alanı üzerinde MBR partitions – MBR bölümleri kullanılmaz. Her ne kadar UNIX (BSD), PC'den çok daha önce var olsa da UNIX (BSD) disk bölümleme pratiği, PC/MBR disk bölümleme pratiğinden çok farklıdır. Bu fark bilgisayar teknolojisinin gelişiminin tarihsel köklerinde yatar.

PC'nin Doğuşu

1970'erin sonu, 1980'lerin ilk yarısı mikro bilgisayarların yükseldiği ve ana bilgisayar-terminal sistemlerin yerini almaya başladığı yıllardır. Bu dönem bugün tanıdığımız ve bugün var olmayan bir çok markanın pazarda var olduğu bir zaman dilimidir. O yıllarda bugün bildiğimiz Apple, Atari, RadioShack'ın Tandy veya diğer adı ile TRS-80 ve daha bir çok farklı markaya ait bilgisayarlar mikro bilgisayar olarak tanıtılıp satılmakta idi. Pazara bu dönemin sonlarına doğru giren ve PC'nin halefi olarak adlandırılabilecek olan ana bilgisayar ve buna bağlı terminallerden oluşan ürünlerinin en iyi bilinen markası olan IBM eski ürünleri yanında pazarladığı IBM Personal Computer kısa adı ile IBM-PC, kişisel bilgisayar ile mikro bilgisayar kavramın özdeşleşmesine neden olmuştur. Aynı sınıftaki tüm bilgisayarlar PC olarak adlandırılmıştır. Dönemin PC için yazılım geliştiren bireyler geliştiriciler yanında şirketlerde bulunmaktadır. IBM, IBM-PC için geliştirdiği DOS-Disk Operating System- aynı dönemde kurulan Microsoft'un geliştirmekte olduğu bir başka DOS işletim sistemine göre kötü olsa da Microsoft'un pazarlama stratejisi gereği geliştirilmekte olan DOS işletim sistemi bırakılıp yerine IBM PC-DOS kullanılmaya başlanmıştır. PC-DOS kısa zamanda yaygınlaşması, geliştiricilerinin hazırladığı MBR yapısının standartlaşmasına neden olmuştur. MBR'nin fiilen standartlaşması sonucunda MS Windows, Linux dağıtımları diğer işletim sistemleri de MBR kullanmaya başlamıştır.

MBR – Master Boot Record, bir sabit diskin ilk sektörü üzerinde bulunur. Bu sektörde yer alan MBR kaydı Diskin Master yada Primary olarak adlandırılan bölümleme – partition – tablosunu barındırır. Bu tablonun büyüklüğü ise 64 byte uzunluğundadır ve MBR kaydının bulunduğu sektörün büyüklüğü olan 512 byte ile karşılaştırıldığında yaklaşık olarak %12,5 yani sekizde biri büyüklüğündedir. MBR tablosu dışında akalan ilk 446 byte uzunluğundaki alan veri alanı olarak tanımlanır. Açılış yöneticisi uygulamaları bu alanı program kodunu barındırmak için kullanır. Geri kalan iki byte alan ise diskin ilk sektörünün sonuna işaret eden 0x55AA olarak tanımlıdır.

MBR yapısı gereği sadece 4 adet birincil – primary – disk bölümü – partitions – barındırabilir. Her bir bölüme ait olan bölümleme bilgisi 16 byte uzunluğundadır ve 64 byte uzunluğundaki alan içerisinde barındırılır.

Çeşitli kaynaklardan bulabileceğiniz disk düzenleme yazılımları MBR yapısı gereği 000 başlayan ve sadece 16 byte uzunluğundaki satırlar olarak disk bölümleme tablosuna ait bilgiyi döndürecektir. Bölümleme tablosuna ait olan 64 byte uzunluğundaki veri ise MBR üzerinde 1BEh adresinden başlamaktadır. Disk düzenleme yazılımı veya MBR kaydının bir kopyasını alıp bunu bir hex düzenleyici ile açarsanız ardışık ve kesintisiz olarak 16 byte uzunluğunda olan kayıtlar görebilirsiniz. Bu kayıtlar içerisindeki veriler eğer DOS uyumlu bir karakter içermiyorsa sadece nokta olarak görüntülenir.

Uzatılmış – Extended Partitions – Bölümleri ve Mantıksal Sürücüler

MS-DOS 3.x sürümlerinin duyurulduğu dönemde sabit disklerin büyüklüğü 120 MB yeni aşmıştı. Var olan işletim sistemleri ise 30MB daha büyük diskleri kullanmamaktadır. Sabit disk üreticileri diskleri geliştirmeye devam ederken işletim sistemlerinin bu geliştirme hızını yakalaması için daha çok zamana gereksinim duyulacağının anlaşılması üzerinde Microsoft ve IBM programcılar çözüm olarak uzatılmış disk bölümleri – extenden partitions – çözümünü geliştirmiştir. Uzatılmış bölümler temel olarak birincil disk bölümleri içerisinde oluşturulmuş olan – extended partitions – bölümleridir. Uzatılmış bölüm bir birincil disk bölümü olduğu için disk düzenleme araçları tarafından extended primary partition olarak adlandırılır. Uzatılmış disk bölümü içerisinde mantıksal disk bölümleri – logical partitions – oluşturulur. Böylelikle işletim sistemi uzatılmış disk bölümlerini kullanabilir. Bu mantıksal disk bölümlerinin sayısı DOS kaynaklı bir sınırlama olarak 23 adet ile sınırlıdır. Windows işletim sistemi ailesi bu mantıksal disk bölümlerine D,E,...,Z kadar isimlendirerek kullanırken Linux dağıtımları bunu dikkate almadan sayısal değerler ile tanımlarlar sda1, sda5, sda6 vb gibi.

Uzatılmış disk bölümü birincil disk bölümü üzerinde oluşturulan mantıksal disk bölümlerini barındırdığı için bu bölüm kaydı 64 byte uzunluğunda olan ve 16 byte uzunluğundaki bölüm bilgisini barındıran veri bloğu içerisinde tutulur. Eğer bu disk bölümü bilgisine bakacak olursanız disk bölümlerini belirten kayıtların ardışık olarak yerleştirildiğini görebilirsiniz. Böylelikle bir uzatılmış bölümün içerisinde yer alan mantıksal bölümler ardışık olarak okunabilir. Mantıksal bölümlerin bilgisi MBR benzer şekilde EBR – Extended Boot Records – adı verilen bir tablo üzerinde tutulur. Bu tabloda sadece bölümleme tablosu barındırılır.

UNIX (BSD) Disk Bölümleri

UNIX (BSD) sistemlerde MBR disk bölümleri – partition – olarak adlandırılmaz. Karşılık olarak slice – dilim – kullanılır. UNIX sistemlerin diski kullanım biçimi farklıdır. Bu fark Linux dağıtımlarındaki veya Windows sistemlerdeki disk yönetim araçları ile bir UNIX (BSD) sistemde olduğu gibi görüntülenemez. UNIX (BSD) sistemlerde bir disk dilimlere – slice – ayrılır ve bir dilim içerisinde ise bölümler – partition – oluşturulur. Farklı UNIX (BSD) sistemlerde de bir dilim içerisinde oluşturulabilecek olan dilim sayısı farklılık gösterir. Örneğin FreeBSD için bölüm sayısının üst sınırı 8 iken OpenBSD için bu değer 16'dır.

PC üzerinde MBR disk bölümleri kullanıldığı için bir UNIX( BSD) sistemin PC kurulması için hem PC hem de UNIX disk bölümlerini desteklemesi gerekir. Bunu UNIX (BSD) sistemler gerçekleştirebilmektedir. Diski incelediğinizde her iki disk bölümleme sistematiğinin desteklendiğini görebilirsiniz. Aşağıdaki örneklerde sırası ile FreeBSD ve OpenBSD sistemlerdeki fdisk kullanılarak disk bölümleri bilgisi döndürülmüştür.

[goksin@tardis /usr/home/goksin]$ fdisk
******* Working on device /dev/ad4 *******
parameters extracted from in-core disklabel are:
cylinders=620181 heads=16 sectors/track=63 (1008 blks/cyl)

Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=620181 heads=16 sectors/track=63 (1008 blks/cyl)

Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 63, size 625142385 (305245 Meg), flag 80 (active)
        beg: cyl 0/ head 1/ sector 1;
        end: cyl 660/ head 15/ sector 63
The data for partition 2 is:
<UNUSED>
The data for partition 3 is:
<UNUSED>
The data for partition 4 is:
<UNUSED>
[goksin@tardis /usr/home/goksin]$ 

OpenBSD fdisk çıktısı FreeBSD farklıdır. Aşağıdaki çıktıda OpenBSD tek sistem olarak kurulduğu bir PC üzerindeki disk bölümleri görülmektedir..

Disk: wd0 geometry: 4865/255/63 [78165360 Sectors]
Offset: 0 Signature: 0xAA55
            Starting         Ending         LBA Info:
 #: id      C   H   S -      C   H   S [       start:        size ]
-------------------------------------------------------------------------------
 0: 00      0   0   0 -      0   0   0 [           0:           0 ] unused      
 1: 00      0   0   0 -      0   0   0 [           0:           0 ] unused      
 2: 00      0   0   0 -      0   0   0 [           0:           0 ] unused      
*3: A6      0   1   2 -   4864 254  63 [          64:    78156161 ] OpenBSD

Yine fdisk kullanılarak MBR bölümleme tablosu bilgisi de öğrenilebilir. Aşağıda FreeBSD üzerinde çalıştırılan fdisk çıktısı görülmektedir.

[goksin@tardis /usr/home/goksin]$ fdisk -s
/dev/ad4: 620181 cyl 16 hd 63 sec
Part        Start        Size Type Flags
   1:          63   625142385 0xa5 0x80
[goksin@tardis /usr/home/goksin]$

OpenBSD fdisk ile "-s" sseçeneği kullanılamaz. FreeBSD aksine olarak fdisk bu bilgileri standart olarak sunar.

Çıktılarda göreceğiniz type bölümün altında yer alan 0xa5, 0xa6 sırası ile söz konusu bölümün dosya sistemini tanımlar. Bugün için kullanılan dosya sistemlerini tanımlayan onaltılık tabandaki sayı değeridir. Flags kısmında göreceğiniz 0x80 değeri ise sistemin aktif MBR bölümünü tanımlar. BIOS sadece bir tane aktif bölüme izin verir.

Bir UNIX (BSD) sistem kurduğunuzda disk üzerinde kurulumu yaptığınız dilim üzerinde UNIX bölümleme tablosu oluşturulur. UNIX bölümleme tablosu MBR bölümleme tablosundan çok farklıdır. FreeBSD sistemde bsdlabel ile UNIX bölümleme tablosuna bakacak olursanız aşağıdakine benzer bir çıktı görebilirsiniz.

[goksin@tardis /usr/home/goksin]$ bsdlabel ad4s1
# /dev/ad4s1:
8 partitions:
#         size   offset   fstype   [fsize bsize bps/cpg]
  a:   2097152        0   4.2BSD       0     0     0 
  b:   8388608  2097152     swap                    
  c: 625142385        0   unused       0     0         # "raw" part, don't edit
  d:   8388608 10485760   4.2BSD       0     0     0 
  e:   2097152 18874368   4.2BSD       0     0     0 
  f: 604170865 20971520   4.2BSD       0     0     0 
[goksin@tardis /usr/home/goksin]$

FreeBSD dilimi tüm diski kapsamaktadır. İçerisinde de a,b,c,d,e,f olmak üzere 5 adet bölüm oluşturulmuştur. c bölümü kullanılmamış olarak gösterilmektedir. Bu bölüm geleneksel olarak tüm dilimi temsil ettiği için asıl dosya sistemleri yani bölümler a – b ve d – h harfleri ile gösterilmektedir. Takas alanı b harfi gösterilmiştir.

Benzer olarak OpenBSD sisteme baktığımızda benzer bir tablo görebiliriz.

# disklabel wd0
# /dev/rwd0c:
type: ESDI
disk: ESDI/IDE disk
label: ST340015A       
duid: 2c345600bf813566
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 4865
total sectors: 78165360
boundstart: 64
boundend: 78156225
drivedata: 0 

16 partitions:
#                size           offset  fstype [fsize bsize  cpg]
  a:          2097152               64  4.2BSD   2048 16384    1 # /
  b:          1571784          2097216    swap                   
  c:         78165360                0  unused                   
  d:          5369024          3669024  4.2BSD   2048 16384    1 # /tmp
  e:          8489184          9038048  4.2BSD   2048 16384    1 # /var
  f:          4194304         17527232  4.2BSD   2048 16384    1 # /usr
  g:          2097152         21721536  4.2BSD   2048 16384    1 # /usr/X11R6
  h:         10598432         23818688  4.2BSD   2048 16384    1 # /usr/local
  i:          4018368         34417120  4.2BSD   2048 16384    1 # /usr/src
  j:          4018368         38435488  4.2BSD   2048 16384    1 # /usr/obj
  k:         35702272         42453856  4.2BSD   2048 16384    1 # /home

Multiboot Durumunda MBR ve EBR ile Olası Sorunlar

UNIX (BSD) sistemler geçmişte sadece iş istasyonu ve sunucu gibi tek bir işletim sisteminin kurulduğu ve çalıştırıldığını düşünecek olursak FreeBSD – ve PC-BSD – birincil disk bölümü üzerinde kurulmak durumunda olması normal bir durumdur. OpenBSD ve NetBSD her ne kadar tek sistem olarak kurulacak olsa da birincil disk bölüm üzerinde ilk birincil disk bölümüne kurulmamaktadır. Disk bölümleme tablosunun incelenmesi ile bu durum görülebilir. Linux dağıtımları için sistemde birinci işletim sisteminin Windows olmasından dolayı ikinci işletim sistemi olarak uzatılmış disk bölümü üzerinde mantıksal sürücüde kurulabilmesi olağan bir durumdur. Bu nedenle Windows ile birlikte Linux dağıtımını kurup kullanmak için disk bölümleme ve kurulum araçları uzatılmış disk bölümleri üzerindeki mantıksal sürücüleri düzenleyerek kullanabilmektedir. Bu farklı çözümlerin nasıl işlediğinin kavranmadan yapılacak olan kurulumlar sadece disklerde veri ve/veya zaman kayıplarına neden olacaktır.

Uzatılmış disk bölümlerinin kullanıldığı Windows + Linux dağıtımı aynı disk üzerine kurulması söz konusu olduğunda bir sıkıntı yaratmayacaktır. Ancak bir UNIX sistemi disk üzerindeki boş alana kurmak istemeniz durumunda kurulum gerçekleşmiş olsa da kullanılan mevcut açılış yöneticisi uygulaması – LILO veya GRUB gibi – sonradan kurulum yaptığınız UNIX sistemi eklemeyecektir. Bunun temel nedeni disk bölümleme tablosunun uzatılmış bölümler kullanılması durumunda MBR değil EBR olarak düzenlenmekte olmasıdır. Kurulum aşamasında birincil disk bölümlerinin gösterilmesi gerekirken UNIX sistemin disk bölümleme uygulaması uzatılmış disk bölümlerini okuyabilir ve yeni kurulum yapılan sisteme ait olan disk bölümünü de EBR tablosuna ekleyecektir. Ancak açılış yöneticisi EBR tablosu üzerinde gerçekleştirilen yeni düzenlemeyi uzatılmış disk bölümlerinin iç içe geçtiğini belirterek yeni sistemi açmak için kayıt oluşturmayacaktır.

Bu durum sadece var olan Windows + Linux dağıtımı kurulumu senaryosu için değil aynı zamanda birincil disk bölümü ve yanında uzatılmış disk bölümü üzerinde oluşturulan mantıksal sürücülerin kullanılarak kurulan Linux dağıtımı senaryosunda da ortaya çıkacaktır. Bu durumda sabit disk üzerinde boş alan bulunsa ve UNIX(BSD) kurulumunu gerçekleştirmiş olsanız da GRUB veya LILO sistemi başlatmayacaktır.

Çözümler

UNIX (BSD) sisteminizi ile başka bir işletim sistemi – örneğin Windows ve/veya Linux dağıtımı gibi – birlikte kullanacaksanız kurulum sırası önem kazanmaktadır. fdisk Windows, Linux dağıtımları ve başka işletim sistemlerinde bulunmakta ve işletim sistemlerinin kurulum uygulamaları disk üzerinde boş alan veya kurulum için UNIX(BSD) dosya sistemi için alan ayırabilmektedir. Bu şekilde yapılan kurulum da sorun olması olasıdır. Bunun nedeni fdisk'in standart bir araç olmayıp her bir işletim sistemi için ayrı olarak yazılmış olması ve UNIX(BSD) sistemlerde fdisk yanında başka araçların kullanılmasıdır. UNIX(BSD) sistemi kurmak için kullanılan kurulum uygulamaları bir arayüz sunar. Disk bölümleme aşamasında ise newfs, disklabel ve fdisk kullanılır. Bu üç araç BSD işletim sistemi ailesinde standart araçlar olarak temel sisteminin bir parçasıdır. Ancak birbirleri ile uyumlu değildir. Dolayısıyla FreeBSD, OpenBSD ve NetBSD hem tek sistem hem de birlikte kullanılabilirler. Ancak yine her biri kendi araçları ile kurulmak durumundadır.

Multiboot Çözümleri

UNIX (BSD), Windows ve Linux dağıtımını hepsini veya ikisini birlikte sabit diskinize kuraup kullanacaksanız şu noktalara dikkat etmeniz gereklidir:

FreeBSD – PC-BSD ve Windows: Birinci disk bölümüne kurulacaktır. Windows ile birlikte kullanacaksanız ilk olarak Windows'u sadece sabit diskin bir bölümüne kurun. Geri kalan boş alana FreeBSD – PC-BSD kurun. Açılış yöneticisi olarak FreeBSD boot0cfg(8) kullanabilirsiniz. Açılışta FreeBSD veya Windows arasında seçim yapmanızı sağlar.

FreeBSD – PC-BSD ve Bir Linux Dağıtımı: İlk olarak freeBSD – PC-BSD sabit diske kurup sorna kurulucak sistem için yer ayırın. Linux dağıtımını ayrılan yere kurabilirsiniz. Açılış yöneticisi olarak boot0cfg(8) veya GRUB/LILO kullanabilirsiniz. Eğer boot0cfg(8) kullanacaksanız GRUB/LILO Linux dağıtımının kurulduğu disk bölümün ilk sektörüne kurulmalıdır. Böylelikle Linux seçeneği seçildiğinde GRUB/LILO ekranı karşınıza gelecektir. Eğer GRUB/LILO kullanılacak ise GRUB/LILO menüsüne ilgili açılış kayıdı eklenmelidir. Bu durumda sistem açıldığında GRUB/LILO ekranı gelecek ve menüden ilgili sistem seçilerek başlatılacaktır.

FreeBSD – PC-BSD, Windows ve Bir Linux Dağıtımı:Sırasıyla Windows, FreeBSD – PC-BSD ve ardından Linux dağıtımı kurularak kullanılabilir. FreeBSD boot0cfg(8) kullanılması ile Windows, FreeBSD ve Linux (GRUB/LILO) hepsine birden ulaşılabilir.

FreeBSD – PC-BSD ve OpenBSD: Bu kurulum için öncelikle FreeBSD diskte ayrılan alana kurulup ardından boş alana OpenBSD kurulabilir. OpenBSD ait olan / bölümü ise 4diskin ilk 128GB alanında olması zorunludur. Bunun göz önüne alınması gerekir. Açılış yöneticisi olarak boot0cfg(8) kullanılmalıdır. Mümkünse iki ayrı diske her birinde tek işletim sistemi olacak şekilde kurulum yapmak en ideali olacaktır. Olası bir disk hatasında her iki sistem birbirinden bağımsız olacağı için kolaylıkla diğeri başlatılabilir.

OpenBSD ve Windows : Standart olrak Windows'u disk üzerinde ayırdığınız bir bölüme kurduktan sonra boş kalan alan OpenBSD kurabilirsiniz. OpenBSD bir açılış yöneticisi sunmadığı için doğrudan Windows açılış mekanizmasına OpenBSD bir seçenek olarak ekleyebilir ve Windows açılışı sırasında OpeBSD seçerek ulaşabilirsiniz. Windows ile devam etmek için Windows'u seçin yeter.

OpenBSD ve Linux dağıtımı :Linux dağıtımı ile OpenBSD birlikte kullanmak niyetinde iseniz iki farklı kurulum söz konusu olabilir. Birincisinde OpenBSD kurup ardından Linux dağıtımını kurabilirsiniz. İkinci seçenekte ise Linux dağıtımını kurulu olan sistemde sadece MBR disk bölümleri kullanılmış olmak üzere MBR bölüm sayısı sınırını aşmayacak şekilde birincil bölümler oluşturularak kurulum gerçekleştirilebilir. Bu aşamadan sonra OpenBSD kurup GRUB/LILO güncellenerek kullanılabilir.

OpenBSD, Windows ve Linux dağıtımı: Bu senaryo için sırası ile Windows, OpenBSD ve Linux dağıtımı yaklaşımı en kolayı olacaktır. İşletim sistemi sayısı artmış olduğu için birincil disk bölümü sayısı sınırına ulaşmak söz konusu olacağı için Linux dağıtımını uzatılmış disk bölümleri üzerinde mantıksal sürücüler oluşturup kullanmasını sağlayabilirsiniz.

FreeBSD – PC-BSD, OpenBSD, Windows, NetBSD, Linux dağıtımı: Bu senaryo maalesef gerçekçi değildir. MBR bölümleri sayısının sınırlı olması yanında işletim sisteminin başlatılacak olan kodunun BIOS tarafından öngörülen sınır içerisinde kalması (504 MB, 2Gb, 128 GB gibi) zorunludur. Bu sınırın aşılmaması gereklidir. Eğer ısrarla bunu yapmak istiyorsanız sanallaştırma yazılımlarından birisini kullanıp sevdiğiniz işletim sistemi üzerinde sanal donanımlar üzerinde istediğiniz kadar sistem kullanabilirsiniz. Bir dieğer seçenek ise sistem takabileceğiniz disk sayısını arttırıp disklere kurabildiğiniz kadar işletim sistemi kurup bir açılış yöneticisi ile başlatmayı deneyebilirsiniz.

2 yorum:

  1. [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

    Sitedeki yazılar çok hoş. Ama Google Reader'dan okumak istediğimde tüm metni göremiyorum. Sadece ilk paragraflar okunabiliyor. Bilgisayar başındayken pek problem değil ama telefondan Google Reader'a takılırken sıkıntılı oluyor. Sanırım sitenin mobil sürümü de yok.

    Sakıncası yoksa bi ayar verebilir misin? :)

    YanıtlaSil
  2. İlgilendiğin ve beğendiğin için teşekkürler. Mobil sürüm için gereken düzenlemeyi aktifleştirdim. Umarım sorunsuz olarak görüntüleniyordur.Bir sorun varsa bildirmen yeterli.

    YanıtlaSil