~ubuntu-branches/ubuntu/lucid/silo/lucid

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
		HOW TO MAKE A SPARC BOOTABLE CDROM (NEW)

SILO may be used to create a bootable CDROM for sparc. At the moment it will
support booting on sun4c, sun4m, sun4d and sun4u machines only.

INTRO
=====

A CDROM is booted on Sparc by issuing following commands in the PROM
(depending on PROM version - v0 is PROM with major versions 0, found
on sun4c only, v2 is PROM with major versions 2 or 3, found on some newer
sun4c and all sun4m and sun4d machines) and the same applies to P1275 PROMs
found in the 64bit UltraSparc machines:

v0:

b sd(0,6,0)

v2:

boot cdrom

(cdrom is actually alias to /iommu/sbus/espdma/esp/sd@0,6:d or something
similar)

As Solaris has different kernels for each architecture, the PROM boots by
default from different "partitions" on the CD depending on the
architecture of the machine (that's e.g. the :d in the cdrom alias on v2
PROM). That partition table is stored in the first 512 bytes of the CD
(with exactly the same format as partition tables on Sparc disks), so you
can use SparcLinux fdisk program to look into that partition table.
SparcLinux bootable CDROMs have a partition table where all partitions
point to the main iso9660 image, starting from offset 0 to the end of the
image.  The only value PROM looks at is starting offset, so that it will
boot on all machines correctly.  In the boot process PROM finds start of
the boot partition (in SILO's case it is always 0) and loads 7680 bytes
from offset 512 in that partition.  Fortunately iso9660 has the first 32KB
(16 sectors) reserved for OS use, so that the partition table and
bootblock can be safely stored there. As SILO is longer in size than those
32KB (eventhough it is compressed), it puts its first stage loader in
there and puts its second stage loader somewhere in the iso9660
filesystem.

SILO 1.3.0 and up now uses the new isofs.b boot block for CD's. The old
boot block required a patched mkisofs. This new boot block can be passed
to stock mkisofs as the generic boot block. Adding the sparc-boot option
will ensure that mkisofs adds the needed sun partition table.

STEP BY STEP
============

You should first prepare the tree you'd like to have on the CD. The only
requirement is that you put boot/second.b from SILO distribution into
/boot in the tree and edit the appropriate /boot/silo.conf in the tree. The
isofs.b boot block does not need to be in the CD tree.

This is VERY important. The isofs.b boot block is hard wired to look for
second.b in /boot on the iso9660 image. The silo.conf has to be located in
/boot aswell, since isofs.b will tell second.b that is the location.

Note, you also need to make sure that you enable RockRidge extensions so
that normal path lookups work. This has always been true for SILO's usage
of iso9660.

Once the tree is prepared, just do:

mkisofs -G /boot/isofs.b -B ... -r -o IMAGENAME DIRECTORY_TREE

and you're done. The "..." to the -B option tells it to make the generic
isofs.b boot block the only image for all sparc-boot partition pointers.

If you have any problems, mail silo-general@lists.sparc-boot.org