Category Archives: OS

มารู้จัก Grub4Dos กันเถอะ – Boot loader ที่มีความสามารถสูง

ที่มา: http://grub4dos.sourceforge.net/wiki/index.php/Grub4dos_tutorial

Grub4Dos สามารถใช้งานได้ทั้ง Linux, Windows
แต่บทความฉบับนี้จะเน้นที่การทำงานกับ Windows นะครับ

ก่อนอื่น ถ้าเราจะใช้งาน Grub4Dos เราต้องติดตั้ง Grub4Dos ลงบน MBR (ชุดโปรแกรมที่ให้คอมพิวเตอร์เริ่มต้นทำงานบนฮาร์ดดิส sector แรก) เสียก่อน

และ Grub4Dos จะทำงานได้ ก็จะต้องมีไฟล์ประกอบอีก 2 ไฟล์ คือ grldr และ menu.lst (คล้ายๆ NTLDR, NTDETECT.COM และ boot.ini ของวินโดส์)

อ่านเพิ่มเติม

(ช่วยจำ) ลง Windows 7 เสร็จใหม่ๆ แล้วจอดำค้าง ไม่บูทเข้าวินโดส์

พอลงวินโดส์เสร็จใหม่ๆ เครื่องรีสตาร์ทขึ้นมา แล้วค้างที่หน้าจอ แล้วขึ้นจอดำค้างอยู่อย่างนั้น

ลองเปลี่ยนแผ่นวินโดส์ก็ไม่หาย
fix boot ก็ไม่หาย
ทำ repair ก็ไม่หาย

ตอนนี้แก้ไขได้แล้ว คือ
1. ให้ Format Partition ใหม่ ตอนลงวินโดส์ (ไม่ใช้พาติชั่นจากที่ให้ acronis แบ่งให้จากการใช้แผ่น Hiren)
ทำแบบนี้แล้วพอลงวินโดส์เสร็จ รีสตาร์ทใหม่ จะบูทเข้าวินโดส์ได้

รู้จักไฟล์ Boot.ini (วินโดส์ xp)

ไฟล์ Boot.ini เป็นไฟล์ระบบที่สำคัญไฟล์หนึ่งสำหรับวินโดส์ แต่ท่านทราบหรือไม่ว่ามันทำอะไรได้บ้าง

การแก้ไขไฟล์ boot.ini ต้องใช้ความระมัดระวังเป็นพิเศษ ถ้าแก้ไขผิดพลาด อาจจะทำให้ไม่สามารถบูทเข้าวินโดส์ได้เลย ดังนั้น ก่อนเริ่มทำการแก้ไขใดๆ ท่านควรสำรองไฟล์ระบบไว้ก่อน

Boot.ini เป็นไฟล์ระบบ ถูกตั้งให้เป็น hidden และ read-only เมื่อเครื่องคอมพิวเตอร์เริ่มบูท มันจะไปเรียกไฟล์ ntldr ให้บูทวินโดส์
ในระหว่างขบวนการบูท ntldr จะไปอ่านไฟล์ boot.ini เพื่อหาว่า ระบบปฏิบัติการเก็บอยู่ที่ตำแหน่งใด

Boot.ini ประกอบไปด้วย 2 ส่วนหลักๆ คือ 1. ส่วน [boot loader] และ 2. [operating systems].

1. ส่วน [boot loader] จะบอก Ntldr ว่าระบบปฏิบัติการใดเป็น default ของระบบ.

2. ส่วน [operating systems] จะบอกว่า มีระบบปฏิบัติการใดบ้างในเครื่องของเราที่สามารถโหลดได้
โดยทั่วไปคำสั่งภายในของไฟล์ Boot.ini มีลักษณะดังนี้:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(5)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(5)\WINNT=”Microsoft Windows 2000 Server” /fastdetect
multi(0)disk(0)rdisk(0)partition(4)\WINNT=”Windows NT Server Version 4.00″
multi(0)disk(0)rdisk(0)partition(4)\WINNT=”Windows NT Server Version 4.00 [VGA mode]” /basevideo /sos
C:\=”PC-DOS”

1. ส่วน [boot loader]
[boot loader] ประกอบไปด้วย 2 ส่วนย่อย คือ

1.1 timeout=. คือแทนระยะเวลาหน่วยเป็นวินาทีในการรอให้คนเลือกระบบปฏิบัติการอื่น
* ค่าปกติคือ 30 วินาที
* สามารถตั้งได้สูงสุด คืิอ 999
* ถ้าตั้งเป็น -1 เครื่องจะให้คนเลือกเมนูแบบ manual

