Perbedaan antara partisi bootable dan non-bootable

8

Apa perbedaan antara partisi yang dapat di-boot dan yang tidak dapat di-boot? Saya tahu bahwa pengguna tidak dapat mem-boot sistem dari partisi yang ditandai tidak dapat di-boot dan dapat dari satu yang ditandai dapat di-boot.

Saya ingin tahu tentang perbedaan mendasar antara flag partisi ini.

Sam
sumber
1
Mungkin mengetahui apa itu proses boot linux dapat membantu Anda. ibm.com/developerworks/linux/library/l-linuxboot
@anon_anon Uh, artikel itu, meski tidak diragukan bagus, sudah agak tua. Ini dari 2006 dan membahas GRUB Legacy. Saya pikir hal-hal telah berubah sedikit dengan GRUB 2. (Jika tidak ada yang lain, mereka menggunakan nama yang berbeda untuk " tahapan " boot di GRUB 2 :). Saya mencoba mencari pembaruan DeveloperWorks dari artikel yang Anda tautkan untuk GRUB 2, tetapi tidak. Yang paling dekat saya bisa datang adalah ini: Migrasi ke GRUB 2 .
rasional, John
@ Ron Ooops. Memperbarui jawaban saya.
rasional, John
kemungkinan duplikat dari Apa opsi "Bendera yang dapat dibooting" saat memasang distro?
Gilles 'SO- berhenti bersikap jahat'

Jawaban:

6

Meskipun suara turun ... mungkin karena seseorang mengira itu tidak menjawab pertanyaan ... Saya pikir jawaban Rony adalah awal yang baik untuk menjelaskan tentang bootbendera itu. (Saya sebenarnya berencana memulai jawaban saya dengan contoh yang mirip dengan yang dia berikan.)

Saya sudah siap untuk mengoceh jawaban tentang bagaimana bootbendera, pada saat ini, yang sering diabaikan (seperti contoh @ Rony menunjukkan) sisa sejarah dari periode ketika hard drive lebih kecil dan bootloader jauh lebih canggih.

Tapi kemudian saya menemukan ini sudah dikatakan dalam jawaban untuk pertanyaan ini: Apa itu opsi "Bendera yang dapat di-boot" ketika menginstal distro?

Terlebih lagi ada juga tautan ke artikel pendek tentang bendera Boot yang bertuliskan

  • " Fungsi utamanya adalah untuk menunjukkan boot loader tipe MS-DOS / MS Windows yang dipartisi untuk boot. Dalam beberapa kasus ini digunakan oleh Windows XP / 2000 untuk menetapkan partisi aktif huruf" C: ". "

Yah, ini memalukan ...

Ketika saya mengklaim bahwa bootbendera itu adalah " sisa sejarah ", saya berasumsi bahwa inilah masalahnya karena jelas GRUB tidak perlu menggunakannya. Tentunya Microsoft juga akan " pindah ".

Kutipan terkenal yang biasanya dikaitkan dengan Oscar Wilde ternyata terlalu benar dalam hal ini.

Tampaknya loader MBR dan PBR (Partition Boot Record) yang digunakan oleh sistem operasi Windows DO mengharapkan bootflag diset dengan benar.

Untuk mengujinya saya membersihkan flag booting dari semua partisi Windows 8 VM. (Lihat di bawah. Jika Anda penasaran, inilah tautan ke pastebin dari hasil lengkap Script BootInfo )

Drive: sda     
Disk /dev/sda: 26.8 GB, 26843545600 bytes
255 heads, 63 sectors/track, 3263 cylinders, total 52428800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

Partition  Boot  Start Sector    End Sector  # of Sectors  Id System

/dev/sda1               2,048       718,847       716,800   7 NTFS / exFAT / HPFS
/dev/sda2             718,848    52,426,751    51,707,904   7 NTFS / exFAT / HPFS

Ketika saya membersihkan bendera dari kedua partisi, saya mendapat pesan kesalahan FATAL: INT18: BOOT FAILUREketika saya mencoba untuk boot. (Saya tidak yakin apakah itu dari bootloader Windows MBR atau setara dengan BIOS dari BIOS.)

Hanya untuk melihat apa yang akan terjadi, saya juga mengatur bootbendera pada partisi "salah", /dev/sda2bukan /dev/sda1. Melakukan itu menghasilkan jendela yang ditunjukkan pada gambar di bawah ini.

Windows gagal memulai jendela kesalahan

<sigh/>

Pengalaman ini membuat saya bertanya-tanya apakah Microsoft masih menggunakan loader boot sector MBR yang sama yang mereka gunakan untuk MS-DOS dan Windows 3.0 / 3.1?

John yang tidak rasional
sumber
3

Saya tahu bahwa pengguna tidak dapat mem-boot sistem dari partisi yang ditandai tidak dapat di-boot dan dapat dari satu yang ditandai dapat di-boot.

Dari laptop harddisk

# fdisk  -l /dev/sda

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 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
Disk identifier: 0x47b94fbe

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048     1999999      998976   83  Linux
/dev/sda2         2000000     9999999     4000000   82  Linux swap / Solaris
/dev/sda3        10000000    89999999    40000000   83  Linux
/dev/sda4        90000000   976773167   443386584   83  Linux

Dari bootable USB Linux

# fdisk  -l /dev/sdb

Disk /dev/sdb: 8004 MB, 8004304896 bytes
247 heads, 62 sectors/track, 1020 cylinders, total 15633408 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
Disk identifier: 0x000a5395

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2097151     1047552   83  Linux
/dev/sdb2         2097152    15632383     6767616   83  Linux

Mereka tidak memiliki partisi bootable tunggal, sementara mereka semua dapat dibooting.

Rony
sumber
2

Hanya sebuah bendera di tabel partisi. MBR mencari bendera di partisi dan menjalankan dari partisi dengan bendera "boot".

Rufo El Magufo
sumber
0

Saat menggunakan MBR Microsoft tradisional, kode dalam MBR mengidentifikasi cara melakukan disk I / O dan menelusuri partisi untuk melihat mana yang ditandai dengan bendera yang dapat di-boot. Hanya satu partisi yang harus ditandai. Kemudian memeriksa sektor pertama dari partisi itu, dan jika ditandai dengan tepat, ia membaca sektor itu dan mentransfer kontrol ke sana. Jika saya ingat dengan benar, cek itu adalah bahwa sektor tersebut berakhir dengan 0x55 0xaa.

Sisa tanggung jawab untuk booting jatuh ke kode di sektor itu dan kode yang pada gilirannya memuat.

GRUB2 sangat sering menggunakan MBR dan prosesnya sendiri, mengabaikan bit ini.

John S Gruber
sumber