Subversion Repositories livecd

Rev

Rev 2 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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