1.2 default=. คือระบบปฏิบัติการที่เราต้องการให้เป็นหลัก

2. ส่วน[operating system]
ส่วน [operating system] สามารถใส่ระบบปฏิบัติการได้ถึง 10 ถ้าใส่เกิน ntldr จะอ่านแค่ 10 รายการแรก

แต่ละบรรทัดคำสั่ง อาจจะดูสับสน แต่ถ้าคุณเข้าใจตัวแปรแต่ละตัวแล้ว จะเข้าใจได้ง่ายและเร็วเลย
แต่ละบรรทัดจะประกอบได้ด้วย ตำแหน่ง, คำอธิบาย, ตัวเลือก (a path, a description, and optional switches for the operating system)

The easiest part of the line to understand is the description. It’s the second part of each line and is enclosed by quotes.

The other parts of the line are more confusing. The first section, identifiable by all of the ()’s it contains, is known as the ARC path. ARC paths define the location of a file based on physical location. It breaks down the location based on the controller card, physical disk, and partition on which the directory is stored.

For example, let’s look at the ARC path multi(0)disk(0)rdisk(0)partition(1)\WINNT. The first part—either multi or scsi—identifies the physical disk controller number beginning with a value of 0. Scsi usually refers to a SCSI control with its BIOS disabled. Multi normally refers to an IDE drive, but it can also identify any non-SCSI controller or a SCSI controller with its BIOS enabled.

The second and third parts—disk and rdisk—are dependent on the multi or scsi values mentioned above. Only one is used, even though the ARC path always contains both entries. Both the disk and rdisk parameters indicate the physical disk used. If the first parameter is multi, the disk parameter is ignored. Alternatively, if the first parameter is scsi, the disk parameter is used and the rdisk parameter is ignored. Like the controller parameter, the counter associated with the hard disk parameter begins at 0 and increases from there.

The fourth part—partition—indicates the partition on the disk specified in either the second or the third part. Unlike the first three parts, the counter for the partition begins at 1 and goes up from there.

The final part is the path on the partition described in which the NT boot files are located. Normally, this path is set to WINNT.

The third part of the entry on an [operating system] line contains optional switches for the operating system. These switches allow you to boot special configurations of the operating system. An example of this is the familiar “VGA Mode” choice with its respective options. Switches are always preceded by a/. There are many different switches you can use, including:

* /basevideo—Causes NT to boot using the standard VGA driver, set to 640X480 resolution. This can be handy if your regular video driver becomes damaged.
* /baudrate—Specifies the baud rate to be used for debugging. If you do not set the baud rate, the default baud rate is 9600 with a modem attached, and 19200 for a null-modem cable.
* /bootlog—Makes Windows 2000 write a log of the boot to the file %SystemRoot%\NTBTLOG.TXT.
* /crashdebug—Turns on Automatic Recovery And Restart, which controls how Windows reacts when it crashes.
* /debug—Turns on the NT debugger which can then be activated by a host debugger connected via modem or null-modem cable. You’ll probably only use this if you’re a programmer.
* /debugport= comx—Specifies the com port to use for debugging.
* /fastdetect—Turns off serial and bus mouse detection at boot time.
* /maxmem:n—Specifies the maximum amount of RAM that Windows can use.
* /nodebug—Turns off debugging.
* /noguiboot—Turns off the GUI splash screen when the server starts.
* /noserialmice[=comx,y,z]—Disables detection of serial mice on the specified com port(s).
* /numproc=n—Only allows a certain number of processors to work in a multiprocessor system.
* /onecpu—Only uses the first CPU in a multiple processor system.
* /pae—Allows a server that supports physical address extension (PAE) mode to start normally. In safe mode, the computer starts using normal kernels even if the /PAE switch is specified.
* /safeboot:xxx—This switch forces Windows 2000 to launch in safe mode. You must specify one of three additional switches: MINIMAL, NETWORK, or DSREPAIR. The MINIMAL switch doesn’t load network support. The NETWORK switch corresponds to a safe boot with network support. The DSREPAIR (Directory Services Repair) switch causes NT to boot into a mode where you can restore Active Directory from backup.
* /sos—Displays the driver names while they are being loaded.
* /win95—You’ll probably never use this switch. It only works on a triple-boot system that has DOS, Win9x, and Windows NT installed. Specifying the /win95 switch directs NTLDR to boot the Win9x boot sector stored in BOOTSECT.W40.
* /win95dos—Like the /win95 switch, you’ll probably never use this switch. It only works on a triple-boot system that has DOS, Win9x, and Windows NT installed. Specifying the /win95dos switch directs NTLDR to boot the DOS boot sector stored in BOOTSECT.DOS.

