File: boot-i386

package info (click to toggle)
debian-cd 3.1.5
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 3,532 kB
  • ctags: 138
  • sloc: sh: 6,174; perl: 2,352; makefile: 349
file content (262 lines) | stat: -rwxr-xr-x 7,882 bytes parent folder | download | duplicates (2)
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
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
#!/bin/bash
#
# Do install stuff for i386, including making bootable CDs
# Works with debian-installer
#
# $1 is the CD number
# $2 is the temporary CD build dir

. $BASEDIR/tools/boot/$DI_CODENAME/common.sh

set -e

N=$1
CDDIR=$2
BOOTDIR=
if [ "$DI_WWW_HOME" = "default" ];then
   DI_WWW_HOME="http://people.debian.org/~joeyh/d-i/images/daily"
   if [ -n "$DI_DIR" ];then
      DI_DIR="$DI_DIR/~${DI_WWW_HOME#*~}"
      DI_WWW_HOME=""                     
      echo "Using images from $DI_DIR"
   fi
fi
if [ ! "$DI_DIST" ]; then
   DI_DIST="$DI_CODENAME"
fi

cd $CDDIR/..

# This script is called with $1 (now $N) as the CD to 
# make bootable.  N may be in the form "n" or "n_NONUS"
# There may be more than 4 disks...support extras.

# Strip NONUS part of disk number
# NN will be 1...N so it can be used as an index
NN=`echo $N | sed -e 's/_NONUS//'`

# List of boot image for each CD
KTYPE[1]="" #isolinux multiboot in fact
# Disable el-torito boot CD for Etch Beta 3
#KTYPE[2]="cdrom"
KTYPE[2]=""
# XXX add net-image back when it's fixed
KTYPE[3]=""
KTYPE[4]=""
KTYPE[5]=""
KTYPE[6]=""
KTYPE[7]=""
KTYPE[8]=""
KTYPE[9]=""
KTYPE[10]=""

THISTYPE=${KTYPE[$NN]}

BOOT_IMAGES="cdrom/initrd.gz cdrom/vmlinuz cdrom/debian-cd_info.tar.gz"
# Only include disk images on full CDs, not on smaller images.
if [ "$INSTALLER_CD" != 1 ] && [ "$INSTALLER_CD" != 2 ]; then
	DISK_IMAGES="floppy/cd-drivers.img floppy/boot.img floppy/root.img"
	#EXTRA_DISK_IMAGES="cdrom/boot.img"
fi

# Download boot images and floppies.
for image in $BOOT_IMAGES; do
    if [ ! -e "$image" ]; then
	dir=$(dirname $image)
	mkdir -p $dir
	if [ -n "$LOCAL"  -a -f "${LOCALDEBS:-$MIRROR}/dists/$DI_DIST/local/installer-$ARCH/current/images/$image" ]; then
		cp "${LOCALDEBS:-$MIRROR}/dists/$DI_DIST/local/installer-$ARCH/current/images/$image" "$image"
	elif [ ! "$DI_WWW_HOME" ];then
		if [ ! "$DI_DIR" ];then
		   DI_DIR="$MIRROR/dists/$DI_DIST/main/installer-$ARCH/current/images"
		fi
#       echo "Copying images from $DI_DIR"
		cp "$DI_DIR/$image" "$image"
	else
		wget "$DI_WWW_HOME/$image" -O "$image"
	fi
    fi
done

# Images that are not really required or may be unavailable.
for image in $DISK_IMAGES $EXTRA_DISK_IMAGES; do
    if [ ! -e "$image" ]; then
	dir=$(dirname $image)
	mkdir -p $dir
	if [ -n "$LOCAL"  -a -f "${LOCALDEBS:-$MIRROR}/dists/$DI_DIST/local/installer-$ARCH/current/images/$image" ]; then
		cp "${LOCALDEBS:-$MIRROR}/dists/$DI_DIST/local/installer-$ARCH/current/images/$image" "$image"
	elif [ ! "$DI_WWW_HOME" ];then
		if [ ! "$DI_DIR" ];then
		   DI_DIR="$MIRROR/dists/$DI_DIST/main/installer-$ARCH/current/images"
		fi
		cp "$DI_DIR/$image" "$image" || true
	else
		wget "$DI_WWW_HOME/$image" -O "$image" || rm -f "$image"
	fi
    fi
done

if [ "$NN" = "1" ]; then
    echo "      Using ISOLINUX boot-disks image on CD$N"
    mkdir -p boot$N/isolinux $CDDIR/install.386
    cp -lf cdrom/vmlinuz $CDDIR/install.386/
    cp -lf cdrom/initrd.gz $CDDIR/install.386/

	add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-J"
	add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-cache-inodes"
	add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-b isolinux/isolinux.bin"
	add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-c isolinux/boot.cat"
	add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-no-emul-boot"
	add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-boot-load-size 4"
	add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-boot-info-table"	
else
    if [ -n "$THISTYPE" ]; then
		echo "      Using $THISTYPE boot-disks image on CD$N"
		mkdir -p boot$N/boot
		cp $THISTYPE/boot.img boot$N/boot/

		add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-J"
		add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-cache-inodes"
		add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-b boot/boot.img"
    else
		mkdir boot$N
		add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-J"
		add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-cache-inodes"
    fi
fi

syslinux_files () {
	type=$1
	
	mv boot$N/isolinux/f3.txt.$type boot$N/isolinux/f3.txt
	mv boot$N/isolinux/f4.txt.$type boot$N/isolinux/f4.txt
	mv boot$N/isolinux/isolinux.cfg.$type boot$N/isolinux/isolinux.cfg
}

