Port-atari archive

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

Re: bootloader issue



Both the 4.0 and 5.0 snapshots below fully install and boot!

Let me know when you'd expect the updates to appear in the netbsd-4 and netbsd-5 daily builds and I'll check those out.

It's amazing the 2038 bug fix is interfering with our fun. Hope my TT030 lives that long. How long does it take semiconductors to start decomposing? =)

David Ross
dross%pobox.com@localhost


----- Original Message ----- From: "Izumi Tsutsui" <tsutsui%ceres.dti.ne.jp@localhost>
To: <dross%pobox.com@localhost>
Cc: <port-atari%NetBSD.org@localhost>; <tsutsui%ceres.dti.ne.jp@localhost>
Sent: Tuesday, January 13, 2009 4:27 PM
Subject: 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