The [operating system] section may contain entries that don’t include ARC paths. Normally, this represents an entry for a previous operating system, such as MS-DOS or Windows9x. If this is the case, you’ll see a conventional path such as c:/.

บทสรุป

ไฟล์ระบบของวินโดส์จำนวนมาก ทำให้เราสับสนได้ ในจำนวนนี้ มีไฟล์ boot.ini ซึ่งเป็นหนึ่งในไฟล์ระบบที่สำคัญของวินโดส์
Boot.ini จะควบคุมเวลา และระบบปฏิบัติการที่เราจะใช้ ซึ่งได้อธิบายไปในตอนต้นแล้ว
ก่อนทำการแก้ไข ควรสำรองข้อมูลไว้ก่อนด้วยนะครับ

ที่มา. ขออภัย หาไม่เจอ

รู้จักกับ NTLDR

NTLDR (เป็นตัวย่อของคำว่า NT loader) เป็น boot loader ตัวหนึ่งของระบบปฏิบัติการ Microsoft’s Windows NT (2003 Server, XP)

โดยทั่วไป NTLDR จะทำงานจาก ฮาร์ดดิสลูกแรก แต่มันก็สามารถทำงานจาก portable storage devices ได้ เช่น CD-ROM, USB flash drive, หรือ floppy disk.

NTLDR ยังสามารถโหลดระบบปฎิบัติการที่ไม่ใช่ตระกูลวินโดส์ NT ได้ด้วย โดยการโหลด boot sector ของระบบปฏิบัติการที่ต้องการในรูปแบบของไฟล์

NTLDR ต้องการอย่างน้อย 2 ไฟล์ให้เก็บอยู่บนระบบ

* ไฟล์ NTLDR ซึ่งภายในบรรจุตัว main boot loader ของตัวเองอยู่
* ไฟล์ boot.ini ซึ่งภายในเก็บข้อมูลเกี่ยวกับ เมนูบูทของแต่ละระบบปฏิบัติการ

สำหรับการบูท OS ตระกูล NT-based ไฟล์ ntdetect.com จะถูกใช้งานด้วย
(ซึ่งจริงๆแล้ว ไฟล์ NTLDR ไฟล์เดียวเท่านั้นที่ระบบต้องการ ถ้าไฟล์ boot.ini หาย NTLDR จะไปบูทที่ \Windows บนพาติชั่นแรกฮาร์ดดิสลูกแรกโดยอัตโนมัติ)

แต่สำหรับ Vista ไฟล์ข้อมูลการบูทจะถูกเก็บไว้ในรีจิสตรี หรือที่เรียกว่า Boot Configuration Data (BCD)
ซึ่งการแก้ไขข้อมูลการบูทสามารถเรียก bcdedit.exe เพื่อแก้ไข BCD ได้

Volume Boot Record จะถูกเขียนลงในดิส โดยคำสั่ง format ของวินโดส์ตระกูล NT ซึ่งจะมีหน้าที่ในการโหลด ntldr

สำหรับ Windows Vista, Windows Server 2008, and later releases ไฟล์ NTLDR จะถูกแทนที่ด้วย boot loader ตัวใหม่ ซึ่งประกอบไปด้วย 2 ส่วน คือ 1. winload.exe และ 2. Windows Boot Manager.

กระบวนการทำงานเมื่อเริ่ม Startup

เมื่อเริ่มบูท NTLDR จะทำงานดังนี้

1. Accesses the file system on the boot drive (either FAT or NT File System, NTFS).
2. If hiberfil.sys is found, and it also finds a hibernation image, its contents are loaded into memory and the system resumes where it left off.
3. Otherwise, reads boot.ini and prompts the user with the boot menu accordingly.
4. If a non NT-based OS is selected, NTLDR loads the associated file listed in boot.ini (bootsect.dos if no file is specified or if the user is booting into a DOS based OS) and gives it control.
5. If an NT-based OS is selected, NTLDR runs ntdetect.com, which gathers information about the computer’s hardware. (If ntdetect.com hangs during hardware detection, there is a debug version called ntdetect.chk that can be found on Microsoft support.[1])
6. Starts Ntoskrnl.exe, passing to it the information returned by ntdetect.com.[2]

boot.ini

