脚本文件不变色_云主机装黑果实践(4):阿里轻量机上变色龙bootloader启动问题...

本文关键字:处理云主机上大镜像安装问题,编译 enoch 变色龙

在《云机装黑果实践系列》1-3中,我们完成了直到生成镜像的所有准备工作,现在要上机测试了,进入最困难的boot-机型适配调试了,这也是黑果技术最典型的实践密集点,结合搜索引擎从最最小依赖一点一点添加配置是唯一的流程(基本上,变色龙是appleboot+fake efi as bios发展来的,具体机型千千W,云主机又特点,这种适配和调试工作变数和坑很多),我选的是一台阿里云轻量云主机,第一步是把镜像传上去。对于一个7G展开20G的打包镜像,moeclub的installnet.sh其内部使用的是wget gunzip输出到stdout再dd的管道,gzip版本太低,解压到前面很少一部分就会hang,脚本自动重启,找到那句将其改成wget -qO- '$DDURL' |tar zOx |/bin/dd of=$(list-devices disk |head -n1);Tar 不要加f和其它参数,版本不够。正常边untar边dd在我这(港区oss与轻量)要50来分钟,镜像正常启动grub2,进入tinycorelinux virtiope,fdisk /dev/vda,p显出正常hfs+分区,或者直接grub2 insmod hfs hfsplus part_apple,ls (hd0,msdos2)/ 也可以看到osx分区上的文件。之后迅速做一个快照,以防接下来的调试破坏系统。

如果说上面解决installnet.sh的脚本问题是小问题,那么大boss来了,r2922的cdboot在实机和kvmqemu机上可以运行,在云主机上根本无法运行(grub2进进入tinycorelinux virtiope,sudo mount /dev/vda1,sudo wget生成的iso,重启进入),不能显示引导界面,也是自动重启。(除了cdboot,按教程直接boot0h,hfs启动hfs分区的硬盘系统不行,用mbr+boot1f32也不行。)

问题可能在哪?这就是前面提到的ignore_msrs,我从memdisk版本问题开始排除,最后聚焦在boot本身上(cdboot这个stage2基本是一个boot+2560kib),猜想可能是版本问题导致的,利用排除法,先在网上海找了一通,能找到的最流行的低版本,就是v5.0.132 enoch r2839,,其cdboot写iso可以启动主机。最大r2841也可以,2842开始就不行。

翻看http://forge.voodooprojects.org/p/chameleon/source/changes/2842/,发现经过了三个commit,重点是源码上的变化:

Commit 2842, by ErmaC : General update Commit 2841, by Bungo : 1) Dropping DMAR (DMA Remapping table) to use stock AppleACPIplatform.kext - resolves stuck on "waitForSystemMapper" or "[PCI configuration begin]" 2) Added "ACPI" (all capitals) path 3) Small cosmetics Commit 2840, by Bungo : Sync

剩下就是实际编译出cdboot判断问题到底出在哪个commit了

从enoch的源码中找出变化,实际编译

编译环境是pd上的xcode 8.2.1 for EL CAPTAN 10.11,这套配置可以编译2841->2922,其它的都会有问题。苹果的开发链都很封闭自由度不高。只能选择这个配置了。

下载一个10.11,把它作成pd能安装用的镜像,原理跟mbrpatch打包类似,适合在PD安装老版本osx使用。

(以下差不多任意版本都适用)
hdiutil attach /Applications/Install macOS Sierra.app/Contents/SharedSupport/InstallESD.dmg -noverify -nobrowse -mountpoint /Volumes/install_app

hdiutil create -o /tmp/Sierra.cdr -size 7316m -layout SPUD -fs HFS+J
hdiutil attach /tmp/Sierra.cdr.dmg -noverify -nobrowse -mountpoint /Volumes/install_build

asr restore -source /Volumes/install_app/BaseSystem.dmg -target /Volumes/install_build -noprompt -noverify -erase

rm /Volumes/OS X Base System/System/Installation/Packages
cp -rp /Volumes/install_app/Packages /Volumes/OS X Base System/System/Installation/
cp -rp /Volumes/install_app/BaseSystem.chunklist /Volumes/OS X Base System/BaseSystem.chunklist
cp -rp /Volumes/install_app/BaseSystem.dmg /Volumes/OS X Base System/BaseSystem.dmg

hdiutil detach /Volumes/install_app
hdiutil detach /Volumes/OS X Base System/

hdiutil convert /tmp/Sierra.cdr.dmg -format UDTO -o /tmp/Sierra.iso

再https://developer.apple.com/download/more/下载Command_Line_Tools_macOS_10.11_for_Xcode_8.2.dmg装上。