extra_image () {
    image=$1
    dir=$(dirname "$image")

    mkdir -p $CDDIR/install.386/$dir
    if [ ! -e $CDDIR/install.386/"$image" ] ; then
	if [ ! "$DI_WWW_HOME" ] ; then
	    if [ ! "$DI_DIR" ] ; then
		DI_DIR="$MIRROR/dists/$DI_DIST/main/installer-$ARCH/current/images"
	    fi
	    cp "$DI_DIR/cdrom/$image" $CDDIR/install.386/"$image"
	else
	    wget "$DI_WWW_HOME/cdrom/$image" -O $CDDIR/install.386/"$image"
	fi
    fi
}

# Only disk one gets the extra files installed
if [ "$NN" = "1" ]; then
	# populate the install directory as well
	for disk in $DISK_IMAGES $EXTRA_DISK_IMAGES; do
          if [ -e "$disk" ]; then
		dir=$(dirname $disk)
		mkdir -p $CDDIR/install.386/$dir
		cp -lf $disk $CDDIR/install.386/$dir
          fi
	done

    # If the isolinux dir already exists, rename it aside for now
	if [ -e boot$N/isolinux/isolinux.cfg ] ; then
		mv boot$N/isolinux boot$N/isolinux-amd64
        mkdir boot$N/isolinux
    fi

	# Isolinux setup including config and help files comes from d-i.
	cat cdrom/debian-cd_info.tar.gz | (cd boot$N/isolinux/; tar zx)
	if [ -e boot$N/isolinux/f3.txt.with26+gtk ]; then
		extra_image 2.6/initrd.gz
		extra_image 2.6/vmlinuz
		extra_image gtk/initrd.gz
		syslinux_files with26+gtk
	elif [ -e boot$N/isolinux/f3.txt.withgtk ]; then
		extra_image gtk/initrd.gz
		syslinux_files withgtk
	elif [ -e boot$N/isolinux/f3.txt.with26 ];then
		extra_image 2.6/initrd.gz
		extra_image 2.6/vmlinuz
		syslinux_files with26
	fi
	rm -f boot$N/isolinux/isolinux.cfg.with* 2>/dev/null || true

	if [ "$SPLASHPNG" ] ; then
		# Insert our own splash screen.  Color index 0 is
		# background, and index 7 is foreground.  Set to black and
		# white respecively
		pngtopnm < $SPLASHPNG | ppmquant 16 | \
			ppmtolss16 "#ffffff=7" "#000000=0" > boot$N/isolinux/splash.rle
	fi

	sed -i "s|/install/|/install.386/|" boot$N/isolinux/isolinux.cfg

	if [ -e boot$N/isolinux-amd64/isolinux.cfg ] ; then
		for file in boot$N/isolinux/f3.txt* boot$N/isolinux/f4.txt*
		do
			cat $file | awk '
				NR==3 { next }
				NR==5 { printf " (i386 is default; prepend 'amd64-' to use an amd64 kernel instead)\n" }
				/.*/  { print $0 }' > $file.tmp
			mv $file.tmp $file
		done

		cat boot$N/isolinux-amd64/isolinux.cfg | awk '
				/^LABEL/ { printf("LABEL amd64-%s\n", $2) }
				/^DEFAULT/ { printf("DEFAULT64 amd64-%s\n", $2) }
				/kernel/ { print $0 }
				/append/ { print $0 }' >> boot$N/isolinux/isolinux.cfg

	    rm -rf boot$N/isolinux-amd64
	fi

	mkdir -p $CDDIR/../syslinux
	SYSLINUXDEB=`$BASEDIR/tools/which_deb $MIRROR $DI_CODENAME syslinux`
	ar p "$MIRROR/${SYSLINUXDEB}" data.tar.gz | tar zxf - -C $CDDIR/../syslinux ./usr/lib
	cp -f $CDDIR/../syslinux/usr/lib/syslinux/isolinux.bin boot$N/isolinux/

    echo $SYSLINUXDEB >> $CDDIR/../$N.pkgs_extracted
    $BASEDIR/tools/which_deb $MIRROR $DI_CODENAME syslinux source >> $CDDIR/../$N.pkgs_extracted

	if [ -n "$KERNEL_PARAMS" ]; then
		# Substitute custom kernel params into the isolinux config
		# file.
		sed -i "s|append |append $KERNEL_PARAMS |" boot$N/isolinux/isolinux.cfg
	fi

    if [ -n "$ISOLINUX_DEFAULT" ]; then
        sed -i "s/^DEFAULT .*$/DEFAULT $ISOLINUX_DEFAULT/" boot$N/isolinux/isolinux.cfg
    fi
    sed -i "s|built on|built $BUILD_DATE; d-i|" boot$N/isolinux/f1.txt

fi

rm -rf cdrom

# Add autorun if we have README.html

if [ -f $CDDIR/README.html ]; then
	todos > $CDDIR/autorun.inf <<EOF
[autorun]
open=autorun.bat
EOF
	todos > $CDDIR/autorun.bat <<EOF
@echo Starting "README.html"...
@start README.html
@exit
EOF
fi

if [ "$NN" = "1" ]; then
    add_mkisofs_opt $CDDIR/../$N.mkisofs_dirs "boot$N"
else
	if [ -n "$THISTYPE" ]; then
        add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-c boot/boot.catalog"
        add_mkisofs_opt $CDDIR/../$N.mkisofs_dirs "boot$N"
	fi
fi

# th,th, thats all