NTLDR allows the user to choose which operating system to boot from at the menu. For NT and NT-based operating systems, it also allows the user to pass preconfigured options to the kernel. The menu options are stored in boot.ini, which itself is located in the root of the same disk as NTLDR.

For NT-based OSs, the location of the operating system is written as an Advanced RISC Computing (ARC) path.

boot.ini is protected from user configuration by having the following file attributes: system, hidden, read-only. To make it editable, you must first unlock it with the following command using a console: attrib -s -h -r boot.ini. A more secure fashion to edit the file is to use the bootcfg command from a console. bootcfg will also relock the file (setting the file back to system, hidden, and read-only). Additionally, the file can be edited within Windows using a text editor if the folder view option “Show hidden files and folders” is selected, the folder view option “Hide protected operating system files” is unchecked, and the “Read-only” option is unchecked under file properties.

bootsect.dos is the boot sector loaded by NTLDR to load DOS, or if there is no file specified when loading a non NT-based OS.

Example

An example of a boot.ini file:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=”Microsoft Windows XP Professional” /fastdetect

If the boot loader timeout option in boot.ini is set to 0, the NTLDR boot menu does not appear. Extreme caution should be taken when modifying the boot loader, as erroneous information can result in an OS that fails to boot.

NT Kernel switches
NTLDR Bootloader’s Advanced Option Menu

* /3GB — Forces x86-based systems to increase the virtual address space allocated for user programs to 3 GB, and to decrease to 1 GB allocated to the kernel and to executive components. Used for some programs that require more than the standard 2 GB allocated to user programs and 2 GB allocated to the system. Some configurations of Windows Server 2003 that run virtual memory- intensive applications such as database servers or Microsoft Exchange Server 2003 may require this switch[3] or may benefit from improved performance[4].
* /BASEVIDEO — Forces the system into standard 640×480 16-color VGA mode by using a video device driver that is compatible with any video adapter. If the operating system fails to load due to a faulty or incorrectly-configured video driver, this switch allows the system to load, so the user may then remove, update, or roll back the problem video driver. Using this switch in conjunction with the /SOS switch helps to determine the driver that is triggering a failure.[3]
* /BAUDRATE=nnn — Sets the baud rate of the debug port that is used for kernel debugging. Use of this switch automatically enables the /DEBUG switch.[3] Specifies an override for the default baud rate (19200) at which a remote kernel debugger host will connect.[4] Example: /BAUDRATE=115200.
* /BOOTLOG — Turns on boot logging to a file named %SystemRoot%\Ntbtlog.txt.[3]
* /BOOTLOGO — Displays an alternate 640×480 16-color custom bitmap. The bitmap must be saved in the \Windows directory with the name boot.bmp. Use with the /NOGUIBOOT switch.[4]
* /BURNMEMORY=nnn — Specifies the amount of memory, in megabytes, that Windows cannot use. Use this parameter to confirm a performance problem or other problems that are related to RAM depletion.[3]
* /CHANNEL=nn — Use with the /DEBUG switch and the /DEBUGPORT=1394 switch to selects the IEEE 1394 interface channel (numbered 0 to 62) through which kernel debugging communications will flow.[3]
* /CRASHDEBUG — Loads the kernel debugger at OS startup, but it remains inactive until a Stop Error occurs. With this switch, the COM port can be used for normal operations while Windows is running. If Windows crashes, the switch converts the port to a debug port. (This action turns on remote debugging.)[3]
* /DEBUG — Turns on the kernel debugger when Windows starts. Unlike the /CRASHDEBUG switch, /DEBUG uses the COM port whether you use debugging or not.[3]
* /DEBUGPORT=comx — Specifies the COM port to use for the debug port. By default, /DEBUGPORT uses COM2 if it exists. Otherwise, the default is COM1. Use of this switch automatically enables the /DEBUG switch.[3]

