远景论坛积分规则、等级制度说明远景服务 - 免费开通您的远景博客远景论坛 - 美化区Q&A 移动主站 电信镜像 网通镜像
展望Windows7 关注Win7X.Com赞助远景,在远景网站上刊登广告iPhone 权威中文论坛-WeiPhone注册@pcbeta.com邮箱 邮箱登陆
远景论坛论坛版主联合招募Plus计划看电影,就用快乐影音!远景招募首席美工设计师 详情请进远景论坛制度章程(200810)
发新话题
打印

OSX86引导文件研究

本主题由 TTNK 于 2008-9-30 13:41 限时置顶
刷BIOS支持EFI?这可真的牛````有成功的例子吗?
更新了/usr/standalone/i386文件夹中所有文件的作用,顶一下。
Leopard 10.5 -legacy on Intel PC
原版镜像+Pacifist+SSE2/SSE3破解+BrazilMac最新版kext文件
看来boot1h(它是一级引导文件)的确不是写的MBR,应该叫VBR(Volume Boot Record分区引导记录),因为写MBR是不能写512字节的,446字节之后有很多的分区信息,是不可能采用相同的文件来定义的。

真有兴趣的还可以继续研究。
1、用dd命令把你的OS X所在硬盘的MBR读出来;
dd if=/dev/diskX of=mbr.bin bs=446 count=1
2、然后与Chain0或boot0比较这个生成的文件看看就知道了;
3、另外,MBR的code部分是实模式的,应该可以直接反汇编出来看的;

参考文献是wiki上关于MBR的介绍。
我的博客
再次声明,所有PM,一律不回。。。
好帖子,有料,顶。
经过比较发现,MBR的内容就是boot0
附件: 您所在的用户组无法下载或查看附件
我的博客
再次声明,所有PM,一律不回。。。
再附上一张chain0与VBR(boot1h)的对比。大家可以看一下最后的错误信息对比,是不是很熟悉呀?
附件: 您所在的用户组无法下载或查看附件
我的博客
再次声明,所有PM,一律不回。。。
果然boot0就是抹掉了DPT的MBR
boot1h也只是被写到PBR而已。。
再补充一点说明:
我的这块硬盘全是HFS+的分区,晚上再贴上SATA(XP)硬盘MBR的内容比比看。
我的博客
再次声明,所有PM,一律不回。。。
好身的文章喔,看不懂
大大用了你的方法还是有问题,可以看看我这个要怎么解决吗

http://bbs.pcbeta.com/thread-218754-1-1.html
主板:        技嘉 GA-P35C-DS3R
CPU:        Intel Core 2 Duo E6550 2.33GHz
内存:        威刚 红色威龙DDR2 800 1GB x 2
硬盘:        IDE 500G硬盘+250 SATAII
光驱:        SATA 三星 DVD刻录机 TS-H653B
显卡:        蓝宝石X1950GT黄金版 512M
显示:        BenQ 24寸液晶显示器G2400W
电源:        TT 金刚KK450 额定350W 峰值450W
机箱:        CoolerMaster 酷冷至尊 仲裁者
这么好的帖子,可惜我想保存下来远景都不让。。。。
BOOT0如果我没记错的话
是写guid分区时必须的
ykkarr syn vilja vithr, ekar fricaya

My Blog Reopen
http://cid-2eafaa2f5a1c16fe.spaces.live.com/
Weekly builds of aMule CVS are in the blog
Currently aMule 2.2.1 Release
刚才研究了一下startfiletool的源程序,在每个HFS+的分区最初1024字节后有一个512字节的HFSPlusVolumeHeader,他的定义如下:
struct HFSPlusVolumeHeader
{
  UInt16        sig;
  UInt16        version;
  UInt32        attributes;
  UInt32        lastMountedVersion;
  UInt32        journalInfoBlock;
  
  UInt32        createDate;
  UInt32        modifyDate;
  UInt32        backupDate;
  UInt32        checkedDate;
  
  UInt32        fileCount;
  UInt32        folderCount;
  
  UInt32        blockSize;
  UInt32        totalBlocks;
  UInt32        freeBlocks;
  
  UInt32        nextAllocation;
  UInt32        rsrcClumpSize;
  UInt32        dataClumpSize;
  HFSCatalogNodeID nextCatalogID;
  
  UInt32        writeCount;
  UInt64        encodingsBitmap;
  
  HFSPlusForkData allocationFile;
  HFSPlusForkData extentsFile;
  HFSPlusForkData catalogFile;
  HFSPlusForkData attributesFile;
  HFSPlusForkData startupFile;
} __attribute__((packed));

startfiletool的作用是在磁盘上像存储其他文件一样随便找个空余的地方写入boot或者efi_boot,然后更新这个HFSPlusVolumeHeader,最重要的是更新了他的最后那个startupFile项,使它指向写入的boot文件的位置,这才能保证启动的时候调用这个boot,后者完成必要的工作(比如提供欺骗性的EFI信息)后启动mach_kernel.
至于envying前面提到的62kb的大小限制,我觉得是指对boot的要求吧,因为boot1h写在f分区前512字节内,怎么可能这么大呢。
这个是否可以用于解决用TOH抹盘而不能引导的问题呢?
My Dell Vostro1400 with:
Intel(R) Core 2 Duo CPU T7100@1.80GHz,1795 MHz x86, x86-64, MMX, SSE, SSE2, SSE3, SSSE3 | 1GX2 | Seagate ST9160821AS SATA 160GB
North Bridge: Intel Crestline-PM PM965 | South Bridge: Intel 82801HBM ICH8-DO
PCI Express 1.0 x16: nVIDIA GeForce 8400M GS (Dell) 128MB GDDR3 | SigmaTel STAC9228X @ Intel 82801HBM ICH8M - High Definition Audio Controller [B-0] PCI
Broadcom NetLink (TM) Fast Ethernet | Intel(R) PRO/Wireless 3945ABG Network Connection
OS: Vista Ultimate SP1 V275 | BIOS: Phoenix A01 07/Oct/2007
引用:
原帖由 sweec 于 2007-12-6 14:13 发表
至于envying前面提到的62kb的大小限制,我觉得是指对boot的要求吧,因为boot1h写在f分区前512字节内,怎么可能这么大呢。
62kb is the limit for boot or boot_efi, these two files are second stage booter are for loading mach_kernel.
我的博客
再次声明,所有PM,一律不回。。。
支持一下
  
CPU      AMD  4800+
主板       Biostar TF570 SLI
网卡       Marvell 88E1116
声卡       Realtek ALC888
显卡       ATI Radeon HD 2600 PRO
硬盘       ST3250620AS
[url=http://ip.ipwind.cn][url=http://ip.ipwind.cn/msn.png]http://ip.ipwind.cn/msn.png[/url][/url]
先顶了。再慢慢研究
系统版本:Mac OS X 10.5.2 (9C31)      Kernel 版本:   Darwin 9.2.0      ToH-9.2.0破解内核
VMware   XP深度精简
主板:GA-g33m-ds2r  |   硬盘:猛禽74G  |   显卡:8600GT  |   CPU:E6550  |   内存:红威龙2G*2
###系统问题:没问题###
写得好深啊,远景难得看到这样的帖子,但对初学者好像太难了,其实用虚拟机修复引导很方便的
哇 虽然看不怎么明白 但绝对是好文章 也直的好好学习
我看不懂 我还得努力学习
发新话题