-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathBootstrap
192 lines (176 loc) · 6.24 KB
/
Bootstrap
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
#!/bin/bash (source)
function Create_Filesystem_Tree() {
#
# The GoboLinux directory hierarchy
#
local root="$1"
local superuser="$2"
local usesystemindex="$3"
function create_dir() {
[ -d "$1" ] || mkdir -p "$1"
[ "$2" ] && chown $2 "$1"
[ "$3" ] && chmod $3 "$1"
true
}
function create_link() {
[ -e "$2" ] || ln -nfs "$1" "$2"
true
}
if [ "$usesystemindex" ]
then
create_dir $root/System/Index/bin
create_link bin $root/System/Index/sbin
create_dir $root/System/Index/lib
create_link lib $root/System/Index/lib64
create_dir $root/System/Index/libexec
create_dir $root/System/Index/include
create_dir $root/System/Index/share/man
create_dir $root/System/Index/share/info
create_dir $root/System/Tasks
create_dir $root/System/Settings
create_dir $root/System/Environment
variabledir="Data/Variable"
filesdir="Data"
else
create_dir $root/Depot
create_dir $root/System/Links/Tasks
create_dir $root/System/Links/Environment
variabledir="System/Variable"
filesdir="Files"
fi
create_dir $root/$variabledir/log
create_dir $root/$variabledir/tmp 0 a+wt
create_dir $root/$variabledir/mail
create_dir $root/$variabledir/run
create_dir $root/$variabledir/lock 0 1777
create_dir $root/$variabledir/spool
create_dir $root/$variabledir/cache
create_dir $root/$variabledir/empty 0 0755
create_dir $root/$variabledir/lib
create_dir $root/$variabledir/lib/misc
create_dir $root/System/Kernel
create_dir $root/System/Kernel/Boot
create_dir $root/System/Kernel/Objects
create_dir $root/System/Kernel/Modules
create_dir $root/System/Kernel/Devices
create_dir $root/System/Kernel/Status
create_dir $root/System/Kernel/Config
create_dir $root/Users/$superuser
create_dir $root/$filesdir/Compile/Archives 0.sys 2755
create_dir $root/$filesdir/Compile/Sources 0.sys 2755
create_dir $root/$filesdir/Compile/Store 0.sys 2755
create_dir $root/Mount/.Pivot
create_dir $root/Mount/CD-ROM
create_dir $root/Mount/GoboLinux
create_dir $root/Mount/TmpFS
create_dir $root/Mount/Media
create_dir $root/Programs
#
# Legacy Links
#
create_dir $root/usr
if [ "$usesystemindex" ]
then
create_link System/Index/lib $root/lib
create_link System/Index/lib64 $root/lib64
create_link System/Index/bin $root/bin
create_link System/Index/sbin $root/sbin
create_link ../System/Index/bin $root/usr/bin
create_link ../System/Index/include $root/usr/include
create_link ../System/Index/lib $root/usr/lib
create_link ../System/Index/lib64 $root/usr/lib64
create_link ../System/Index/share/man $root/usr/man
create_link ../System/Index/sbin $root/usr/sbin
create_link ../System/Index/share $root/usr/share
create_link bin $root/System/Index/sbin
else
create_dir $root/System/Links/Executables
create_dir $root/System/Links/Libraries
create_dir $root/System/Links/Headers
create_dir $root/System/Links/Shared
create_dir $root/System/Links/Manuals/info
create_link System/Links/Libraries $root/lib
create_link System/Links/Libraries $root/lib64
create_link System/Links/Executables $root/bin
create_link System/Links/Executables $root/sbin
create_link ../System/Links/Executables $root/usr/bin
create_link ../System/Links/Executables $root/usr/sbin
create_link ../System/Links/Headers $root/usr/include
create_link ../System/Links/Libraries $root/usr/lib
create_link ../System/Links/Manuals $root/usr/man
create_link ../System/Links/Shared $root/usr/share
create_link ../Manuals $root/System/Links/Shared/man
create_dir $root/System/Settings
fi
create_link Users/$superuser $root/root
create_link $variabledir $root/var
create_link $variabledir $root/run
create_link $variabledir/tmp $root/tmp
create_link System/Kernel/Objects $root/sys
create_link System/Kernel/Devices $root/dev
create_link System/Kernel/Status $root/proc
create_link System/Kernel/Config $root/config
create_link System/Settings $root/etc
create_link System/Kernel/Boot $root/boot
create_link Mount $root/mnt
create_link Mount/Media $root/media
create_link $filesdir $root/srv
create_link . $root/usr/X11R6
create_link . $root/usr/local
}
function Create_Device_Nodes() {
#
# FIFOs and device nodes
#
root="$1"
if ! [ -e $root/System/Kernel/Devices/log ]
then mkfifo $root/System/Kernel/Devices/log
fi
if ! [ -e $root/System/Kernel/Devices/initctl ]
then mkfifo -m 0600 $root/System/Kernel/Devices/initctl
fi
if ! [ -e $root/System/Kernel/Devices/fd ]
then ln -sf /System/Kernel/Status/self/fd $root/System/Kernel/Devices/
fi
function create_node() {
unset mode
if [ "$5" ]
then mode="-m$5"
fi
if ! [ -e "$root/System/Kernel/Devices/$1" ]
then mknod $root/System/Kernel/Devices/$1 $2 $3 $4 $mode
fi
true
}
create_node console c 5 1 0600
create_node hda b 3 0
create_node hdb b 3 64
create_node hdc b 22 0
create_node hdd b 22 64
for i in `seq 0 31`
do
create_node loop$i b 7 $i
done
create_node null c 1 3 0666
create_node ram0 b 1 0
create_node random c 1 8
create_node scd0 b 11 0
create_node scd1 b 11 1
create_node scd2 b 11 2
create_node scd3 b 11 3
create_node scd4 b 11 4
create_node sda b 8 0
create_node sdb b 8 16
create_node sdc b 8 32
create_node sdd b 8 48
create_node tty0 c 4 0
create_node tty1 c 4 1
create_node tty2 c 4 2
create_node tty3 c 4 3
create_node tty4 c 4 4
create_node tty5 c 4 5
create_node tty6 c 4 6
create_node ttyS0 c 4 64
create_node urandom c 1 9
create_node fuse c 10 229 0666
}