* /FASTDETECT[:comx[,comy]] — Turns off serial and bus mouse detection for the specified port(s), or for all ports if none are specified. Use this switch when there is a component other than a mouse attached to a serial port during the startup process. Ports may be separated with commas to turn off more than one port. (Note: In earlier versions of Windows, including Windows NT 4.0, this switch was named /NOSERIALMICE.)[3]
* /HAL=filename — Defines the Hardware Abstraction Layer that is loaded at startup. This switch is useful to try out a different HAL before you rename the file to HAL.DLL. This switch is also useful when you want to try to switch between starting in multiprocessor mode and starting in single processor mode. To do this, use this switch with the /KERNEL switch.[3]
* /KERNEL=filename — Defines the kernel that is loaded at startup. With this switch, you can switch between a debug-enabled kernel that is full of debugging code and a regular kernel.[3]
* /MAXMEM=nnn — Specifies the maximum amount of RAM, in megabytes, that Windows can use.[3] However, the /MAXMEM switch does not account for memory holes. Therefore, it is recommended to use the /BURNMEMORY switch instead.[5]
* /MININT — This option is used by Windows Preinstallation Environment (WinPE) and loads the Registry SYSTEM hive as a volatile hive such that changes made to it in memory are not saved back to the hive image.[4]
* /NODEBUG — Turns off debugging. This scenario can cause a Stop Error if a program has a debug hardcoded breakpoint in its software.[3]
* /NOEXECUTE={OPTIN|OPTOUT|ALWAYSON|ALWAYSOFF} — This option is only available on 32-bit versions of Windows when running on processors supporting Data Execution Prevention (DEP). It enables DEP, which results in the memory manager marking pages containing data as no-execute so that they cannot be executed as code. This can be useful for preventing malicious code from exploiting buffer overflow bugs with unexpected program input in order to execute arbitrary code. No-execute protection is always enabled on 64-bit versions of Windows on processors that support no-execute protection. There are several options you can specify with this switch:[4]
o /NOEXECUTE=OPTIN — Enables DEP for core system images and those specified in the DEP configuration dialog.
o /NOEXECUTE=OPTOUT — Enables DEP for all images except those specified in the DEP configuration dialog.
o /NOEXECUTE=ALWAYSON — Enables DEP on all images.
o /NOEXECUTE=ALWAYSOFF — Disables DEP.
* /NOGUIBOOT — Disables the bitmap that displays the progress bar for Windows startup.[3] This also disables the text output by chkdsk.[citation needed]
* /NOPAE — Forces Ntldr to load the non-Physical Address Extension (PAE) version of the Windows kernel, even if the system is detected as supporting x86 PAEs and has more than 4 GB of physical memory.[4]
* /NOSERIALMICE[=comx] — (Obsolete on all versions post-Windows NT 4.0) Replaced by the absence of the /FASTDETECT switch. Disables serial mouse detection on the specified COM ports. Using /NOSERIALMICE without specifying a COM port disables serial mouse detection on all COM ports.[4]
* /NUMPROC=nnn — Sets the number of processors that Windows will run at startup. With this switch, you can force a multiprocessor system to use only the quantity of processors (number) that you specify. Useful for troubleshooting performance problems and defective CPUs.[3]
* /ONECPU — Equivalent to using /NUMPROC=1. Causes Windows to use only one CPU on a multiprocessor system.[4]
* /PAE — Enables Physical Address Extension support. In Safe Mode, the computer starts by using normal kernels, even if the /PAE switch is specified.[3]
* /PCILOCK — For x86-based systems, this stops the operating system from dynamically assigning hardware input, hardware output, and interrupt request resources to PCI devices. Instead, the BIOS configures the devices.[3]
* /REDIRECT — Turns on Emergency Management Services (EMS) on a Windows Server 2003, Enterprise Edition-based computer. To turn on EMS by editing the Boot.ini on an x86-based computer, edit both the [boot loader] section and the [operating systems] section of the Boot.ini file.[3]
* /SAFEBOOT:{MINIMAL|NETWORK|DSREPAIR}[(ALTERNATESHELL)] — Causes Windows to start in Safe Mode. You must include the colon plus one of the three types listed above. An additional option you can append is (ALTERNATESHELL), which tells Windows to use the program specified by the HKLM\SYSTEM\CurrentControlSet\SafeBoot\AlternateShell value as the graphical shell rather than to use the default, which is Windows Explorer.[4] You can also combine other boot.ini parameters with /SAFEBOOT:type. The following examples illustrate the parameters that are in effect when you select a Safe Mode option from the startup recovery menu. (Note: The /SOS, /BOOTLOG, and /NOGUIBOOT switches are not required with any one of these settings, but the switches can help with troubleshooting.) [3]
o Safe Mode (/SAFEBOOT:MINIMAL /SOS /BOOTLOG /NOGUIBOOT) — Default: Uses a minimal set of device drivers and services to start Windows.[6]
o Safe Mode with Networking (/SAFEBOOT:NETWORK /SOS /BOOTLOG /NOGUIBOOT) — Default mode together with the drivers necessary to load networking.[6]
o Safe Mode with Command Prompt (/SAFEBOOT:MINIMAL(ALTERNATESHELL) /SOS /BOOTLOG /NOGUIBOOT) — Default mode, except that Cmd.exe starts instead of Windows Explorer.[6]
o Windows in Directory Services Restore Mode (/SAFEBOOT:DSREPAIR /SOS) — (This mode is valid only for Windows-based domain controllers.) Performs a directory service repair.[6]
* /SOS — Displays the device driver names while they are being loaded. Use with the /BASEVIDEO switch to determine the driver that is triggering a failure.[3]
* /USEPMTIMER — Specifies that Windows uses the Power Management Timer (PM_TIMER) timer settings instead of the Time Stamp Counter (TSC) timer settings if the processor supports the PM_TIMER settings.[3] By default, Windows Server 2003 Service Pack 2 (SP2) uses the PM timer for all multiprocessor APIC or ACPI HALs. If you are not running Windows Server 2003 SP2, you must force the computer to use the PM timer by using the /USEPMTIMER switch.[7]
* /USERVA=nnn — Customizes the amount of memory, in megabytes, that is allocated to processes when using the /3GB switch. This switch permits more page table entry kernel memory but still maintains almost 3 GB of process memory space.[6]
* /WIN95 — Directs Ntldr to boot the Windows boot sector stored in bootsect.w40.[4]
* /WIN95DOS — Directs Ntldr to boot the MS-DOS boot sector stored in bootsect.dos.[4]
* /YEAR — Instructs the Windows core time function to ignore the year that the computer’s real-time clock reports and instead use the one indicated. Example: /YEAR=2001. (This switch was created to assist in Y2K testing.)[4]

