Annotation of /trunk/bootstrap/scripts/bootstrap-magellan.sh
Parent Directory | Revision Log
Revision 161 -
(hide annotations)
(download)
(as text)
Fri Jul 29 14:10:30 2005 UTC (19 years, 2 months ago) by niro
File MIME type: application/x-sh
File size: 8146 byte(s)
Fri Jul 29 14:10:30 2005 UTC (19 years, 2 months ago) by niro
File MIME type: application/x-sh
File size: 8146 byte(s)
typo
1 | niro | 155 | #!/bin/sh |
2 | niro | 161 | # $Header: /home/cvsd/magellan-cvs/magellan-src/bootstrap/scripts/bootstrap-magellan.sh,v 1.2 2005-07-29 14:10:30 niro Exp $ |
3 | niro | 155 | # |
4 | # bootstrap-magellan-chrooted-livecd.sh | ||
5 | # v0.3.6-r7 (21.10.2004) | ||
6 | # Niels Rogalla (niro@magellan-linux.de) | ||
7 | # | ||
8 | # creates a FHS compilant directory hirachy with devfs support | ||
9 | # then the magellan-baselayout will be installed | ||
10 | # All this will be handled from the host system via chroot | ||
11 | |||
12 | source /etc/sysconfig/rc | ||
13 | source $rc_functions | ||
14 | |||
15 | |||
16 | ### setup ### | ||
17 | CDPATH=/mnt/cdrom | ||
18 | DEST=/mnt/magellan | ||
19 | TOOLCHAIN=${CDPATH}/bootstrap/tools/magellan-toolchain-0.3-i486.tar.bz2 | ||
20 | CDMAGEDIR=${CDPATH}/bootstrap/mage-src | ||
21 | CDMAGETREE=${CDPATH}/mage-tree | ||
22 | CDPKGDIR=${CDPATH}/packages | ||
23 | CDMAGERC=/etc/mage.rc | ||
24 | VERSION=0.3.6-r7 | ||
25 | METHOD=NET | ||
26 | |||
27 | # which profile ? | ||
28 | if [ -z "${1}" ] | ||
29 | then | ||
30 | CDMAGEPROFILE=kernel24 | ||
31 | else | ||
32 | CDMAGEPROFILE="${1}" | ||
33 | fi | ||
34 | |||
35 | # which layout ? | ||
36 | if [ -z "${2}" ] | ||
37 | then | ||
38 | LAYOUT=basesystem.defaults | ||
39 | else | ||
40 | LAYOUT="${2}" | ||
41 | fi | ||
42 | |||
43 | |||
44 | ### functions ### | ||
45 | die() { | ||
46 | echo "Error: $@" | ||
47 | return 1 | ||
48 | } | ||
49 | |||
50 | secho() { | ||
51 | local i | ||
52 | i="$@" | ||
53 | echo -e "\n${COLOREDSTAR}${i}" | ||
54 | } | ||
55 | |||
56 | mecho() { | ||
57 | local i | ||
58 | i="$@" | ||
59 | echo -e "${COLMAGENTA}\t${i}${COLDEFAULT}" | ||
60 | } | ||
61 | |||
62 | necho() { | ||
63 | local i | ||
64 | i="$@" | ||
65 | echo -e "${COLGREEN}${i}${COLDEFAULT}" | ||
66 | } | ||
67 | |||
68 | showversion() { | ||
69 | echo -en "Magellan Bootstrap v${VERSION} " | ||
70 | echo -e "-- Niels Rogalla (niro@magellan-linux.de)" | ||
71 | } | ||
72 | |||
73 | |||
74 | |||
75 | if [ -z "${DEST}" ] | ||
76 | then | ||
77 | echo -e "\n\$DEST not found. Your Magellan Chroot Variable must be declared." | ||
78 | echo -e "example: export DEST=/mnt/magellan\n" | ||
79 | exit 1 | ||
80 | fi | ||
81 | |||
82 | |||
83 | enter_chroot() { | ||
84 | secho Entering Chroot ... | ||
85 | mount -t proc proc ${DEST}/proc | ||
86 | mount -o bind /dev ${DEST}/dev | ||
87 | |||
88 | chroot ${DEST} /tools/bin/env -i \ | ||
89 | HOME=/root TERM=$TERM PS1='\u:\w\$ ' \ | ||
90 | PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ | ||
91 | /tools/bin/bash -i | ||
92 | |||
93 | secho Cleanup Chroot ... | ||
94 | mecho Unmounting Chroot filesystems ... | ||
95 | ( | ||
96 | umount ${DEST}/proc | ||
97 | umount ${DEST}/dev | ||
98 | ) | ||
99 | evaluate_retval | ||
100 | |||
101 | if [[ ${METHOD} = CDROM ]] | ||
102 | then | ||
103 | mecho Unmounting Mage directories ... | ||
104 | ( | ||
105 | umount ${DEST}/usr/packages | ||
106 | umount ${DEST}/usr/mage | ||
107 | ) | ||
108 | evaluate_retval | ||
109 | fi | ||
110 | |||
111 | if [ -e ${DEST}/root/.bashrc ] | ||
112 | then | ||
113 | mecho Deleting instruction file ... | ||
114 | rm ${DEST}/root/.bashrc | ||
115 | evaluate_retval | ||
116 | fi | ||
117 | } | ||
118 | |||
119 | create_chrootdirs() { | ||
120 | local i | ||
121 | |||
122 | # creating directories | ||
123 | install -d ${DEST}/{bin,boot,dev/shm,etc,home,lib/dev-state,mnt,proc} || die | ||
124 | install -d ${DEST}/etc/{opt,env.d} || die | ||
125 | install -d ${DEST}/mnt/{floppy,cdrom} || die | ||
126 | install -d ${DEST}/{root,sbin,tmp,usr/local,var,opt} || die | ||
127 | for i in ${DEST}/usr ${DEST}/usr/local | ||
128 | do | ||
129 | install -d ${i}/{bin,etc,include,lib,sbin,share,src} || die | ||
130 | ln -snf share/{man,doc,info} ${i} || die | ||
131 | install -d ${i}/share/{dict,doc,info,locale,man} || die | ||
132 | install -d ${i}/share/{nls,misc,terminfo,zoneinfo} || die | ||
133 | install -d ${i}/share/man/man{1,2,3,4,5,6,7,8} || die | ||
134 | done | ||
135 | install -d ${DEST}/var/{lock,log,mail,run,spool} || die | ||
136 | install -d ${DEST}/var/{tmp,opt,cache,lib/misc,local} || die | ||
137 | install -d ${DEST}/opt/{bin,doc,include,info} || die | ||
138 | install -d ${DEST}/opt/{lib,man/man{1,2,3,4,5,6,7,8}} || die | ||
139 | |||
140 | ## correcting some rights | ||
141 | chmod 0750 ${DEST}/root || die | ||
142 | chmod 1777 ${DEST}/tmp || die | ||
143 | chmod 1777 ${DEST}/var/tmp || die | ||
144 | |||
145 | ## creating .keep files | ||
146 | touch ${DEST}/{bin,boot,dev/shm,etc,home,lib/dev-state,mnt,proc}/.keep || die | ||
147 | touch ${DEST}/etc/{opt,env.d}/.keep || die | ||
148 | touch ${DEST}/mnt/{floppy,cdrom}/.keep || die | ||
149 | touch ${DEST}/dev/.keep || die | ||
150 | touch ${DEST}/etc/.keep || die | ||
151 | touch ${DEST}/{root,sbin,tmp,usr/local,var,opt}/.keep || die | ||
152 | touch ${DEST}/usr/.keep || die | ||
153 | for i in ${DEST}/usr ${DEST}/usr/local | ||
154 | do | ||
155 | touch ${i}/{bin,etc,include,lib,sbin,share,src}/.keep || die | ||
156 | touch ${i}/share/{dict,doc,info,locale,man}/.keep || die | ||
157 | touch ${i}/share/{nls,misc,terminfo,zoneinfo}/.keep || die | ||
158 | touch ${i}/share/man/man{1,2,3,4,5,6,7,8}/.keep || die | ||
159 | done | ||
160 | touch ${DEST}/var/.keep || die | ||
161 | touch ${DEST}/var/{lock,log,mail,run,spool}/.keep || die | ||
162 | touch ${DEST}/var/{tmp,opt,cache,lib/misc,local}/.keep || die | ||
163 | touch ${DEST}/opt/.keep || die | ||
164 | touch ${DEST}/opt/{bin,doc,include,info}/.keep || die | ||
165 | touch ${DEST}/opt/{lib,man/man{1,2,3,4,5,6,7,8}}/.keep || die | ||
166 | touch ${DEST}/opt/man/.keep || die | ||
167 | } | ||
168 | |||
169 | |||
170 | create_symlinks(){ | ||
171 | mecho Creating symlinks ... | ||
172 | ## Creating some essential symlinks for bootstrap | ||
173 | ( | ||
174 | ## Creating the bash and sh symlinks | ||
175 | ln -snf /tools/bin/{basename,bash,cat,cut,date} ${DEST}/bin || die | ||
176 | ln -snf /tools/bin/{dirname,egrep,fgrep,grep} ${DEST}/bin || die | ||
177 | ln -snf /tools/bin/{ls,pwd,sed,stty,wc,whoami} ${DEST}/bin || die | ||
178 | ln -snf /tools/lib/libgcc_s.so.1 ${DEST}/usr/lib || die | ||
179 | ln -snf /tools/sbin/ldconfig ${DEST}/sbin/ldconfig || die | ||
180 | ln -snf bash ${DEST}/bin/sh || die | ||
181 | |||
182 | ## needed empty files (to prevent warnings only) | ||
183 | touch ${DEST}/etc/env.d/dummy || die | ||
184 | touch ${DEST}/etc/profile || die | ||
185 | install -d ${DEST}/etc/rc.d/init.d || die | ||
186 | touch ${DEST}/etc/rc.d/init.d/functions || die | ||
187 | ln -snf /etc/rc.d/init.d ${DEST}/etc/init.d || die | ||
188 | ) | ||
189 | |||
190 | evaluate_retval | ||
191 | } | ||
192 | |||
193 | create_devices(){ | ||
194 | niro | 161 | mecho Creating needed devices for devfs/udev |
195 | niro | 155 | ( |
196 | mknod -m 611 ${DEST}/dev/console c 5 1 | ||
197 | chgrp 4 ${DEST}/dev/console | ||
198 | mknod -m 666 ${DEST}/dev/null c 1 3 | ||
199 | ) | ||
200 | evaluate_retval | ||
201 | } | ||
202 | |||
203 | unpack_toolchain(){ | ||
204 | mecho Unpacking toolchain ... | ||
205 | tar --no-same-owner -xvjf ${TOOLCHAIN} -C ${DEST} | ||
206 | evaluate_retval | ||
207 | } | ||
208 | |||
209 | install_mage(){ | ||
210 | if [[ ${METHOD} = CDROM ]] | ||
211 | then | ||
212 | mecho Installing Mage ... | ||
213 | ( | ||
214 | install -d ${DEST}/usr/lib/mage | ||
215 | install -d ${DEST}/etc/rc.d/init.d | ||
216 | ${CDMAGEDIR}/setup_mage.sh \ | ||
217 | ${DEST} ${CDMAGEDIR} ${CDMAGERC} ${CDMAGEPROFILE} | ||
218 | mount -o bind ${CDMAGETREE} ${DEST}/usr/mage | ||
219 | mount -o bind ${CDPKGDIR} ${DEST}/usr/packages | ||
220 | ) | ||
221 | evaluate_retval | ||
222 | fi | ||
223 | |||
224 | if [[ ${METHOD} = NET ]] | ||
225 | then | ||
226 | mecho Installing Mage ... | ||
227 | ( | ||
228 | install -d ${DEST}/usr/lib/mage | ||
229 | install -d ${DEST}/etc/rc.d/init.d | ||
230 | ${CDMAGEDIR}/setup_mage.sh \ | ||
231 | ${DEST} ${CDMAGEDIR} ${CDMAGERC} ${CDMAGEPROFILE} | ||
232 | ) | ||
233 | evaluate_retval | ||
234 | fi | ||
235 | } | ||
236 | |||
237 | create_users() { | ||
238 | mecho Creating basic passwd file ... | ||
239 | echo 'root:x:0:0:root:/root:/bin/bash' > ${DEST}/etc/passwd | ||
240 | evaluate_retval | ||
241 | |||
242 | mecho Creating basic groups file ... | ||
243 | cat > ${DEST}/etc/group << "EOF" | ||
244 | root:x:0: | ||
245 | bin:x:1: | ||
246 | sys:x:2: | ||
247 | kmem:x:3: | ||
248 | tty:x:4: | ||
249 | tape:x:5: | ||
250 | daemon:x:6: | ||
251 | floppy:x:7: | ||
252 | disk:x:8: | ||
253 | lp:x:9: | ||
254 | dialout:x:10: | ||
255 | audio:x:11: | ||
256 | EOF | ||
257 | evaluate_retval | ||
258 | |||
259 | } | ||
260 | |||
261 | |||
262 | create_bashrc() { | ||
263 | cat ${rc_functions} > ${DEST}/root/.bashrc | ||
264 | cat >> ${DEST}/root/.bashrc << "EOF" | ||
265 | die() { | ||
266 | DIE="yes" | ||
267 | } | ||
268 | secho() { | ||
269 | local i | ||
270 | i="$@" | ||
271 | echo -e "\n${COLOREDSTAR}${i}" | ||
272 | } | ||
273 | mecho() { | ||
274 | local i | ||
275 | i="$@" | ||
276 | echo -e "${COLMAGENTA}\t${i}${COLDEFAULT}" | ||
277 | } | ||
278 | EOF | ||
279 | echo "export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin" >> ${DEST}/root/.bashrc | ||
280 | echo "export METHOD=${METHOD}" >> ${DEST}/root/.bashrc | ||
281 | echo "export LAYOUT=${LAYOUT}" >> ${DEST}/root/.bashrc | ||
282 | echo "export CDMAGEPROFILE=${CDMAGEPROFILE}" >> ${DEST}/root/.bashrc | ||
283 | |||
284 | ( source ${CDMAGERC}; echo "export MY_MAGEDIR=${MAGEDIR}" >> ${DEST}/root/.bashrc ) | ||
285 | |||
286 | cat >> ${DEST}/root/.bashrc << "EOF" | ||
287 | if [[ ${METHOD} = NET ]] | ||
288 | then | ||
289 | mecho Updating Mage ... | ||
290 | mage update | ||
291 | fi | ||
292 | |||
293 | # using default profile (if nothing given == kernel24) | ||
294 | mecho Using ${MY_MAGEDIR}/profiles/${CDMAGEPROFILE}/${LAYOUT} | ||
295 | source /etc/mage.rc | ||
296 | ln -snf ${MY_MAGEDIR}/profiles/${CDMAGEPROFILE} /etc/mage-profile | ||
297 | |||
298 | MY_LAYOUT=$(< /etc/mage-profile/${LAYOUT}) | ||
299 | |||
300 | mecho Installing Baselayout ... | ||
301 | CONFIG_PROTECT="-*" mage install ${MY_LAYOUT} | ||
302 | #evaluate_retval | ||
303 | |||
304 | mecho Please enter a root password | ||
305 | passwd root | ||
306 | exit | ||
307 | EOF | ||
308 | } | ||
309 | |||
310 | |||
311 | |||
312 | # bootstrap process starts here | ||
313 | showversion | ||
314 | secho Starting bootstrap... | ||
315 | |||
316 | unpack_toolchain | ||
317 | |||
318 | mecho Creating directories ... | ||
319 | create_chrootdirs | ||
320 | evaluate_retval | ||
321 | |||
322 | create_symlinks | ||
323 | create_devices | ||
324 | install_mage | ||
325 | create_users | ||
326 | |||
327 | create_bashrc | ||
328 | enter_chroot | ||
329 | |||
330 | secho Bootstraping finished... | ||
331 | echo | ||
332 | necho "Your System isn't configured yet ..." | ||
333 | necho "Please edit /etc/fstab," | ||
334 | necho " /etc/hostname," | ||
335 | necho " /etc/hosts," | ||
336 | necho " /etc/resolv.conf," | ||
337 | necho " /etc/modules.autoload/kernel-VERSION," | ||
338 | necho " /boot/grub/grub.conf" | ||
339 | necho "that they fit to your needs ..." | ||
340 | necho "Don't forget to write your bootsector ..." | ||
341 | necho "After that you can delete ${DEST}/tools and reboot your system ..." | ||
342 | echo |
Properties
Name | Value |
---|---|
svn:executable | * |