[OpenBIOS] [commit] r1089 - trunk/openbios-devel/packages
Programmingkid
programmingkidx at gmail.com
Sun Jan 13 20:33:24 CET 2013
I confirm that this patch works with Mac OS 10.0. I am able to boot off the cd and start running the kernel without specifying the partition. Thanks Mark.
On Jan 13, 2013, at 10:27 AM, repository service wrote:
> Author: mcayland
> Date: Sun Jan 13 16:27:00 2013
> New Revision: 1089
> URL: http://tracker.coreboot.org/trac/openbios/changeset/1089
>
> Log:
> mac-parts.c: Update bootpath to reflect the chosen partition if unspecified.
>
> When not booting from a specified partition, bootpath doesn't contain the
> selected partition id. Since this is parsed by BootX in order to locate the
> Mach kernel, update it accordingly. Otherwise BootX falls back to its default
> behaviour of scanning the first 3 partitions in order to find the kernel and
> fails on early Darwin/OS X images.
>
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>
>
> Modified:
> trunk/openbios-devel/packages/mac-parts.c
>
> Modified: trunk/openbios-devel/packages/mac-parts.c
> ==============================================================================
> --- trunk/openbios-devel/packages/mac-parts.c Sun Jan 13 16:26:57 2013 (r1088)
> +++ trunk/openbios-devel/packages/mac-parts.c Sun Jan 13 16:27:00 2013 (r1089)
> @@ -50,13 +50,14 @@
> {
> char *str = my_args_copy();
> char *parstr = NULL, *argstr = NULL;
> + char *tmpstr, *bootpath;
> int bs, parnum=-1, apple_parnum=-1;
> int parlist[2], parlist_size = 0;
> desc_map_t dmap;
> part_entry_t par;
> int ret = 0, i = 0, j = 0;
> int want_bootcode = 0;
> - phandle_t ph;
> + phandle_t ph, chosen_ph;
> ducell offs = 0, size = -1;
>
> DPRINTF("macparts_open '%s'\n", str );
> @@ -256,6 +257,35 @@
> DPRINTF("mac-parts: filesystem found on partition %d with ph " FMT_ucellx " and args %s\n", parnum, ph, argstr);
> di->filesystem_ph = ph;
>
> + /* Update bootpath to reflect where we booted from */
> + chosen_ph = find_dev("/chosen");
> + tmpstr = get_property(chosen_ph, "bootpath", &i);
> + if (tmpstr == NULL) {
> + tmpstr = strdup("");
> + }
> +
> + /* Find just the device */
> + if (strlen(tmpstr)) {
> + for (i = 0; i < strlen(tmpstr); i++) {
> + if (tmpstr[i] == ':' || tmpstr[i] == ',') {
> + tmpstr[i] = '\0';
> + }
> + }
> +
> + /* Rebuild bootpath with the currently selected partition number */
> + bootpath = malloc(strlen(tmpstr) + strlen(str) + 4);
> + sprintf(bootpath, "%s:%d", tmpstr, parnum);
> + if (strlen(argstr)) {
> + sprintf(bootpath, "%s:%d,%s", tmpstr, parnum, argstr);
> + } else {
> + sprintf(bootpath, "%s:%d", tmpstr, parnum);
> + }
> +
> + DPRINTF("mac-parts: setting bootpath to %s\n", bootpath);
> +
> + set_property(chosen_ph, "bootpath", bootpath, strlen(bootpath) + 1);
> + }
> +
> /* If the filename was %BOOT then it's not a real filename, so clear argstr before
> attempting interpose */
> if (want_bootcode) {
>
> --
> OpenBIOS http://openbios.org/
> Mailinglist: http://lists.openbios.org/mailman/listinfo
> Free your System - May the Forth be with you
More information about the OpenBIOS
mailing list