Jump to content


  • Content Count

  • Joined

  • Last visited

About thorazine74

  • Rank
    InsanelyMac Geek

Contact Methods

  • Website URL

Profile Information

  • Gender
  • Location
  1. I understand that chameleon can only chain boot linux by loading a partitions boot sector with grub in it (post #17), so if grub2 cannot be installed just there in a GPT disk and it needs to be in mbr and bios boot partition, I think its imposible to make it work with chameleon at its current state. You are surely right about grub2 not being able to deal with snow but I doubt the mkext location error would stop it, if I understand the grub code right, it will just load the kexts from /S/L/E when it doesnt find /S/L/Extensions.mkext. I changed the grub entry to this: [code xnu_kernel /mach_kernel boot-uuid=${uuid} rd=*uuid if [ /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext -nt /System/Library/Extensions ]$ xnu_mkext /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext else xnu_kextdir /System/Library/Extensions fi }[/code] and it didnt make any difference, the panic that appears seem to be related to boot arguments, the same one as reported above: panic(cpu 0 caller 0x2ac8d5): "Incompatible boot args version 1 revision 4\n"0/SourceCaches/xnu/xnu-1456.1.25/osfmk/i386/AT386/nodul_dmp.c:542 It seems to be traced to this file in the kernel source and this snipped of code: /* Remap EFI runtime areas. */ void hibernate_newruntime_map(void * map, vm_size_t map_size, uint32_t system_table_offset) { boot_args *args = (boot_args *)PE_state.bootArgs; kprintf("Reinitializing EFI runtime services\n"); if (args->Version != kBootArgsVersion1) return; do { vm_offset_t vm_size, vm_addr; vm_map_offset_t phys_addr; EfiMemoryRange *mptr; unsigned int msize, mcount; unsigned int i; gPEEFISystemTable = 0; gPEEFIRuntimeServices = 0; system_table_offset += ptoa_32(args->efiRuntimeServicesPageStart); kprintf("Old system table 0x%x, new 0x%x\n", (uint32_t)args->efiSystemTable, system_table_offset); args->efiSystemTable = system_table_offset; kprintf("Old map:\n"); msize = args->MemoryMapDescriptorSize; mcount = args->MemoryMapSize / msize; mptr = (EfiMemoryRange *)ml_static_ptovirt(args->MemoryMap); for (i=0; i < mcount; i++, mptr = (EfiMemoryRange *)(((vm_offset_t)mptr) + msize)) { if ((mptr->Attribute & EFI_MEMORY_RUNTIME) == EFI_MEMORY_RUNTIME) { vm_size = (vm_offset_t)i386_ptob((uint32_t)mptr->NumberOfPages); vm_addr = (vm_offset_t) mptr->VirtualStart; phys_addr = (vm_map_offset_t) mptr->PhysicalStart; kprintf("mapping[%u] %qx @ %lx, %llu\n", mptr->Type, phys_addr, (unsigned long)vm_addr, mptr->NumberOfPages); } } pmap_remove(kernel_pmap, i386_ptob(args->efiRuntimeServicesPageStart), i386_ptob(args->efiRuntimeServicesPageStart + args->efiRuntimeServicesPageCount)); kprintf("New map:\n"); msize = args->MemoryMapDescriptorSize; mcount = (unsigned int )(map_size / msize); mptr = map; for (i=0; i < mcount; i++, mptr = (EfiMemoryRange *)(((vm_offset_t)mptr) + msize)) { if ((mptr->Attribute & EFI_MEMORY_RUNTIME) == EFI_MEMORY_RUNTIME) { vm_size = (vm_offset_t)i386_ptob((uint32_t)mptr->NumberOfPages); vm_addr = (vm_offset_t) mptr->VirtualStart; phys_addr = (vm_map_offset_t) mptr->PhysicalStart; kprintf("mapping[%u] %qx @ %lx, %llu\n", mptr->Type, phys_addr, (unsigned long)vm_addr, mptr->NumberOfPages); #if defined(__i386__) pmap_map #elif defined(__x86_64__) pmap_map_bd /* K64todo resolve pmap layer inconsistency */ #endif (vm_addr, phys_addr, phys_addr + round_page(vm_size), (mptr->Type == kEfiRuntimeServicesCode) ? VM_PROT_READ | VM_PROT_EXECUTE : VM_PROT_READ|VM_PROT_WRITE, (mptr->Type == EfiMemoryMappedIO) ? VM_WIMG_IO : VM_WIMG_USE_DEFAULT); } } if ((args->Version != kBootArgsVersion1) || (args->Version == kBootArgsVersion1 && args->Revision < kBootArgsRevision1_5 )) panic("Incompatible boot args version %d revision %d\n", args->Version, args->Revision); kprintf("Boot args version %d revision %d mode %d\n", args->Version, args->Revision, args->efiMode); if (args->efiMode == kBootArgsEfiMode64) { efi_set_tables_64((EFI_SYSTEM_TABLE_64 *) ml_static_ptovirt(args->efiSystemTable)); } else { efi_set_tables_32((EFI_SYSTEM_TABLE_32 *) ml_static_ptovirt(args->efiSystemTable)); } } while (FALSE); kprintf("Done reinitializing EFI runtime services\n"); return; } I'm not a coder so I dont really understand whats going wrong, something related with memory remapping? Can someone confirm if we need to load efiemu? I understand that IT IS NEEDED to boot Mac OS X kernels on non-EFI machines, the fact that osprober script that creates the built-in grub.cfg entry for OS X doesnt put it there it could be only because it is made for real macs which doesnt need it, but I'm not sure if the modules would get autoloaded when needed (i.e. if xnu_kernel finds out it cant load the kernel without efiemu, would it be loaded automatically or not?) I tried to play with the efiemu commands but arrived no where :-( These are the mods to grub.cfg I tried: insmod efiemu # use only one, 32 or 64 # efiemu_loadcore /boot/grub/efiemu64.o efiemu_loadcore /boot/grub/efiemu32.o efiemu_pnvram efiemu_prepare But it made no difference at all... Maybe an updated grub2 package or compilation will fix it, I was just using the built-in Kubuntu 9.10 package. I cant confirm this, I got Karmic installed to a logical partition with grub2 installed onto it, and it boots and works just fine from there, it shows up in pcefi 10.5, never tried to boot it from there though as I use BootIt NextGen to multiboot but I cant see why it would not work.
  2. Interesting... Rod's first report talked about voodoo so you can assume it was leo but the other poster got snow's kernel running up to the panic point.
  3. Thanks! I get no controller name in SP too. Can you please post the source code or the changes you made to apple's original to make it work with all ports?
  4. I think I was wrong about the uuid, not sure but I believe what "xnu_uuid a0297dea90ce0b44 uuid" do is converting the uuid from linux format to the traditional hfs+ format understandable by OS X, so it must be the kernel options what are wrong as you say. If your OS X partition has chameleon's boot sector (boot1h) you should be able to just do: menuentry "MacOS X, chameleon" { set root=(hd0,2) chainloader +1 } (or maybe chainloader +2 I'm not sure if it matters...). Your OS X partition may need to be marked as active, not sure but I think "makeactive" doesnt work with grub2. Also, as grub2 can read HFS+ this variant also should work: menuentry "MacOS X, chameleon" { insmod hfsplus set root=(hd0,2) multiboot /boot } Or if you have several renamed boot files in OS X's partition root you could also do this: menuentry "MacOS X, chameleon" { insmod hfsplus search --file --set=root /chameleon.rc3.boot multiboot /chameleon.rc3.boot }
  5. Sorry it didnt work. How does modules work exactly? I undertand even if they are present in grub's dir you still need need to insmod some of them at runtime right? Or can you do a custom compile with all the modules active? Because I'm not sure which ones are needed for OS X, maybe thats whats failing...
  6. Just a wild guess but that doesnt look like a valid HFS+ uuid, they are supposed to be like this: 2FF02147-61EF-3EA2-A314-FFA7FD42BC28 Try getting the real UUID from your OS X partition and changing grub.cfg code according to it. If that doesnt even work you could also even try to hardcode the uuid in the kernel arguments line: uuid=2FF02147-61EF-3EA2-A314-FFA7FD42BC28 xnu_kernel /mach_kernel boot-uuid=${uuid} rd=*uuid Also maybe you are missing some required module that is not loaded by default with Ubuntu config, you can check which ones are loaded with lsmod in grub2 command line.
  7. I'm surprised this post hasnt caught more attention, considering how groundbreaking this is: a fully developed boot loader and boot manager that can load windows, linux, os x with just a single installation and code, it could potentially wipe chameleon (and of course other "things" like the open-source-without-public-source "Boot Think" or the always coming-soon and closed source and maybe future pay-ware once its finished "XPC") from the scene. From that page linked it seems almost everything is already supported in grub2: loading extensions and mkexts from /Extra locations, even loading plist only extensions without code, injecting efi properties, replace dsdt and even other acpi tables, even supports writing variables to a fake nvram, only thing missing could be DMI patching for proper SMBIOS working... Anyway, I can report I tried the grub2 package from Fedora 11 and I also failed, even though it seems to be more updated (1.98) but the datecode is older (from 2008, but latest grub2 source package seems to be 2009/10). I installed it in a USB drive and it didnt boot succesfully in my system but the USB stick worked in qemu). I think it could be because the fedora package is compiled without certain modules needed like xnu support or efi emulator. Did you install grub2 to OS X HD or to a another drive? Could you provide a compiled binary of latest version? I was going to do that but I stopped, I think Fedora uses some kind of patch to rename grub2 binaries (to grub2-install, grub2-setup and the like...) and I was afraid I would break my Fedora installation. I'm not sure if we can use that kind of binary just by replacing it in the installation, or do we need to update the boot.img files? BTW I think your problem with the second system is not caused by grub2 but some hardware incompatibility in the system installed, it could be caused by the ethernet card there not being supported at all, so OS X could be missing a MAC address to create the platform uuid. It could be fixed by using a PlatformUUID.kext or UUID.kext, some SMBIOS enablers can also do that. See this thread on voodoo forum for more info. I'll be getting the next Kubuntu version due out in a few days which reportedly switched to pure grub2 as the only boot loader and I will try again and report back.
  8. I dont think nobody is talking about taking anyone to court, but it seems you dont understand how working with open source software works, he did a great work on this bootloader and I think we are all grateful for that, he is also doing a great effort to give some basic first hand support in a foreign language (to him) in this forum and listening to some of the feedback from the general users something that is very uncommon around here... But his work seems to be based on someone else's work, I dont care if its netkas or david elliot or chameleon team, who released the source code of their work so others can benefit and enhance it solely on the condition that they share their enhancements with everybody again. I believe its not unfair to him to let others profit from his work too, same as he did. I dont think any of the request for the source code to be published were hostile. Its up to you to not care about this, you are free to be ignorant of the importance of keeping the source public, but even if you think you are defending xiezhy's work you are not doing a great service to the community in the end: imagine xiezhy stops working on Boot Think tomorrow and you update to 10.6.2 and Boot Think stops working, who you gonna be crying to fix the bug so you can keep on using your loved Boot Think bootloader? Just a childish example but I'm sure you will understand it. I dont know if the source code is published in some chinese website that I cant read, maybe it is and we ignore it, thats why people is asking. Maybe he is not even aware of the requirements of the license, maybe he has troubles understanding the terms of the license in english, I dont know... Maybe the source code is not ready to be published or he wants a more stable to version to be public I dont think really think we need to enforce all open source binaries to be publishes with source, its a really good practice that do nohing wrong but right, I'm not a programmer so as long as the source code is available somewhere is ok to me, I'm sure coders would think otherwise... But I think its really important that some source is available somewhere at some point. Its not a matter of being legit or legal, its a matter of being ethical. Its up to you if dont give a {censored} about that but other people do. And if those people didnt care in the first place you probably would not be booting OS X so easily with Boot Think today.
  9. thorazine74

    XPC bootloader

    A bootloader needs a MBR and bootsector, this one doesnt seem to have any of those things, just by putting the file structure in a disc partition surely wont work. Unless I'm missing something this is useless as it is, I'm only guessing of course but as this thing has NO DOCUMENTATION, INSTRUCTIONS, FEATURE LIST or even a simple README file........
  10. Thanks again for the great contribution. Sorry to be a pain in the ass but if this bootloader is indeed based on boot132 shouldnt the source code be published somewhere?
  11. No, legacy kexts dont show up in kextstat, only the parent kext does. Only way to find out if they load is comparing the IORegistry entries manually, looking for some difference. Anyway I think you should be using the LegacyJMicronAHCI kext plus the non-legacy JMicronATA v0.6 patched for AHCI-coexistance from that thread if you have 8 Gb of RAM as your sig states. Also look for other Jmicron ATA kexts hidden in the usual places (/Extra, IOATAFamily plugins...) as already suggested by somebody else.
  12. I tried Boot Think 2.1.0 and sorry but I havent seen much progress. Same setup, used the installer, with default settings, installed to clean USB Stick formated as MBR/HFS+, booting from it, on a Nvidia MCP73 mb with SATA HD & IDE DVD. It boots fine but it only shows 2 HD partition icons, from my 1st MBR-partitioned HD, Leopard and other that seems to be Linux (identified by disk number, not label); Vista partition is missing, and doesnt ever show up even after p=+/- Leopard starts to boot but crashes before getting to the desktop. It seems some kexts loaded by Boot Think with the ones loaded by Leo or something. Try to boot from retail DVD, pressing "c" repeatedly, I get either: a) the Apple loading screen indefinitely and no sign of the DVD disk being read at all (the drive activity light is off); It accesses the DVD drive (light blinks briefly) and I get a "EBIOS disk error" message printed on top of Apple grey screen repeatedly if I press "c". I dont understand whats the problem with DVD, its hard to diagnose because I dont know how to boot from the dvd AND at the same time use "verbose" mode (pressing CTRL+v+c doesnt seem to work). Also I still dont understand why BT has 2 sets of extensions.mkext files, one in /Darwin/S/L/ and another in /Darwin/rc/, whats the purpose of that? One seems to contain a big set of kexts from 10.5.6/9.6.0 and the other just the ApplePS2Controller+ps2nub kexts (which btw are probably why it didnt boot my leopard, it would fight with VoodooPS2 I have installed on /S/L/E). There is no AppleDecrypt or dsmos there now (there was in 1.1) so I'm guessing we need to include it ourselves now? Anyone care to explain how are we supposed to customize the extensions.mkext? (say for example if you want to just use vanilla kexts from 10.5.7, do you remove the big Extensions.mkext? or do you move the Extensions.mkext from your /S/L/ to Boot Think /Darwin/rc?). Also it seems the kernel is loaded from the boot device and not from the system partition? What about the source code, is it going to be released to the public?
  13. It seems you have the JMicron SATA in AHCI mode, see this thread for a posible solution. The third port could be an IDE port handled by the Marvell? I think it merges all the ports (SATA or IDE) together when in AHCI mode (and probably the IDE wont work at all in AHCI mode then...). About the SAS I guess AHCI doesnt mix with SAS at all. I dont know if you could use any available driver for that Marvell, for Linux I've read they needed to make a brand new driver just for them (see mv_sas).
  14. You could also try driving the 6121 in RAID mode with AppleAHCI, not sure if it will work, with something like this as a legacy kext: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>English</string> <key>CFBundleGetInfoString</key> <string>AppleAHCIPort for Marvell 88SE6121</string> <key>CFBundleIdentifier</key> <string>com.tgwbd.driver.AppleAHCIPortMarvell88SE6121</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>AppleAHCIPortMarvell88SE6121</string> <key>CFBundlePackageType</key> <string>KEXT</string> <key>CFBundleShortVersionString</key> <string>1.0.0</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>1.0.0</string> <key>IOKitPersonalities</key> <dict> <key>AppleAHCIPort Marvell 88SE6121</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleAHCIPort</string> <key>Chipset Name</key> <string>88SE6121 RAID</string> <key>IOClass</key> <string>AppleAHCI</string> <key>IOPCIClassMatch</key> <string>0x01040000&ffff0000</string> <key>IOPCIPrimaryMatch</key> <string>0x612111ab</string> <key>IOProbeScore</key> <integer>10000</integer> <key>IOProviderClass</key> <string>IOPCIDevice</string> <key>Vendor Name</key> <string>Marvell</string> </dict> </dict> <key>OSBundleLibraries</key> <dict> <key>com.apple.iokit.IOAHCIFamily</key> <string>1.0.0</string> <key>com.apple.iokit.IOPCIFamily</key> <string>1.0.0</string> <key>com.apple.kpi.bsd</key> <string>8.0.0</string> <key>com.apple.kpi.iokit</key> <string>8.0.0</string> <key>com.apple.kpi.libkern</key> <string>8.0.0</string> <key>com.apple.kpi.mach</key> <string>8.0.0</string> </dict> <key>OSBundleRequired</key> <string>Local-Root</string> </dict> </plist> You could try something similar for the 6440, I doubt it will work, but if you say it behaves as a standard SATA controller with the BIOS on maybe there is a small chance.
  15. The 6121 is reported to work with ahci driver in linux, though it has troubles with IDE ports being disabled or mapped incorrectly and not doing NCQ right or something similar, thats what I've read at least. If you have an option to switch modes in BIOS it may work with Apple's AHCI driver. About the SAS I dont have a clue, do SAS controllers support IDE emulation? If they dont I doubt they will work with IDE-based drivers like AppleVIAATA...