In short: A working procedure for making an ATA disk bootable does not
work reliably with CF cards/with a Soekris.

On FreeBSD with a normal IDE/ATA hard disk the following sequence:

        fdisk -BI ad0
        disklabel -w -B ad0s1 auto
        disklabel -e ad0s1
        ... newfs what is needed
        boot0cfg -v -B ad0

will reliably turn an IDE disk into something bootable (followed after a
make install-world DESTDIR=..)

Is this the correct sequence ?

And though I can boot from CF cards; things are bit hit&miss; and it is
not clear to me exactly what the right procedure is.

The issue is that I seemingly get random results. And simply re-running
the script or rebooting changes behavour.

Issues seen are:

->      Flashcards simply do not want to be 'seen' anymore with
        /stand/sysinstall; it will bail out wit no disk detected.

->      The flashcard show *different results* on successive run
        with  disklabel after an init iwth
        fdisk -BI ad0:

  c:   249824        0    unused        0     0         # (Cyl.    0 - 247*)
        or
  c:   249824        0    unsued     1024  8192    16   # (Cyl.    0 - 247*)

        quite random; with the same card and may change with a reboot.

        Then after a disklabel edit once sees either one of the following
        three:

  a:   249824        0    4.2BSD        0     0         # (Cyl.    0 - 247*)
  c:   249824        0    unused        0     0         # (Cyl.    0 - 247*)
        or
  a:   249824        0    4.2BSD     1024  8192    16   # (Cyl.    0 - 247*)
  c:   249824        0    unsued        0     0    16   # (Cyl.    0 - 247*)
        or
  a:   249824        0    4.2BSD     1024  8192    16   # (Cyl.    0 - 247*)
  c:   249824        0    unsued     1024  8192    16   # (Cyl.    0 - 247*)

        Again; mixed across cycles and boots. Is there anything in the
        new GEOM or BIOS which can be remembered across reboots, including
        power cycles.

Right now the following commands :

boot soekris diskless
        with GENERIC kernel using usual /var and /tmp on mfs.

        setenv TERM vt100
        fdisk -BI ad0
        disklabel -w -B ad0s1 auto
        disklabel -e ad0s1
        -> add 'a: 4.2BSD line'
        -> remove fsize/bsize
          a:  249824 0 4.2BSD
          a:  249824 0 untitled
        disklabel ad0s1 will output 8 out of 11 times:
          a:  249824 0 4.2BSD 1024 8192 16 # (Cyl.  0 - 247*)
          c:  249824 0 unsued 0 0 16 # (Cyl.  0 - 247*)
        boot0cfg -v -B ad0

9-10 cases will give

        GEOM: new disk ad0
        ar: FreeBSD check1 failed
        ad0: <Hitachi CVM1.1.1/Rev 1.01> ATA-0 disk at ata0-master
        ad0: 122MB (250368 sectors), 978 C, 8 H, 32 S, 512 B
        ad0: 1 secs/int, 1 depth queue, BIOSPIO
        ad0: piomode=1 dmamode=-1 udmamode=-1 cblid=0
        GEOM: Configure ad0s1, start 16384 length 127909888 end 127926271
        GEOM: Add ad0s1 hot[0] start 512 length 276 end 787
        GEOM: Configure ad0s1a, start 0 length 127909888 end 127909887
        GEOM: Configure ad0s1c, start 0 length 127909888 end 127909887

        Manual root filesystem specification:
          <fstype>:<device>  Mount <device> using filesystem <fstype>
                               eg. ufs:da0s1a
          ?                  List valid disk boot devices
          <empty line>       Abort manual input

        mountroot> ufs:ad0s1a
        panic: Root mount failed, startup aborted.
        Debugger("panic")
        Stopped at      Debugger+0x54:  xchgl   %ebx,in_Debugger.0

and sometimes:

        mountroot> ufs:ad0s1a
        Mounting root from ufs:ad0s1a
        start_init: trying /sbin/init
        ..hang...

and then again, 1 in 50 times it will boot just fine. What am I doing
wrong. How can I make this more reliable ?

Dw





To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to