File: Yaboot.hs

package info (click to toggle)
dfsbuild 0.99.3
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 308 kB
  • ctags: 6
  • sloc: haskell: 815; sh: 197; makefile: 99
file content (124 lines) | stat: -rw-r--r-- 4,530 bytes parent folder | download
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"