ที่มา: Wiki

เปรียบเทียบ Bootloader แต่ละค่าย

ที่มา : http://en.wikipedia.org/wiki/Comparison_of_boot_loaders

เปรียบเทียบคุณสมบัติ feature ต่างๆ

รายชื่อ ลิขสิทธิ์↓ การฝั่งตัว บูทจาก OS ที่สามารถบูทได้
MBR เท่านั้น MBR / VBR Floppy Hard Disk Second Hard Disk Logical partitions CD-ROM Floppy USB Zip LAN MS-DOS Windows 9x/Me Windows NT series Windows Vista Linux ReactOS MenuetOS OpenBSD Mac OS X
Acronis OS Selector ซื้อ ? Yes Yes Yes Yes Yes Yes Yes Yes ? Yes Yes Yes Yes Yes ? ? ? Yes
Boot Camp ซื้อ ? ? ? ? ? Yes ? Yes ? ? ? ? ? Yes Yes Yes ? ? ? Yes
BootIt Next Generation ซื้อ ? ? Yes Yes Yes Yes Yes Yes Yes Yes ? Yes Yes Yes Yes Yes ? ? ? ?
BootKey ซื้อ No No Yes No No No Yes Yes Yes No No Yes Yes Yes Yes Yes ? ? ? ?
bootman ? Yes No No Yes ? ? ? ? ? ? No Yes Yes No (boots NTLDR) No (boots Windows Boot Manager) No (boots GRUB or LILO) ? ? ? ?
BootX ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Yes ? ? ? Yes
Darwin Boot Loader ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Yes Yes
Das U-Boot ฟรี (GPL) ? ? ? Yes Yes Yes Yes Yes Yes No Yes ? ? ? ? Yes ? ? Yes (FreeBSD) ?
GAG ฟรี (GPL) Yes (SafeBoot) No Yes Yes Yes Yes Yes Yes Yes No No Yes Yes No (calls NTLDR) No (calls Windows Boot Manager) No (calls GRUB or LILO) No (calls bootloader) No (calls bootloader) No (calls bootloader) No
GRUB ฟรี (GPL) No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No (calls NTLDR) No (calls Windows Boot Manager) Yes No (calls FreeLoader) Yes Yes Yes
GRUB4DOS ฟรี (GPL) No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No (calls NTLDR) No (calls Windows Boot Manager) Yes ? ? ? ?
Gujin ฟรี (GPL) No Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes ? ? ? ?
LILO BSD license Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes ? ? Yes No (calls NTLDR) ? Yes ? ? Yes (calls biosboot) (FreeBSD, PC-BSD, …) ?
loadlin ฟรี (GPL) No No Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No Yes No No ? ?
Madboot ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
MasterBooter ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
NTLDR ซื้อ No Yes Yes Yes ? No No Yes Yes ? ? Yes Yes Yes No No (Calls GRUB4DOS) ? ? ? No (Calls Darwin bootloader)[1]
OSL2000 Boot Manager ซื้อ Yes Yes No Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes No (calls GRUB or LILO) ? ? ? ?
PLoP Bootmanager ฟรี ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Smart Boot Manager Open source Yes No Yes Yes Yes Yes Yes Yes ? ? ? Yes Yes Yes ? Yes ? ? Yes ?
SPFdisk Open source Yes Yes Yes Yes Yes ? ? Yes ? ? ? Yes Yes ? ? ? ? ? ? ?
Syslinux ฟรี (GPL) ? Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No (calls NTLDR) No (calls Windows Boot Manager) Yes ? ? ? ?
XOSL ฟรี (GPL) ? ? Yes Yes Yes Yes Yes ? No ? No Yes Yes Yes Yes Yes ? ? ? ?
zBoot Manager ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Windows Boot Manager ? ? Yes ? Yes Yes ? Yes Yes ? Yes ? ? Yes No (calls NTLDR) Yes No (calls GRUB or LILO) ? ? ? ?
FreeLoader (ReactOS Boot Loader) ฟรี (GPL) No Yes Yes Yes Yes ? Yes Yes Yes Yes ? Yes Yes Partial[2] No (calls Windows Boot Manager) Yes Yes ? ? ?
รายชื่อ ลิขสิทธิ์ การฝั่งตัว บูทจาก OS ที่สามารถบูทได้
MBR only MBR / VBR Floppy Hard Disk Second Hard Disk Logical partitions CD-ROM Floppy USB Zip LAN MS-DOS Windows 9x/Me Windows NT series Windows Vista Linux ReactOS MenuetOS OpenBSD Mac OS X
รายชื่อ advanced command scriptable supported device supported architecture supported filesystem supported OS supported executable supported protocol supported decompression others
GRUB Legacy Yes No ? i386(pc) FAT16, FAT32, Minix fs, Linux ext2fs, ReiserFS, JFS, XFS, VSTa fs FreeBSD, NetBSD, OpenBSD, GNU/Linux ELF TFTP gzip
GRUB 2 Yes Yes ? i386(pc, coreboot, olpc, mac), powerpc(mac, pegasos II), Sun UltraSparc(Sparc v9) ext2, ext3, ext4, ufs, minix, iso9660, udf, jfs, hfs, hfs+, afs, affs, sfs, xfs, reiserfs, tar, cpio, ntfs, FAT16, FAT32 Linux(pc, mac), FreeBSD(pc), OpenBSD(pc), NetBSD(pc) ? ? ?
LILO No No ? i386(pc) ext2, ext3, ffs, ffs2, iso9660, jfs, minix, ntfs, reiserfs, vfat, etc… ? ? ? bzip2, gzip
SYSLINUX ? ? ? ? ? ? ? ? ?
Yaboot No No ? PowerPC(Open Firmware) ext2, ext3, ? GNU/Linux, ? ? ? ?
RedBoot yes yes (boot only) ? ARM, Coldfire, H8300, x86, Freescale/Motorola 68000, MIPS, PPC, SH, SPARC, SPARCLite JFFS2 Linux, eCos ELF TFTP, serial (X-modem) gzip
Das U-Boot Yes Yes ? PPC, ARM, AVR32, Blackfin, Coldfire, IXP, Leon2, m68k, MicroBlaze, MIPS, NIOS, NIOS2, PXA, x86, StrongARM, SH2, SH3, SH4, … FAT, VFAT, ext2, ext3, jffs2, cramfs, reiserfs, yaffs2, ubifs, nfs 4_4bsd, Artos, Dell, Esix, FreeBSD, Irix, Linux, LynxOS, NCR, NetBSD, OpenBSD, pSOS, QNX, RTEMS, SCO, Solaris, SVR4, U-Boot, VXworks ELF, U-Boot image format TFTP, NFS, serial (S-Record, Y-Modem, Kermit binary protocol) bzip2, gzip
kboot ? ? ? i386 most supported by Linux Kernel (ext2, ext3, ext4, reiserfs, xfs, jfs, etc..) Linux ? HTTP, FTP, TFTP ? SSH, NFS support. kexec-based bootloader.
Runnix ? ? ? ? ? Linux ? ? ? kexec and syslinux based bootloader.
kexec-loader No No ? i386 most supported by Linux Kernel (ext2, ext3, ext4, reiserfs, xfs, jfs, etc..) Linux/multiboot ? No networking gzip (for kernel modules) Kernel/multiboot module support
NTLDR No No ? i386(pc) ? Windows ? ? ? default bootloader on Windows NT
FREELDR No No ? i386(pc), arm, powerpc ext2, fat12, fat16, fat32, iso, ntfs ReactOS, Linux, Windows NT 4.0, Windows2000, WindowsXP, Windows2003 ? ? ? clone of NTLDR
boot0 ? ? ? ? ? ? ? ? ? FreeBSD’s bootloader
extipl ? ? ? ? ? ? ? ? ? IBM IPL upper compatible
Multiple Boot Manager ? ? ? ? ? PC DOS, MS-DOS, Windows, OS/2, Linux, FreeBSD, NetBSD, OpenBSD, BeOS, B-right/V, Solaris, OPENSTEP, Plan 9, EOTA[3] ? ? ?
Rockbox bootloader ? ? ? ? ? Rockbox ? ? ?
bootload (Technologic Systems) ? ? ? ARM ? Linux ? ? ? Proprietary
Name advanced command scriptable supported device supported architecture supported filesystem supported OS supported executable supported protocol supported decompression others

