Subversion Repositories livecd

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 beyerle@PS 1
#!/bin/bash
2
#
3
###############################################################
4
#
5
# This will build the CD iso image in /tmp
6
# 
7
# it will execute:
8
# - ./customize-livecd.sh
9
# - ./runme.sh
10
# - ./restore-system.sh
11
#
12
# will take the configuration from
13
# - ./livecd.conf
14
#
15
# Urs Beyerle, PSI
16
#
17
###############################################################
18
 
19
# source livecd.conf
20
. livecd.conf
21
 
22
###############################################################
23
 
24
function usage() {
25
 
26
   ## Usage
27
   # ----------------------------------------------------------
28
 
29
   cat <<EOF
30
 
31
  Options:
32
 
33
    -h:         print this screen
34
    -psi:       customize for PSI Live CD
35
    -sl:        customize for SL Live CD
36
 
37
  Optional Options:
38
 
39
    -mini:      build a MINI-CD (not well tested)
40
    -dvd:       build a Live DVD
41
 
42
  Additionally Options for MINI-CD:
43
 
44
    -nomove:    do NOT move to /mini to save diskspace 
45
    -rootlogin: directly login as root
46
 
47
  Configuration file:
48
 
49
    See livecd.conf for more configuration options !!
50
 
51
 
52
EOF
53
 
54
}
55
 
56
### read options from command-line
57
PSI=""
58
OPTIONS=$@
59
 
60
while [ $# -gt 0 ]; do
61
 
62
    case "$1" in
63
       -h)
64
            usage; exit;;
65
       -psi)
66
            PSI="-psi"; shift; continue;;
67
       -sl)
68
            SL="-sl"; shift; continue;;
69
       -mini)
70
            MINI="-mini"; shift; continue;;
71
       -nomove)
72
            NOMOVE="-nomove"; shift; continue;;
73
       -rootlogin)
74
            ROOTLOGIN="-rootlogin"; shift; continue;;
75
       -dvd)
76
            DVD="-dvd"; shift; continue;;
77
       *)
78
            usage; exit;;
79
    esac
80
 
81
done
82
 
83
### only build for SL or PSI
84
if [ ! $PSI ] && [ ! $SL ]; then
85
    usage 
86
    exit
87
fi
88
 
89
### check if I run inside my directory
90
if [ ! -x $( basename $0 ) ]; then
91
    echo "Please run $( basename $0 ) within its directory"
92
    exit 1
93
fi
94
 
95
### add extra boot options
96
BOOT_OPTIONS="$BOOT_OPTIONS $EXTRA_BOOT_OPTIONS"
97
 
98
### add option "psi" for PSI
99
[ $PSI ] && BOOT_OPTIONS="psi $BOOT_OPTIONS"
100
 
101
ARCH=$( /bin/arch )
102
[ "$ARCH" != "x86_64" ] && ARCH=i686
103
 
104
if [ -e /etc/redhat-release ]; then
105
    RELEASE=$( cat /etc/redhat-release )
106
else
107
    RELEASE="my"
108
fi
109
 