最后下载源码:svn co -r 2841 http://forge.voodooprojects.org/svn/chameleon/trunk/,svn co -r 2842 http://forge.voodooprojects.org/svn/chameleon/trunk/,svn co -r 2922 http://forge.voodooprojects.org/svn/chameleon/trunk/

它们的编译都是cd trunk,然后直接make,经过几次尝试,从最初直接替换libsaio/cpu.c,cpu.h,platform.c,platform.h,到最后仅在2842 src中libsaio/cpu.c找到以下二句并注释掉

//  case CPUID_MODEL_SKYLAKE_AVX:
//  case CPUID_MODEL_CANNONLAKE:

Re make clean
Re make

其产出的cdboot都是可以用在云主机上作正常启动的。这也可以被用在2922上。

再一步步调试出能启动云主机的变色龙配置:

到现在为止,终于进入对类似现实机器调试变色龙的流程来处理针对云主机安变色龙的问题了,这就是在上述一次次的“修改参数+打包iso+tinycorelinux上传”的循环(这也是我们当初使用grub2+memdisk的基本考虑)重复调试参数了:云主机较特别,可能会因为一个问题无法最终成功,但至少希望就在眼前。因为我们解决了大量关键问题。

注:碰到上传了正确的cdboot打包的iso,也启不动云主机到界面的问题,但有一个workarouds:2841和2922的wowpc.iso都上传,发现2922不能启动到界面,先启次一次2841,之后2922总可以成功。猜是loader改变了相关mbr参数,是残留的硬件作用。启动一次2841可以将其复位。(或许整个替换cpu和platform编译会根本解决)

最小配置是这样的:

org.chamalon.boot.plist

    <key>Kernel Flags</key>
    <string>-v -f</string>
        <key>Timeout</key>
        <string>30</string>

下文继续详解。

d948eb8f5a59c8cf41ef84d2d8850057.gif
(此处不设回复和更新,点击GIF扫码到微信参与留言或获取资源)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
[Chameleon Install 3.0][变色龙windows安装程序] 3.0更新内容: 1.解决在XP/2003卸载后启动菜单中有中文的问题 2.0更新内容: 1.使用Avlgomgr最新版本使程序兼容性更好 2.解决在xp/2003下出现的没有启动菜单的问题 3.加入程序自身语言选择。 4.加入使用教程 历史版本: 1.0 PC装MAC,不再是问题~方便,安全 1.本程序方便在Windows下安装图形化引导程序Chameleon 2.0 RC1 2.支持Windows2000/XP/2003/Vista/Win7操作系统 3.支持简体中文和英文版 4.本程序不写mbr,可完全卸载,放心使用 5.Chameleon 可引导Windows,Linux,Mac OSX程序 6.Chameleon 支持引导Mac os非常方便,可完全代替tboot、CHAIN0,拒绝"no hfs partition found" 7.Chameleon 支持多硬盘引导HFS分区 8.使用Avlgomgr挂载光盘镜像,安全不写mbr,类似grub XP/2003用户使用请先安装.net 2.0组件 下载地址: http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x86.exe 关于你的疑惑: 问:如果现在已经双系统,tboot引导,再装会不会冲突? 答:不会。两个不影响,但是建议就不用TBOOT了。这个比Tboot要强一些,可以引导第二块硬盘~ 有人安装成功的么,我的点就报警了 答:没有正常引导,报警后重启吗?有什么提示呢? 安装完毕,重启后选择Chameleon,为什么我的显示“driver reset failed”,请帮忙解决,谢谢 答:这是在哪里提示的呢?是XP安装,还是VIsta安装? 可以装到HFS格式的分区吗? 答:安装到HFS分区,可直接用http://chameleon.osx86.hu/file_download/22/Chameleon-2.0-r431.pkg.zip这个官方发布的安装补丁 楼主这东西bug很多,首先硬盘上的系统不一定都在c盘,而且有的是双硬盘,楼主这东西默认放在c盘,有问题,这个我就遇到了,另外用时空淘气包的套件做的这个东西,本身在用了模拟破解的vista上不能用,变色引导我也做了一个,可兼容vista、win7、和xp,但是没有楼主那个装得那么方便,我编程不好,只是grub引导,没发在远景上,希望楼主可以做出个更好的。 答:虽然系统不装在C盘,但是C盘一定会有引导文件.boot.ini或boot文件夹都会在C盘,所以本程序放在C盘下没有问题.你可以打开隐藏系统文件看看,Avlgo的引导不影响模拟破解的vista,因为选用Avlgo就是因为这个,不然可直接使用。楼主可分享一下你的成果,大家一起来交流啊~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值