Subversion Repositories livecd

Rev

Rev 1 | Go to most recent revision | Details | Compare with Previous | 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
2 beyerle@PS 111
my_version=$( cat version 2>/dev/null )
1 beyerle@PS 112
echo $my_version > /etc/livecd-release
113
 
114
### Check for SMP kernel and set SMP variable
115
SMP=""
116
if [ -e /boot/vmlinuz-${KERNEL}smp ]; then
117
    # if you change SMP="s", you have also to change isolinux.cfg!
118
    # SMP can only be one character in lenght!
119
    export SMP="s"
120
fi
121
 
122
### start
123
echo
124
echo "--------------------------------------------"
125
if [ $DVD ]; then 
126
    echo "Build of LiveDVD started"
127
else
128
    echo "Build of LiveCD started"
129
fi
130
echo "Script version:      $my_version"
131
echo "Kernel version:      $KERNEL"
132
[ $SMP ] && echo "SMP Kernel version:  ${KERNEL}smp"
133
echo "--------------------------------------------"
134
 
135
[ $PSI ]  && echo "**** Build for PSI ****"
136
[ $SL ]   && echo "**** Build for SL ****"
137
[ $MINI ] && echo "**** Build for MINI-CD ****"
138
echo "--------------------------------------------"
139
 
140
 
141
# download livecd web page (for documentation)
142
echo "Try to download latest livecd documentation"
143
 
144
rm -rf /tmp/doc
145
mkdir -p /tmp/doc
146
wget --timeout=3 --quiet -nH --mirror -P /tmp/doc http://linux.web.psi.ch/livecd/
147
wget --timeout=3 --quiet -nH --mirror -P /tmp/doc http://linux.web.psi.ch/livecd/layout.css
148
if [ -d /tmp/doc/livecd ]; then
149
    echo "done."
150
else
151
    echo "download failed - not critical ;-)"
152
fi
153
 
154
 
155
# clean up build script directory
156
echo "--------------------------------------------"
157
echo "Remove all *~ files in $( pwd )"
158
find . | grep "~$" | while read f; do rm -f "$f"; done
159
echo "done."
160
echo "--------------------------------------------"
161
 
162
 
163
echo
164
echo "--------------------------------------------"
165
echo "Run ./customize-livecd.sh $PSI $DVD"
166
echo "--------------------------------------------"
167
./customize-livecd.sh $PSI $DVD $MINI
168
 
169
 
170
if [ $MINI ]; then
171
    echo "--------------------------------------------"
172
    echo "Run ./mini-livecd.sh $PSI $ROOTLOGIN $NOMOVE"
173
    echo "--------------------------------------------"
174
    ./mini-livecd.sh $PSI $ROOTLOGIN $NOMOVE
175
fi
176
 
177
if [ -d /tmp/doc/livecd ]; then
178
    echo
179
    echo "--------------------------------------------"
180
    echo "Create /usr/share/doc/livecd"
181
    echo "--------------------------------------------"
182
    mkdir -p /usr/share/doc/HTML
183
    cp -a customize/HTML/index.html /usr/share/doc/HTML/index.html    
184
    rm -rf /usr/share/doc/livecd
185
    cp -a /tmp/doc/livecd /usr/share/doc/
186
    echo "done."
187
    echo
188
fi
189
 
190
echo
191
echo "--------------------------------------------"
192
echo "cd linux-live.sl"
193
echo "--------------------------------------------"
194
 
195
cd linux-live.sl
196
 
197
echo "Set kernel boot options in cd-root/isolinux.cfg"
198
# for lable linux
199
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
200
# for lable linuxsmp
201
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
202
# for lable failsafe
203
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
204
 
205
echo "Set 'Welcome ... to' in splash.cfg"
206
sed -i "s|DVD|CD|" cd-root/boot/splash.cfg
207
 
208
if [ $PSI ]; then
209
    sed -i "s|Welcome to.* LiveCD.*|Welcome to PSI $LIVECD_OS LiveCD|" cd-root/boot/splash.cfg
210
else
211
    sed -i "s|Welcome to.* LiveCD.*|Welcome to $RELEASE|" cd-root/boot/splash.cfg
212
fi
213
 
214
sed -i "s|LiveCD 64bit|LiveCD|" cd-root/boot/splash.cfg
215
if [ "$ARCH" = "x86_64" ]; then
216
    sed -i "s|LiveCD|LiveCD 64bit|" cd-root/boot/splash.cfg
217
fi
218
 
219
if [ $DVD ]; then
220
    sed -i "s|CD|DVD|" cd-root/boot/splash.cfg
221
fi
222
 
223
echo "Set KERNEL=$KERNEL in config"
224
sed -i "s|^KERNEL=.*|KERNEL=$KERNEL|" config
225
 
226
echo "Set RAM0SIZE=$RAM0SIZE in config"
227
sed -i "s|^RAM0SIZE=.*|RAM0SIZE=$RAM0SIZE|" config
228
 
229
echo "Set ramdisk_size=$RAMDISK_SIZE in cd-root/boot/DOS/config"
230
sed -i "s|^ramdisk_size=.*|ramdisk_size=$RAMDISK_SIZE|" cd-root/boot/DOS/config
231
 
232
echo
233
echo "--------------------------------------------"
234
echo "Run ./runme.sh"
235
echo "--------------------------------------------"
236
./runme.sh
237
 
238
echo
239
echo "--------------------------------------------"
240
echo "Now fix things to make this system bootable"
241
echo "--------------------------------------------"
242
cd ..
243
./restore-system.sh $PSI
244
 
245
 
246
echo "--------------------------------------------"
247
echo "End of Build LiveCD" 
248
echo "See /tmp for the ISO image"
249
echo "--------------------------------------------"