MBR คืออะไร

MBR หรือ Master Boot Record คืออะไร

เมื่อท่านเปิดเครื่องคอมพิวเตอร์ขึ้นมา คอมพิวเตอร์รู้ได้อย่างไรว่าให้บูทเข้าระบบปฏิบัติการอะไร และทำงานอย่างไร

นั่นเป็นเพราะว่า เมื่อเปิดคอมพิวเตอร์ขึ้นมา คอมพิวเตอร์จะเริ่มประมวลผล โดยเริ่มจาก ไบออส (ไอซีตัวเล็กๆที่อยู่ในเมนบอร์ด) ซึ่งในขบวนการนี้จะมีรายละเอียดมาก เช่น การตรวจเช็คแรม ฮาร์ดดิส คีย์บอร์ด ฯลฯ ซึ่งผู้ผลิตคอมพิวเตอร์จะกำหนดไว้ว่าให้ไปอ่านข้อมูลไบออส โดยจะเริ่มที่ FFFF0h เสมอ

ในทำนองเดียวกันคอมพิวเตอร์จะเริ่มอ่านข้อมูลจากฮาร์ดดิสที่ตำแหน่งเริ่มต้นเดียวกันเสมอ ซึ่งจะมีข้อมูลเก็บอยู่ เช่น มีกี่พาติชั่น ซึ่งตำแหน่งนี้แหละที่เรียกว่า MBR

