77 lines
2.7 KiB
Plaintext
77 lines
2.7 KiB
Plaintext
# @(#)README.sunx86boot 1.3 05/02/25 Copyright 2003 J. Schilling
|
|
|
|
A Solaris x86 Boot CD looks the like this:
|
|
|
|
- A PC type fdisk partition map is in CD sector 0 at offset 0
|
|
This fdisk partition map contains a single Solaris 0x82 type
|
|
partition starting at CD sector 0 at offset 512.
|
|
|
|
- A SVr4 disk partition label is at CD sector 0 at offset 1024.
|
|
This equates the usual 512 byte offset to the primary partition
|
|
used by SVr4.
|
|
|
|
This SVr4 partition label defines:
|
|
|
|
- Partition 0 to contain a usually UFS type boot filesystem
|
|
|
|
- Partition 1 to map the ISO-9660 filesystem.
|
|
|
|
This seems to be a conceptual bug from Sun, as it is
|
|
impossible to mount this partition because this partition
|
|
would point outside the primary fdisk partition type 0x82
|
|
|
|
- Partition 2 maps the whole CD.
|
|
|
|
|
|
A boot CD created by Sun contains a master boot record in CD sector 0 offset 0.
|
|
The size if this MBR is 0x1BE (446 decimal) as usual on PCs.
|
|
|
|
At CD sector 0 offset 512, there is a "primary boot sector". The MBR assumes
|
|
that is always gets loaded together with the ""primary boot sector".
|
|
|
|
The El-Torito map for this CD defines a "no-emulation" boot sitting at CD sector 0
|
|
and being 4 512 byte sectors in size. This covers the 1024 bytes of above
|
|
boot code. Note that mkisofs will not put the no-emulation boot at sector 0
|
|
as it keeps the boot inside the area used for other file content data.
|
|
|
|
At CD sector 1..15, there is a secondary boot code that understands UFS and tries
|
|
to boot from UFS slice 0. If you like to boot from different filesystem types,
|
|
you need to replace this boot code. The real size used by the secondary boot
|
|
is 31 x 512 bytes == 15872 bytes.
|
|
|
|
To get hold of the three boot files, do the following with e.g. a Solaris 10
|
|
boot CD:
|
|
|
|
readcd dev=1,0 f=CD.out sectors=0-32
|
|
|
|
Replace dev=1,0 with the apropriate values for your system (see readcd -scanbus).
|
|
|
|
sdd if=CD.out bs=446 count=1 of=mboot
|
|
sdd if=CD.out count=1 iseek=512 of=pboot
|
|
sdd if=CD.out count=60 iseek=2048 of=bootblk
|
|
|
|
To create the needed files for the misofs command line example below, do the
|
|
following:
|
|
|
|
sdd if=mboot -fill of=eltoritoboot
|
|
cat pboot >> eltoritoboot
|
|
|
|
sdd -inull bs=2k count=1 of=genboot
|
|
cat bootblk >> genboot
|
|
|
|
If you like the CD to look more similar to the original Sun CDs, use:
|
|
|
|
cp eltoritoboot genboot
|
|
sdd -inull bs=1k count=1 >> genboot
|
|
cat bootblk >> genboot
|
|
|
|
If you like to create a CD similar to the Solaris 10 boot CD, do the following:
|
|
|
|
mkdir isodir
|
|
star -cPM -C /vol/dev/dsk/c1t1d0/multi_icd_sol_10_x86/s2 . | star -xp -xdot -C isodir
|
|
cp eltoritoboot isodir/.bootimage
|
|
|
|
mkisofs -G genboot -no-emul-boot -b .bootimage -c .catalog -R -o bootcd.iso -sunx86-boot /vol/dev/dsk/c1t1d0/multi_icd_sol_10_x86/s0 isodir/
|
|
|
|
|