110
### write my version to /etc/livecd-release
111
my_pwd=$( pwd )
112
my_version=${my_pwd##*/}
113
echo $my_version > /etc/livecd-release
114
 
115
### Check for SMP kernel and set SMP variable
116
SMP=""
117
if [ -e /boot/vmlinuz-${KERNEL}smp ]; then
118
    # if you change SMP="s", you have also to change isolinux.cfg!
119
    # SMP can only be one character in lenght!
120
    export SMP="s"
121
fi
122
 
123
### start
124
echo
125
echo "--------------------------------------------"
126
if [ $DVD ]; then 
127
    echo "Build of LiveDVD started"
128
else
129
    echo "Build of LiveCD started"
130
fi
131
echo "Script version:      $my_version"
132
echo "Kernel version:      $KERNEL"
133
[ $SMP ] && echo "SMP Kernel version:  ${KERNEL}smp"
134
echo "--------------------------------------------"
135
 
136
[ $PSI ]  && echo "**** Build for PSI ****"
137
[ $SL ]   && echo "**** Build for SL ****"
138
[ $MINI ] && echo "**** Build for MINI-CD ****"
139
echo "--------------------------------------------"
140
 
141
 
142
# download livecd web page (for documentation)
143
echo "Try to download latest livecd documentation"
144
 
145
rm -rf /tmp/doc
146
mkdir -p /tmp/doc
147
wget --timeout=3 --quiet -nH --mirror -P /tmp/doc http://linux.web.psi.ch/livecd/
148
wget --timeout=3 --quiet -nH --mirror -P /tmp/doc http://linux.web.psi.ch/livecd/layout.css
149
if [ -d /tmp/doc/livecd ]; then
150
    echo "done."
151
else
152
    echo "download failed - not critical ;-)"
153
fi
154
 
155
 
156
# clean up build script directory
157
echo "--------------------------------------------"
158
echo "Remove all *~ files in $( pwd )"
159
find . | grep "~$" | while read f; do rm -f "$f"; done
160
echo "done."
161
echo "--------------------------------------------"
162
 
163
 
164
echo
165
echo "--------------------------------------------"
166
echo "Run ./customize-livecd.sh $PSI $DVD"
167
echo "--------------------------------------------"
168
./customize-livecd.sh $PSI $DVD $MINI
169
 
170
 
171
if [ $MINI ]; then
172
    echo "--------------------------------------------"
173
    echo "Run ./mini-livecd.sh $PSI $ROOTLOGIN $NOMOVE"
174
    echo "--------------------------------------------"
175
    ./mini-livecd.sh $PSI $ROOTLOGIN $NOMOVE
176
fi
177
 
178
if [ -d /tmp/doc/livecd ]; then
179
    echo
180
    echo "--------------------------------------------"
181
    echo "Create /usr/share/doc/livecd"
182
    echo "--------------------------------------------"
183
    mkdir -p /usr/share/doc/HTML
184
    cp -a customize/HTML/index.html /usr/share/doc/HTML/index.html    
185
    rm -rf /usr/share/doc/livecd
186
    cp -a /tmp/doc/livecd /usr/share/doc/
187
    echo "done."
188
    echo
189
fi
190
 
191
echo
192
echo "--------------------------------------------"
193
echo "cd linux-live.sl"
194
echo "--------------------------------------------"
195
 
196
cd linux-live.sl
197
 
198
echo "Set kernel boot options in cd-root/isolinux.cfg"
199
# for lable linux
200
sed -i "s|append l initrd=boot/initrd.gz init=linuxrc .*|append l initrd=boot/initrd.gz init=linuxrc $BOOT_OPTIONS|" cd-root/isolinux.cfg
201
# for lable linuxsmp
202
sed -i "s|append l initrd=boot/initrd${SMP}.gz init=linuxrc .*|append l initrd=boot/initrd${SMP}.gz init=linuxrc $BOOT_OPTIONS|" cd-root/isolinux.cfg
203
# for lable failsafe
204
sed -i "s|append f initrd=boot/initrd.gz init=linuxrc .*|append f initrd=boot/initrd.gz init=linuxrc $BOOT_OPTIONS $FAILSAFE_BOOT_OPTIONS|" cd-root/isolinux.cfg
205
 
206
echo "Set 'Welcome ... to' in splash.cfg"
207
sed -i "s|DVD|CD|" cd-root/boot/splash.cfg
208
 
209
if [ $PSI ]; then
210
    sed -i "s|Welcome to.* LiveCD.*|Welcome to PSI $LIVECD_OS LiveCD|" cd-root/boot/splash.cfg
211
else
212
    sed -i "s|Welcome to.* LiveCD.*|Welcome to $RELEASE|" cd-root/boot/splash.cfg
213
fi
214
 
215
sed -i "s|LiveCD 64bit|LiveCD|" cd-root/boot/splash.cfg
216
if [ "$ARCH" = "x86_64" ]; then
217
    sed -i "s|LiveCD|LiveCD 64bit|" cd-root/boot/splash.cfg
218
fi
219
 
220
if [ $DVD ]; then
221
    sed -i "s|CD|DVD|" cd-root/boot/splash.cfg
222
fi
223
 
224
echo "Set KERNEL=$KERNEL in config"
225
sed -i "s|^KERNEL=.*|KERNEL=$KERNEL|" config
226
 
227
echo "Set RAM0SIZE=$RAM0SIZE in config"
228
sed -i "s|^RAM0SIZE=.*|RAM0SIZE=$RAM0SIZE|" config
229
 
230
echo "Set ramdisk_size=$RAMDISK_SIZE in cd-root/boot/DOS/config"
231
sed -i "s|^ramdisk_size=.*|ramdisk_size=$RAMDISK_SIZE|" cd-root/boot/DOS/config
232
 
233
echo
234
echo "--------------------------------------------"
235
echo "Run ./runme.sh"
236
echo "--------------------------------------------"
237
./runme.sh
238
 
239
echo
240
echo "--------------------------------------------"
241
echo "Now fix things to make this system bootable"
242
echo "--------------------------------------------"
243
cd ..
244
./restore-system.sh $PSI
245
 
246
 
247
echo "--------------------------------------------"
248
echo "End of Build LiveCD" 
249
echo "See /tmp for the ISO image"
250
echo "--------------------------------------------"