Port-atari archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: bootloader issue



David Ross wrote:

> The bootloader issue has been identified and Izumi is working on a solution, 
> see below.

 :

> > Okay, I see. /boot.atari in base.tgz is actually a copy of
> > /usr/mdec/milan/boot.atari, not /usr/mdec/std/boot.atari.
> > (they have a different entry address)
> >
> > Maybe we should remove /boot.atari from base.tgz and

This part is done:
http://mail-index.NetBSD.org/source-changes/2009/01/13/msg215358.html
http://mail-index.NetBSD.org/source-changes/2009/01/13/msg215359.html

BTW, I wonder if MILAN (and HADES) kernels have been tested recently...

> > modify sysinst to choose and copy a proper tertiary boot.atari
> > from /usr/mdec dir per running machine types.
> > I'll check how it can be handled in sysinst.

and I've put new test snapshots here:
ftp://ftp.NetBSD.org/pub/NetBSD/arch/atari/snapshot/20090113-4.0_STABLE/
ftp://ftp.NetBSD.org/pub/NetBSD/arch/atari/snapshot/20090113-5.0_BETA/

Note 64 bit time_t changes have been merged into the HEAD,
so I'm afraid it will take a while till it's settled.

sysinst patch is the following (untested at all):

Is there better way to identify running machine types?
(i.e. how to get "machineid" version in a kernel)

---
Index: distrib/utils/sysinst/arch/atari/md.c
===================================================================
RCS file: /cvsroot/src/distrib/utils/sysinst/arch/atari/md.c,v
retrieving revision 1.22
diff -u -r1.22 md.c
--- distrib/utils/sysinst/arch/atari/md.c       7 Oct 2008 09:58:14 -0000       
1.22
+++ distrib/utils/sysinst/arch/atari/md.c       13 Jan 2009 16:13:11 -0000
@@ -39,10 +39,11 @@
 /* md.c -- Machine specific code for atari */
 
 #include <stdio.h>
-#include <util.h>
+#include <stdlib.h>
+#include <string.h>
 #include <sys/param.h>
-#include <machine/cpu.h>
 #include <sys/sysctl.h>
+
 #include "defs.h"
 #include "md.h"
 #include "msg_defs.h"
@@ -80,10 +81,35 @@
 int
 md_post_newfs(void)
 {
-       /* boot blocks ... */
+       static const int mib[2] = {CTL_HW, HW_MODEL};
+       size_t len;
+       char *cpu_model;
+       int milan;
+       char bootpath[MAXPATHLEN];
+       int rv;
+
+       /* check machine type via sysctl to select appropriate bootloaders */
+       milan = 0;      /* std is default */
+       sysctl(mib, 2, NULL, &len, NULL, 0);
+       cpu_model = malloc(len);
+       sysctl(mib, 2, cpu_model, &len, NULL, 0);
+       /* XXX model strings should be a common macro to sync with kernel */
+       if (strstr(cpu_model, "Milan") != NULL)
+               milan = 1;
+       free(cpu_model);
+
+       /* copy tertiary boot and install boot blocks */
        msg_display(MSG_dobootblks, diskdev);
-       return run_program(RUN_DISPLAY, "/usr/mdec/installboot -v /dev/r%sc",
-           diskdev);
+       snprintf(bootpath, sizeof(bootpath), "/usr/mdec/%s/boot.atari",
+           milan ? "milan" : "std");
+       rv = cp_to_target(bootpath, "/");
+       if (rv != 0)
+               return rv;
+
+       rv = run_program(RUN_DISPLAY, "/usr/mdec/installboot -v%s /dev/r%sc",
+           milan ? "m" : "", diskdev);
+
+       return rv;
 }
 
 int

---
Izumi Tsutsui


Home | Main Index | Thread Index | Old Index