Sự khác biệt giữa các phân vùng có thể khởi động và không khởi động được


8

Sự khác biệt giữa phân vùng khởi động và không khởi động là gì? Tôi biết rằng người dùng không thể khởi động hệ thống từ một phân vùng được đánh dấu là không thể khởi động và có thể từ một khả năng khởi động được đánh dấu.

Tôi muốn biết về sự khác biệt cơ bản giữa các cờ phân vùng.


1
Có thể biết quá trình khởi động linux là gì có thể giúp bạn. ibm.com/developerworks/linux/l

@anon_anon Uh, bài báo đó, trong khi không nghi ngờ gì là một bài tốt, thì hơi cũ. Đó là từ năm 2006 và thảo luận về GRUB Legacy. Tôi nghĩ mọi thứ đã thay đổi một chút với GRUB 2. (Nếu không có gì khác, họ sử dụng các tên khác nhau cho " giai đoạn " khởi động trong GRUB 2 :). Tôi đã cố gắng xác định bản cập nhật DeveloperWorks của bài viết mà bạn đã liên kết cho GRUB 2, nhưng không được. Gần nhất tôi có thể đến là đây: Di chuyển sang GRUB 2 .
phi lý John

@Rony Ooops. Cập nhật câu trả lời của tôi.
phi lý John

Câu trả lời:


6

Mặc dù nó đã bị bỏ phiếu ... có thể vì ai đó nghĩ rằng nó không trả lời câu hỏi ... Tôi nghĩ rằng câu trả lời của @ Rony là một khởi đầu tốt để giải thích những gì bootlá cờ nói về. (Tôi thực sự đã lên kế hoạch bắt đầu câu trả lời của mình bằng một ví dụ tương tự như câu anh ấy cung cấp.)

Tôi đã sẵn sàng để lan man một câu trả lời về việc bootcờ như thế nào , tại thời điểm này, một tàn dư lịch sử thường bị bỏ qua (như ví dụ của @ Rony) từ thời kỳ mà ổ cứng nhỏ hơn và bộ nạp khởi động kém tinh vi hơn nhiều.

Nhưng sau đó tôi phát hiện ra điều này đã được nói trong câu trả lời cho câu hỏi này: Tùy chọn "Cờ có thể khởi động" khi cài đặt bản phân phối là gì?

Hơn nữa, còn có một liên kết đến một bài viết ngắn về Cờ khởi động có nội dung

  • " Chức năng chính của nó là chỉ ra cho bộ tải khởi động kiểu MS-DOS / MS Windows phân vùng để khởi động. Trong một số trường hợp, Windows XP / 2000 được sử dụng để gán phân vùng hoạt động cho chữ" C: ". "

Vâng, đây là lúng túng ...

Khi tôi tuyên bố rằng bootlá cờ là " tàn dư lịch sử ", tôi đã cho rằng đây là trường hợp vì rõ ràng GRUB không cần sử dụng nó. Chắc chắn Microsoft cũng sẽ " chuyển sang ".

Câu nói nổi tiếng thường được gán cho Oscar Wilde hóa ra lại quá đúng trong trường hợp này.

Dường như các trình tải MBR và PBR (Bản ghi khởi động phân vùng) được sử dụng bởi các hệ điều hành Windows DO mong muốn bootcờ được đặt chính xác.

Để kiểm tra điều này, tôi đã xóa cờ khởi động khỏi tất cả các phân vùng của máy ảo Windows 8. (Xem bên dưới. Nếu bạn tò mò, đây là một liên kết đến pastebin của kết quả BootInfo Script hoàn chỉnh )

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

Khi tôi xóa cờ từ cả hai phân vùng, tôi nhận được thông báo lỗi FATAL: INT18: BOOT FAILUREkhi tôi cố khởi động. (Tôi không chắc đó là từ bộ tải khởi động Windows MBR hay tương đương với VM của BIOS.)

Chỉ để xem điều gì sẽ xảy ra, tôi cũng đặt bootcờ trên phân vùng "sai", /dev/sda2thay vì /dev/sda1. Làm điều đó dẫn đến cửa sổ hiển thị trong hình dưới đây.

Windows không khởi động được cửa sổ lỗi

<sigh/>

Trải nghiệm này khiến tôi tự hỏi liệu Microsoft có còn sử dụng cùng một trình tải khu vực khởi động MBR mà họ đã sử dụng cho MS-DOS và Windows 3.0 / 3.1 không?


3

Tôi biết rằng người dùng không thể khởi động hệ thống từ một phân vùng được đánh dấu là không thể khởi động và có thể từ một khả năng khởi động được đánh dấu.

Từ ổ cứng máy tính xách tay

# 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

Từ USB Linux có thể khởi động

# 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

Chúng không có một phân vùng có khả năng khởi động, trong khi chúng đều có khả năng khởi động.


2

Chỉ cần một lá cờ trong bảng phân vùng. MBR tìm kiếm cờ trong các phân vùng và chạy từ phân vùng với cờ "khởi động".


0

Khi sử dụng Microsoft MBR truyền thống, mã trong MBR xác định cách thực hiện I / O đĩa và đi qua các phân vùng để xem cái nào được đánh dấu bằng cờ khởi động. Chỉ có một phân vùng nên được đánh dấu. Sau đó, nó kiểm tra khu vực đầu tiên của phân vùng đó và nếu nó được đánh dấu thích hợp, nó sẽ đọc khu vực đó và chuyển quyền kiểm soát đến khu vực đó. Nếu tôi nhớ chính xác, kiểm tra đó là khu vực kết thúc với 0x55 0xaa.

Phần còn lại của trách nhiệm khởi động rơi vào mã trong khu vực đó và mã mà nó lần lượt tải.

GRUB2 rất thường sử dụng MBR của riêng mình và xử lý, bỏ qua bit này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.