Difference between revisions of "Boot Process"

From AwkwardTV
Jump to: navigation, search
(New page: The Apple TV has 4 partitions: {| class="wikitable" style="border: 1px solid silver; background-color: whitesmoke; padding: 5px;" |- | '''EFI System Partition''' | [http://en.wikipedia.org...)
 
m
 
(4 intermediate revisions by 4 users not shown)
Line 39: Line 39:
 
As far as I can tell, '''Kernel: mach_kernel''' is never used.  
 
As far as I can tell, '''Kernel: mach_kernel''' is never used.  
  
'''2:''' '''Kernel Cache: mach_kernel.prelink''' is quickly loaded into RAM. This is why the AppleTV boots so quickly - no need for driver detection.
+
'''2:''' '''Kernel Cache: mach_kernel.prelink''' is quickly loaded into RAM. This is why the AppleTV boots so quickly - no need for driver detection. It is a collection of files compressed with [[LZSS]].
  
 
'''3:''' From '''Kernel Flags: rp=file:///OS.dmg''', the disk image '''Restore/OS.dmg''' becomes the system root. This is where/when critical system components are loaded.
 
'''3:''' From '''Kernel Flags: rp=file:///OS.dmg''', the disk image '''Restore/OS.dmg''' becomes the system root. This is where/when critical system components are loaded.
  
'''4:''' Later, effective root gets changed to '''OSBoot/''', albiet as a read-only filesystem. There are many symbolic links that lead to '''Media/Scratch''' to accommodate settings changes and updates to the running system.
+
'''4:''' Later, effective root gets changed to '''OSBoot/''', albeit as a read-only filesystem. There are many symbolic links that lead to '''Media/Scratch''' to accommodate settings changes and updates to the running system.
  
 
=== Testing so far ===
 
=== Testing so far ===
'''Kernel Cache: mach_kernel.prelink''' removed from '''com.apple.Boot.plist''', SSE2-compatible kernel placed at '''Restore/mach_kernel'''.
+
SSE2-compatible kernel placed at '''Restore/mach_kernel'''.
  
'''Kernel Flags: rp=file:///OS.dmg''' changed to '''Kernel Flags: rd=disk0s3'''. This changes the system root from '''Restore/OS.dmg''' to '''OSBoot'''. An SSE2-compatible Mac OS X system can be placed here, and its kernel boots, but hangs at trying to launch loginwindow. The original Apple TV boot.efi seems to have settings that interfere with "normal" operation. Replacing it with a stock 10.4.9 boot.efi causes boot to completely fail with an "Apple TV Question Mark" icon.
+
'''Kernel Flags: rp=file:///OS.dmg''' changed to '''Kernel Flags: rd=disk0s3'''. This changes the system root from '''Restore/OS.dmg''' to '''OSBoot'''. An SSE2-compatible Mac OS X system can be placed here, and its kernel boots, but hangs at trying to launch loginwindow. The original Apple TV '''mach_kernel.prelink''' cached kernel seems to have settings that interfere with "normal" operation.
 +
 
 +
'''Kernel Cache: mach_kernel.prelink''' removed from '''com.apple.Boot.plist''', boot fails with an "Apple TV Question Mark" icon. Apple-S boot shows missing kernel caches.
 +
 
 +
'''Kernel Flags: -v''' this enables [http://phoem.com/appletv-bootargs.html verbose boot] mode
 +
 
 +
Replacing boot.efi it with a stock 10.4.9 boot.efi causes boot to completely fail with an "Apple TV Question Mark" icon.
 +
 
 +
[[Category:Software]]

Latest revision as of 12:12, 9 May 2007

The Apple TV has 4 partitions:

EFI System Partition Wikipedia article
Restore: Contains restore/boot disk image
OSBoot Contains System Software
Media Holds iPod-esque file structure

Restore is the boot partition.

1: The Apple TV checks/runs the boot.efi file at Restore/boot.efi, which checks Restore/com.apple.Boot.plist for boot parameters:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Background Color</key>
	<integer>0</integer>
	<key>Boot Fail Logo</key>
	<string></string>
	<key>Boot Logo</key>
	<string>BootLogo.png</string>
	<key>Kernel</key>
	<string>mach_kernel</string>
	<key>Kernel Cache</key>
	<string>mach_kernel.prelink</string>
	<key>Kernel Flags</key>
	<string>rp=file:///OS.dmg</string>
</dict>
</plist>

As far as I can tell, Kernel: mach_kernel is never used.

2: Kernel Cache: mach_kernel.prelink is quickly loaded into RAM. This is why the AppleTV boots so quickly - no need for driver detection. It is a collection of files compressed with LZSS.

3: From Kernel Flags: rp=file:///OS.dmg, the disk image Restore/OS.dmg becomes the system root. This is where/when critical system components are loaded.

4: Later, effective root gets changed to OSBoot/, albeit as a read-only filesystem. There are many symbolic links that lead to Media/Scratch to accommodate settings changes and updates to the running system.

Testing so far

SSE2-compatible kernel placed at Restore/mach_kernel.

Kernel Flags: rp=file:///OS.dmg changed to Kernel Flags: rd=disk0s3. This changes the system root from Restore/OS.dmg to OSBoot. An SSE2-compatible Mac OS X system can be placed here, and its kernel boots, but hangs at trying to launch loginwindow. The original Apple TV mach_kernel.prelink cached kernel seems to have settings that interfere with "normal" operation.

Kernel Cache: mach_kernel.prelink removed from com.apple.Boot.plist, boot fails with an "Apple TV Question Mark" icon. Apple-S boot shows missing kernel caches.

Kernel Flags: -v this enables verbose boot mode

Replacing boot.efi it with a stock 10.4.9 boot.efi causes boot to completely fail with an "Apple TV Question Mark" icon.