Subject: Re: any support for wireless cards?
To: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
From: Erik Berls <cyber@ono-sendai.com>
List: port-cobalt
Date: 08/10/2007 13:36:08
Yes, that looks ok. I wont be able to load it up on any of my
machines until tomorrow though.
-=erik.
On 8/10/07, Izumi Tsutsui <tsutsui@ceres.dti.ne.jp> wrote:
> cyber@ono-sendai.com wrote:
>
> > Yes, the bootloaded should also parse "root=/dev/hdb1". And I know
> > the kernel has the code. I put it there.
>
> Is this okay?
> ---
> Izumi Tsutsui
>
>
> Index: boot.c
> ===================================================================
> RCS file: /cvsroot/src/sys/arch/cobalt/stand/boot/boot.c,v
> retrieving revision 1.7
> diff -u -r1.7 boot.c
> --- boot.c 10 Aug 2007 16:47:07 -0000 1.7
> +++ boot.c 10 Aug 2007 18:05:34 -0000
> @@ -194,15 +194,40 @@
> get_bsdbootname(char **dev, char **kname, int *howtop)
> {
> int len, error;
> + int bootunit, bootpart;
> char *bootstr_dev, *bootstr_kname;
> char *prompt_dev, *prompt_kname;
> char *ptr, *spec;
> char c, namebuf[PATH_MAX];
> + static char bootdev[] = "wd0a";
>
> bootstr_dev = prompt_dev = NULL;
> bootstr_kname = prompt_kname = NULL;
>
> - /* first, get bootname from bootstrings */
> + /* first, get root device specified by the firmware */
> + spec = bootstring;
> + /* assume the last one is valid */
> + while ((spec = strstr(spec, "root=")) != NULL) {
> + spec += 5; /* skip 'root=' */
> + ptr = strchr(spec, ' ');
> + len = (ptr == NULL) ? strlen(spec) : ptr - spec;
> + /* decode unit and part from "/dev/hd[ab][1-4]" strings */
> + if (len == 9 && memcmp("/dev/hd", spec, 7) == 0) {
> + bootunit = spec[7] - 'a';
> + bootpart = spec[8] - '1';
> + if (bootunit >= 0 && bootunit < 2 &&
> + bootpart >= 0 && bootpart < 4) {
> + bootdev[sizeof(bootdev) - 3] = '0' + bootunit;
> +#if 0 /* bootpart is fdisk partition of Linux root */
> + bootdev[sizeof(bootdev) - 2] = 'a' + bootpart;
> +#endif
> + bootstr_dev = bootdev;
> + }
> + }
> + spec += len;
> + }
> +
> + /* second, get bootname from bootstrings */
> if ((spec = strstr(bootstring, "nbsd=")) != NULL) {
> ptr = strchr(spec, ' ');
> spec += 5; /* skip 'nbsd=' */
>
--
"Too bad $VOLUNTEERS don't get their act together and provide
$SOLUTION_TO_VERY_DIFFICULT_PROBLEM in a decent fashion" -- from IRC,
#netbsd, EFNet