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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
{- dfsbuild: CD image builder
Copyright (c) 2006 John Goerzen
Please see COPYRIGHT for more details
-}
module Bootloader.Yaboot where
import Utils
import MissingH.Cmd
import MissingH.Path
import System.Posix.Files
import System.Posix.Directory
import MissingH.Path.Glob
import MissingH.ConfigParser
import MissingH.Path.FilePath
yaboot env =
do safeSystem "cp" ["/usr/lib/yaboot/yaboot", targetdir env ++ "/boot/"]
writeFile (wdir env ++ "/hfs.map") hfsmap
writeFile (targetdir env ++ "/boot/ofboot.b") ofboot
newkerns <- glob $ targetdir env ++ "/boot/vmlinu*"
rdparam <- getrdparam env
rdsize <- getrdsize_kb env
writeFile (targetdir env ++ "/boot/yaboot.conf") (yabootconf newkerns rdsize rdparam)
return (["--netatalk", "-hfs", "-probe", "-hfs-unlock", "-part",
"-no-desktop", "-map", wdir env ++ "/hfs.map",
"-hfs-bless", targetdir env ++ "/boot",
"-hfs-volid", "DFS/PPC"],
postbuild)
where postbuild isoname =
do safeSystem "hmount" [isoname]
safeSystem "hattrib" ["-b", ":boot"]
safeSystem "humount" []
yabootconf klist rdsize rdparam =
"## This yaboot.conf is for CD booting only. Do not use as reference.\n" ++
"debice=cd:\n" ++
concat (map (yabootitem rdsize rdparam . fst . splitFileName) klist)
yabootitem rdsize rdparam kern =
"image=/boot/" ++ kern ++ "\n" ++
" label=" ++ kern ++ "\n" ++
" initrd=/boot/initrd.dfs\n" ++
" initrd-size=" ++ show rdsize ++ "\n" ++
" append=\"initrd=/boot/initrd.dfs root=/dev/ram0 " ++ rdparam ++ "\"\n" ++
" read-only\n\n" ++
"# wonky fb\nimage=/boot/" ++ kern ++ "\n" ++
" label=" ++ kern ++ "-safe\n" ++
" initrd=/boot/initrd.dfs\n" ++
" initrd-size=" ++ show rdsize ++ "\n" ++
" append=\"video=ofonly initrd=/boot/initrd.dfs root=/dev/ram0 " ++ rdparam ++ "\"\n" ++
" read-only\n\n"
hfsmap = "# ext. xlate creator type comment\n\
\.b Raw 'UNIX' 'tbxi' \"bootstrap\"\n\
\yaboot Raw 'UNIX' 'boot' \"bootstrap\"\n\
\.conf Raw 'UNIX' 'conf' \"bootstrap\"\n\
\* Ascii '????' '????' \"Text file\"\n";
ofboot = "<CHRP-BOOT>\n\
\<COMPATIBLE>\n\
\MacRISC MacRISC3 MacRISC4\n\
\</COMPATIBLE>\n\
\<DESCRIPTION>\n\
\GNU/Linux PPC bootloader\n\
\</DESCRIPTION>\n\
\<BOOT-SCRIPT>\n\
\\" screen\" output\n\
\load-base release-load-area\n\
\boot cd:,\\boot\\yaboot\n\
\</BOOT-SCRIPT>\n\
\<OS-BADGE-ICONS>\n\
\1010\n\
\000000000000F8FEACF6000000000000\n\
\0000000000F5FFFFFEFEF50000000000\n\
\00000000002BFAFEFAFCF70000000000\n\
\0000000000F65D5857812B0000000000\n\
\0000000000F5350B2F88560000000000\n\
\0000000000F6335708F8FE0000000000\n\
\00000000005600F600F5FD8100000000\n\
\00000000F9F8000000F5FAFFF8000000\n\
\000000008100F5F50000F6FEFE000000\n\
\000000F8F700F500F50000FCFFF70000\n\
\00000088F70000F50000F5FCFF2B0000\n\
\0000002F582A00F5000008ADE02C0000\n\
\00090B0A35A62B0000002D3B350A0000\n\
\000A0A0B0B3BF60000505E0B0A0B0A00\n\
\002E350B0B2F87FAFCF45F0B2E090000\n\
\00000007335FF82BF72B575907000000\n\
\000000000000ACFFFF81000000000000\n\
\000000000081FFFFFFFF810000000000\n\
\0000000000FBFFFFFFFFAC0000000000\n\
\000000000081DFDFDFFFFB0000000000\n\
\000000000081DD5F83FFFD0000000000\n\
\000000000081DDDF5EACFF0000000000\n\
\0000000000FDF981F981FFFF00000000\n\
\00000000FFACF9F9F981FFFFAC000000\n\
\00000000FFF98181F9F981FFFF000000\n\
\000000ACACF981F981F9F9FFFFAC0000\n\
\000000FFACF9F981F9F981FFFFFB0000\n\
\00000083DFFBF981F9F95EFFFFFC0000\n\
\005F5F5FDDFFFBF9F9F983DDDD5F0000\n\
\005F5F5F5FDD81F9F9E7DF5F5F5F5F00\n\
\0083DD5F5F83FFFFFFFFDF5F835F0000\n\
\000000FBDDDFACFBACFBDFDFFB000000\n\
\000000000000FFFFFFFF000000000000\n\
\0000000000FFFFFFFFFFFF0000000000\n\
\0000000000FFFFFFFFFFFF0000000000\n\
\0000000000FFFFFFFFFFFF0000000000\n\
\0000000000FFFFFFFFFFFF0000000000\n\
\0000000000FFFFFFFFFFFF0000000000\n\
\0000000000FFFFFFFFFFFFFF00000000\n\
\00000000FFFFFFFFFFFFFFFFFF000000\n\
\00000000FFFFFFFFFFFFFFFFFF000000\n\
\000000FFFFFFFFFFFFFFFFFFFFFF0000\n\
\000000FFFFFFFFFFFFFFFFFFFFFF0000\n\
\000000FFFFFFFFFFFFFFFFFFFFFF0000\n\
\00FFFFFFFFFFFFFFFFFFFFFFFFFF0000\n\
\00FFFFFFFFFFFFFFFFFFFFFFFFFFFF00\n\
\00FFFFFFFFFFFFFFFFFFFFFFFFFF0000\n\
\000000FFFFFFFFFFFFFFFFFFFF000000\n\
\</OS-BADGE-ICONS>\n\
\</CHRP-BOOT>\n"
|