[openfirmware] Using Open Firmware as a boot manager
Mitch Bradley
wmb at laptop.org
Fri Mar 18 23:27:30 CET 2011
On 3/18/2011 8:18 AM, Mark Morgan Lloyd wrote:
> Mitch Bradley wrote:
>> On 3/16/2011 7:43 AM, Mark Morgan Lloyd wrote:
>>> No rush, obviously.
>>>
>>> OK, that's working. What is c actually representing here- the entire
>>> disc?
>>
>>
>> It represents the default partition, except in the case of
>> ".partitions", which explicitly adds the "whole disk" partition
>> specifier.
>>
>> /pci/pci-ide at 1f,1/ide at 0/disk at 0 means the default partition
>> /pci/pci-ide at 1f,1/ide at 0/disk at 0:0 means the whole disk
>> /pci/pci-ide at 1f,1/ide at 0/disk at 0:1 means the first partition
>> /pci/pci-ide at 1f,1/ide at 0/disk at 0:2 means the second partition
>> /pci/pci-ide at 1f,1/ide at 0/disk at 0:1,\foo means the file "foo" on the
>> first partition
>
> Right. So your previous example
>
> ok devalias c /pci/pci-ide at 1f,1/ide at 0/disk at 0
>
> can be equally-well written as
>
> ok devalias c /pci/pci-ide at 1f,1/ide at 0/disk at 0:1
The difference is that "default partition" takes into account the
"bootable" flag. If a partition is marked bootable, that one is the
default; otherwise the first partition is the default.
>
>>> I've set myself up a disk with DOS and Linux which .partitions c
>>> describes as
>>>
>>> 1 Primary Yes FAT-16>32M 37
>>> 2 Primary No Extended 2252
>>> 2 Logical No FAT-16>32M 2045
>>> 3 Logical No 0x82 207
>>>
>>> That final partition isn't right, it's actually filling all the
>>> otherwise-unused space on a 6Gb disc, but let's skip that for the
>>> moment.
>>>
>>> What do I define d as so I can look at the content of the second FAT
>>> partition?
>>
>>
>> /pci/pci-ide at 1f,1/ide at 0/disk at 0:2
>
> ok devalias d /pci/pci-ide at 1f,1/ide at 0/disk at 0:2
>
> Got that, working.
>
>>> What is disk at 0- a reference to a block?
>>
>> ide at 0 means the primary IDE string. ide at 1 means the secondary string
>> disk at 0 means the master disk on the string. disk at 1 means the slave disk
>
> OK, noting the distinction between that and the earlier part that
> specifies the port address.
>
> So by extension, I can do
>
> ok devalias a /pci/isa at 1f/fdc at i3f0/disk
> ok dir a:\
>
> Let me guess: I can't see the SCSI devices because the 2940 ROM doesn't
> contain fcode :-)
Correct. You would need to add a driver for your SCSI chip/card in the
OFW build.
>
>>> What do I need to do to look in the Linux filesystem, including
>>> identifying what file in /boot can be booted?
>>
>> ok dir /pci/pci-ide at 1f,1/ide at 0/disk at 0:2,\boot\
>
> 0:2 is the second FAT partition, do you mean 0:3 there? If I do
>
> ok dir /pci/pci-ide at 1f,1/ide at 0/disk at 0:2,\
>
> I see the content of the second FAT filesystem, if I do
>
> ok dir /pci/pci-ide at 1f,1/ide at 0/disk at 0:3,\
>
> I get
>
> Error: Unknown file system
> Can't open disk label package
> Can't open directory
>
> OFW was built using the instructions from
> http://www.openfirmware.info/Building_OFW_to_Run_Under_BIOS which worked
> without problems.
Those instructions say to use config-virtualbox.fth, which doesn't
include linux support. Just add a "create linux-support" line to
config.fth. That will cause fw.bth to include the ext2 filesystem module.
> I'd note however that when I tried a year or so ago
> using an older compiler I had problems and had to fall back to mkdosfs
> and still had problems: is that block count correct for a 1.44Mb disc?
I'm not sure. It's been awhile since I tested this setup. I no longer
have all the stuff on my system so duplicating it would take longer than
I have to spend on this at the moment.
>
>> Alternatively:
>>
>> ok dir /ide/disk:2,\boot\
>>
>> You can omit path components that are unnecessary for disambiguation,
>> because OFW will look for anything that matches.
>>
>> Can I then boot/load it?
>>
>> ok boot /ide/disk:2,\boot\vmlinuz
>
> Can't get there yet pending sorting out dir problem above. I assume that
> OFW specifically knows about the compressed kernel format, since it's
> already (I presume) in protected mode it can't go via the standard boot
> sectors. If my understanding is correct I think those instructions might
> be better headed "Building OFW to be Loaded by BIOS".
Page renamed to "Building OFW to Load from BIOS"
>
> If I can ask one further question, expecting only the sketchiest reply:
> if I attach a partitioned IDE disk (or insert an unpartitioned floppy)
> containing an alien unix-style filesystem (specifically, Sanos's DFS as
> described at http://www.jbox.dk/sanos/source/include/os/dfs.h.html),
> where would this get patched into OFW? I presume that it would have a
> driver very similar to that for ext2.
The support for the minix filesystem is a good starting point, because
it is relatively simple, so you won't have to wade through much detail
to see the key interface points. ofw/fs/minix.fth . The key interface
methods are open, close, read,seek, size, load, and next-file-info .
To implement write support you also need write, $create, $delete, and
$delete! . If the filesystem has symlinks, you also need $readlink .
See also disklabel/methods.fth to see how to hook the dfs support into
the partition type decoding - search for "minix".
>
> I'm interested to sort out accessing the Linux disc as discussed above,
> but will then probably be going quiet for a few weeks while I clear some
> other jobs (and stuff relating to Open Source) off my desk. Then I'll be
> asking all sorts of awkward questions about putting OFW on the ARM
> boards I have here.
>
More information about the openfirmware
mailing list