MBR นี่จะอยู่ที่ตำแหน่ง cylinder 0, head 0, sector 0 เสมอ ซึ่งคือ sector แรกของฮาร์ดดิสนั่นเอง

ในไบออสจะโปรแกรมให้เริ่มอ่านข้อมูลจากฮาร์ดดิสที่ตำแหน่ง MBR เป็นตำแหน่งแรก ซึ่ง MBR จะประกอบไปด้วย โครงสร้างดังนี้

1. Master Partition Table เป็นตารางเล็กๆที่เก็บข้อมูลพาติชั่นที่อยู่ในฮาร์ดดิสซึ่งสามารถมีได้ 4 พาติชั่น (Primary Partition) ในนี้และมี Active Partition ได้ 1 พาติชั่น (จึงเป็นที่มาของการมี logical partition เพื่อให้สามารถมีได้หลายพาติชั่น)

2. Master Boot Code เก็บโปรแกรมเล็กๆเพื่อบอกว่าจะให้คอมพิวเตอร์เริ่มทำงานที่พาติชั่นใด

ดังนั้น ถ้า MBR เสียหาย ก็จะทำให้ไม่สามารถบูทเข้าระบบปฏิบัติการได้เลย

โครงสร้างของ MBR

โครงสร้างของ Master Boot Record
ตำแหน่ง คำอธิบาย ขนาด (ไบท์)
6 ฐาน8 ฐาน10
0000 0000 0 รหัสพื้นที่ (Code area) 440
(max. 446)
01B8 0670 440 Optional Disk signature 4
01BC 0674 444 โดยทั่วไปคือศูนย์; 0x0000 2
01BE 0676 446 ตารางเก็บข้อมูลแต่ละ primary partitions
(16-byte entries จำนวน4ชุด, IBM Partition Table scheme)
64
01FE 0776 510 55h โค๊ดปิด ลงท้ายด้วย 0xAA55 เสมอ
2
01FF 0777 511 AAh
MBR, จำนวนขนาดทั้งสิ้น: 446 + 64 + 2 = 512