]> git.pld-linux.org Git - projects/geninitrd.git/blame - geninitrd
- cosmetics.
[projects/geninitrd.git] / geninitrd
CommitLineData
bb529f94
JK
1#!/bin/sh
2
3# geninitrd
4#
5# by Jacek Konieczny <jajcus@pld.org.pl>
6#
413878f8 7# based on mkinitrd from RedHat
c31050f3
TP
8
9RCSID='$Id: geninitrd,v 2.11 2002/01/17 20:14:55 gotar Exp $'
bb529f94
JK
10PATH=/sbin:$PATH
11export PATH
12
2b649ae0 13VERSION="`echo "$RCSID"|awk '{print $3}'`"
bb529f94
JK
14
15. /etc/rc.d/init.d/functions
16
17COMPRESS="yes"
18FS="rom"
a0a82190 19USEBSP="yes"
2968c9dd 20USERAIDSTART="no"
5dc785c7 21PRESCSIMODS="scsi_mod unknown sd_mod"
22PREIDEMODS="ide-mod ide-probe ide-probe-mod ide-disk"
bb529f94
JK
23target=""
24kernel=""
25force=""
26verbose=""
27MODULES=""
28img_vers=""
29modulefile=/etc/modules.conf
611e9e47 30raidtab=/etc/raidtab
bb529f94
JK
31fstab="/etc/fstab"
32
33usage () {
a2c2980f 34 echo "usage: `basename $0` [--version] [-v] [-f] [--ifneeded] [--preload <module>]" 1>&2
c31050f3 35 echo " [--with=<module>] [--image-version] [--fstab=<fstab>] [--nocompress]" 1>&2
c67cee17 36 echo " [--fs=rom|ext2|cram] [--no-bsp] [--modules-conf=<modules.conf>]" 1>&2
a2c2980f
AF
37 echo " <initrd-image> <kernel-version>" 1>&2
38 echo " (ex: `basename $0` /boot/initrd-2.2.5-15.img 2.2.5-15)" 1>&2
7d2fc5eb 39 exit 1
bb529f94
JK
40}
41
aa69da6e 42
43my_find() {
44 for name in `ls`
45 do
413878f8 46 if [ -d $name ]; then
47 if [ "$name" != "build" ]; then
48 (cd $name;my_find $1/$name $2)
49 fi
50 else
51 if [ -f $name -a "$name" = "$2" ]; then
52 echo $1/$name
53 fi
9c9f7cdb 54 fi
aa69da6e 55 done
56}
57
81de8443
AF
58my_dirname() {
59 echo $1|awk -F/ '{print substr($0, 0, length($0) - length($NF));}'
60}
61
bb529f94 62findmodule() {
413878f8 63 skiperrors=""
64 modName=$1
65 if [ "$(echo $modName | awk '{print(substr($0,1,1));}')" = "-" ]; then
66 skiperrors=1
67 modName="$(echo $modName | awk '{print(substr($0,2));}')"
68 fi
bb529f94 69
413878f8 70 if [ "$modName" = "pluto" ]; then
71 findmodule fc4
72 findmodule soc
73 fi
74 if [ "$modName" = "fcal" ]; then
75 findmodule fc4
76 findmodule socal
77 fi
bb529f94 78
413878f8 79 fmPath="`(cd /lib/modules/$kernel; my_find . "$modName.o")`"
bb529f94 80
413878f8 81 if [ ! -f "/lib/modules/$kernel/$fmPath" ]; then
82 if [ -n "$skiperrors" ]; then
83 return
84 fi
bb529f94 85
413878f8 86 # ignore the absence of the scsi modules
87 for n in $PRESCSIMODS; do
88 if [ "$n" = "$modName" ]; then
89 return;
90 fi
91 done;
92
93 # ignore the absence of the ide modules
94 for n in $PREIDEMODS; do
95 if [ "$n" = "$modName" ]; then
96 return;
97 fi
98 done;
c31050f3 99
a2c2980f 100 echo "No module $modName found for kernel $kernel" 1>&2
413878f8 101 exit 1
102 fi
bb529f94 103
413878f8 104 # only need to add each module once
105 tmpFmPath="`echo "$fmPath"|awk -F/ '{for(i=1;i<NF;i++) { printf("%s\\\\/",$i); } { print $NF; }}'`"
106 if is_yes "`echo "$MODULES" | awk '/"'$tmpFmPath'"/ { print "yes"; }' `" ; then : ; else
107 MODULES="$MODULES $fmPath"
108 fi
bb529f94
JK
109}
110
111inst() {
413878f8 112 if [ "$#" != "2" ];then
113 echo "usage: inst <file> <destination>"
114 return
c31050f3 115 fi
413878f8 116 [ -n "$verbose" ] && echo "$1 -> $2"
117 cp "$1" "$2"
bb529f94
JK
118}
119
a2c2980f
AF
120get_label_ext2 () {
121 /sbin/e2label $1 2> /dev/null
122}
123
124get_uuid_ext2 () {
c31050f3 125 /sbin/tune2fs -l $1 2> /dev/null | awk -F: '/UUID:/ {gsub(" ",""); print $2}'
a2c2980f
AF
126}
127
128get_label_xfs () {
3b9c8219 129 /usr/sbin/xfs_db -x -p xfs_admin -c label -r "$1"|awk -F= '{sub("^\"","", $2); sub("\"$", "", $2); print $2}'
c31050f3 130
a2c2980f
AF
131}
132
133get_uuid_xfs () {
3b9c8219 134 /usr/sbin/xfs_db -x -p xfs_admin -c uuid -r "$1"|awk -F= '{print $2}'
a2c2980f
AF
135}
136
c31050f3 137find_root() {
a2c2980f
AF
138 eval `awk '/^[\t ]*#/ {next} {if ( $2 == "/" ) {print "rootdev=\"" $1 "\"\nrootFs=\"" $3 "\""}}' $fstab`
139 case $rootdev in
140 LABEL=*)
141 case $rootFs in
c31050f3 142 ext2)
a2c2980f
AF
143 if [ ! -x /sbin/e2label ] ; then
144 echo "/sbin/e2label is missing" 1>&2
145 exit 1
146 fi
147 get_label="get_label_ext2"
148 ;;
3b9c8219
AF
149 xfs)
150 if [ ! -x /usr/sbin/xfs_db ] ; then
151 echo "/usr/sbin/xfs_db is missing" 1>&2
152 exit 1
153 fi
154 get_label="get_label_xfs"
155 ;;
a2c2980f
AF
156 *)
157 echo "LABEL on $rootFs in not supported by geninitrd" 1>&2
158 exit 1
159 ;;
160 esac
161 if [ ! -r /proc/partitions ] ; then
162 echo '/proc/partitions is not readable'; 1>&2
163 exit 1
164 fi
165 label=${rootdev#"LABEL="}
166 for dev in `awk 'BEGIN {getline;getline} {print "/dev/" $4}' /proc/partitions` ; do
167 if [ -r $dev ] && [ "$label" = "`$get_label $dev`" ] ; then
168 if [ -n "$verbose" ] ; then
169 echo "Using $dev as device for rootfs"
170 fi
c31050f3
TP
171 rootdev=$dev
172 rootdev_found=1
173 break
a2c2980f
AF
174 fi
175 done
176 if [ "$rootdev_found" != 1 ] ; then
c31050f3
TP
177 echo "geninitrd can't find real device for LABEL=$label" 1>&2
178 exit 1
a2c2980f
AF
179 fi
180 ;;
181 UUID=*)
182 case $rootFs in
c31050f3 183 ext2)
a2c2980f
AF
184 if [ ! -x /sbin/tune2fs ] ; then
185 echo "/sbin/tune2fs is missing" 1>&2
186 exit 1
187 fi
188 get_uuid="get_uuid_ext2"
189 ;;
3b9c8219
AF
190 xfs)
191 if [ ! -x /usr/sbin/xfs_db ] ; then
192 echo "/usr/sbin/xfs_db is missing" 1>&2
193 exit 1
194 fi
195 get_label="get_uuid_xfs"
196 ;;
a2c2980f
AF
197 *)
198 echo "UUID on $rootFs in not supported by geninitrd" 1>&2
199 exit 1
200 ;;
201 esac
202 if [ ! -r /proc/partitions ] ; then
203 echo '/proc/partitions is not readable'; 1>&2
204 exit 1
205 fi
206 uuid=${rootdev#"UUID="}
207 for dev in `awk 'BEGIN {getline;getline} {print "/dev/" $4}' /proc/partitions` ; do
208 if [ -r $dev ] && [ "$uuid" = "`$get_uuid $dev`" ] ; then
209 if [ -n "$verbose" ] ; then
210 echo "Using $dev as device for rootfs"
211 fi
c31050f3
TP
212 rootdev=$dev
213 rootdev_found=1
214 break
a2c2980f
AF
215 fi
216 done
217 if [ "$rootdev_found" != 1 ] ; then
c31050f3
TP
218 echo "geninitrd can't find real device for UUID=$uuid" 1>&2
219 exit 1
a2c2980f
AF
220 fi
221 ;;
222 esac
223
224}
bb529f94 225
5dc785c7 226if [ -r /etc/sysconfig/geninitrd ] ; then
227 . /etc/sysconfig/geninitrd
228fi
229
230if is_yes $USEBSP ; then
231 [ ! -x /sbin/bsp ] && USEBSP="no"
232fi
233if [ "`uname -m`" = "ia64" ]; then
234 IMAGESIZE=3000
235else
236 IMAGESIZE=1500
237fi
bb529f94 238while [ $# -gt 0 ]; do
413878f8 239 case $1 in
c31050f3 240 --no-bsp)
413878f8 241 USEBSP="no"
242 ;;
bb529f94 243 --fstab*)
413878f8 244 if is_yes "`echo $1 | awk '/=/ { print "yes"; }'`" ; then
245 fstab="`echo $1 | awk -F= '{print $2;}'`"
246 else
247 fstab="$2"
248 shift
c31050f3 249 fi
413878f8 250 ;;
cd670d83
AF
251 --modules-conf=*)
252 modulefile="`echo $1 | awk -F= '{print $2;}'`"
253 ;;
57188d60 254 --modules-conf)
cd670d83
AF
255 modulefile="$2"
256 shift
257 ;;
611e9e47
AF
258 --raidtab=*)
259 raidtab="`echo $1 | awk -F= '{print $2;}'`"
260 ;;
261 --raidtab)
262 raidtab="$2"
263 shift
264 ;;
bb529f94 265 --with*)
413878f8 266 if is_yes "`echo $1 | awk '/=/ { print "yes"; }'`" ; then
267 modname="`echo $1 | awk -F= '{print $2;}'`"
268 else
269 modname="$2"
270 shift
c31050f3 271 fi
413878f8 272
273 BASICMODULES="$BASICMODULES $modname"
274 ;;
bb529f94 275 --version)
413878f8 276 echo "geninitrd: version $VERSION"
277 exit 0
278 ;;
bb529f94 279 -v)
413878f8 280 verbose=-v
281 ;;
bb529f94 282 --nocompress)
413878f8 283 COMPRESS="no"
284 ;;
bb529f94 285 --ifneeded)
413878f8 286 ifneeded=1
287 ;;
bb529f94 288 -f)
413878f8 289 force=1
290 ;;
ea1dbbbe 291 --preload*)
413878f8 292 if is_yes "`echo $1 | awk '/=/ { print "yes"; }'`" ; then
293 modname="`echo $1 | awk -F= '{print $2;}'`"
294 else
295 modname="$2"
296 shift
c31050f3 297 fi
413878f8 298 PREMODS="$PREMODS $modname"
299 ;;
cd670d83
AF
300 --fs=*)
301 FS="`echo $1 | awk -F= '{print $2;}'`"
302 ;;
06ac05d6 303 --fs)
413878f8 304 FS="$2"
305 shift
306 ;;
bb529f94 307 --image-version)
413878f8 308 img_vers=yes
309 ;;
2968c9dd
AF
310 --use-raidstart)
311 USERAIDSTART=yes
312 ;;
bb529f94 313 *)
413878f8 314 if [ -z "$target" ]; then
315 target="$1"
316 elif [ -z "$kernel" ]; then
317 kernel="$1"
318 else
319 usage
320 fi
321 ;;
322 esac
323
324 shift
bb529f94
JK
325done
326
06ac05d6 327if [ -z "$target" -o -z "$kernel" ]; then
413878f8 328 usage
06ac05d6
AF
329fi
330
8b1e4ac7
AF
331case "$FS" in
332 ext2)
f5d71bb2 333 if [ ! -x /sbin/mke2fs ]; then
a2c2980f 334 echo "/sbin/mke2fs is missing" 1>&2
8b1e4ac7
AF
335 exit 1
336 fi
337 ;;
338 rom)
339 if [ ! -x /sbin/genromfs ]; then
a2c2980f 340 echo "/sbin/genromfs is missing" 1>&2
8b1e4ac7
AF
341 exit 1
342 fi
343 ;;
344 cram)
345 if [ ! -x /sbin/mkcramfs ]; then
a2c2980f 346 echo "/sbin/mkcramfs is missing" 1>&2
8b1e4ac7
AF
347 exit 1
348 fi
c31050f3 349 ;;
8b1e4ac7 350 *)
a2c2980f 351 echo "Filesystem $FS on initrd is not supported" 1>&2
8b1e4ac7
AF
352 exit 1
353 ;;
354esac
bb529f94 355
bb529f94 356if [ -n "$img_vers" ]; then
413878f8 357 target="$target-$kernel"
bb529f94
JK
358fi
359
35164381 360if [ -z "$force" -a -f "$target" ]; then
a2c2980f 361 echo "$target already exists." 1>&2
413878f8 362 exit 1
bb529f94
JK
363fi
364
35164381 365if [ ! -d "/lib/modules/$kernel" ]; then
a2c2980f 366 echo "/lib/modules/$kernel is not a directory." 1>&2
413878f8 367 exit 1
bb529f94
JK
368fi
369
370for n in $PREMODS; do
35164381 371 findmodule "$n"
bb529f94
JK
372done
373
a2c2980f
AF
374find_root
375
611e9e47
AF
376if is_yes "`echo "$rootdev" | awk '/^\/dev\/md/ { print "yes"; }'`"; then
377 eval `awk -v rootdev=$rootdev 'BEGIN {
c31050f3 378 addide="no";
611e9e47
AF
379 addscsi="no";
380 found="no";
c31050f3
TP
381}
382
383{
384 gsub("\t"," ");
385 gsub(" +", " ");
386 gsub("^ ","");
387 if (/^[\t ]*#/)
388 next;
389 if (/^raiddev/) {
611e9e47
AF
390 if ($2 == rootdev) {
391 found="yes";
392 } else {
393 if (found == "yes") {
394 exit 0;
395 };
c31050f3
TP
396 };
397 };
611e9e47
AF
398 if (found == "yes") {
399 if ($1 == "device") {
2968c9dd 400 if ($2 ~ /\/dev\/(sd|scsi)/) {
611e9e47
AF
401 addscsi="yes";
402 };
2968c9dd 403 if ($2 ~ /\/dev\/(hd|ide)/) {
611e9e47
AF
404 addide="yes";
405 };
406 };
407 if ($1 == "raid-level") {
408 raidlevel=$2;
409 }
410 };
411}
412
413END {
414 print "raidfound=" found "\nADDSCSI=" addscsi "\nADDIDE=" addide "\nraidlevel=" raidlevel "\n";
415}' $raidtab `
c31050f3
TP
416 if is_yes "$raidfound" ; then
417 case "$raidlevel" in
418 [0145])
611e9e47
AF
419 findmodule "raid$raidlevel"
420 ;;
421 linear)
422 findmodule "linear"
423 ;;
c31050f3 424 *)
611e9e47
AF
425 echo "raid level $number (in $raidtab) not recognized" 1>&2
426 ;;
c31050f3
TP
427 esac
428 fi
2968c9dd
AF
429
430else
431 USERAIDSTART="no"
611e9e47
AF
432fi
433
2968c9dd 434if is_yes "$ADDSCSI" || is_yes "$(echo "$rootdev" | awk '/^\/dev\/(sd|scsi)/ { print "yes"; }')" ; then
bb529f94
JK
435
436 for n in $PRESCSIMODS; do
218614aa 437 if [ "$n" = "unknown" ] ; then
c31050f3
TP
438 if [ ! -f "$modulefile" ]; then
439 modulefile=/etc/conf.modules
440 fi
441 if [ -f "$modulefile" ]; then
35164381 442 scsimodules="`awk '/scsi_hostadapter/ && ! /^[\t ]*#/ { print $3; }' $modulefile| LC_ALL=C sort -u`"
218614aa 443 for n in $scsimodules; do
c31050f3
TP
444 # for now allow scsi modules to come from anywhere. There are some
445 # RAID controllers with drivers in block
446 findmodule "$n"
218614aa 447 done
c31050f3 448 fi
218614aa 449 else
413878f8 450 findmodule "$n"
218614aa 451 fi
bb529f94
JK
452 done
453
bb529f94
JK
454fi
455
2968c9dd 456if is_yes "$ADDIDE" || is_yes "`echo "$rootdev" | awk '/^\/dev\/(hd|ide)/ { print "yes"; }'`" ; then
5dc785c7 457 for n in $PREIDEMODS; do
458 findmodule "$n"
459 done
bb529f94
JK
460fi
461
cd670d83 462if is_yes "`echo "$rootdev" | awk '/\/dev\/rd\// { print "yes"; }'`" ; then
a183cab0 463 findmodule "DAC960"
cd670d83
AF
464fi
465
466if is_yes "`echo "$rootdev" | awk '/\/dev\/ida\// { print "yes"; }'`" ; then
467 findmodule "cpqarray"
468fi
469
470if is_yes "`echo "$rootdev" | awk '/\/dev\/cciss\// { print "yes"; }'`" ; then
471 findmodule "cciss"
472fi
473
bb529f94 474# check to see if we need to set up a loopback filesystem
f97d6d7b 475if is_yes "`echo "$rootdev" | awk -F/ '{print($3);}' | awk '/loop/ { print "yes"; }'`" ; then
413878f8 476 if [ ! -x /sbin/losetup ]; then
477 echo "losetup is missing"
478 exit 1
479 fi
480 key="^# $(echo $rootdev | awk -F/ '{print($3);}' | tr '[a-z]' '[A-Z]'):"
481 if ! is_yes "`awk '/'$key'/ { print( "yes"); }' $fstab`" ; then
482 echo "The root filesystem is on a $rootdev, but there is no magic entry in $fstab" 1>&2
a2c2980f 483 echo "for this device. Consult the geninitrd man page for more information" 1>&2
413878f8 484 exit 1
485 fi
bb529f94 486
413878f8 487 line="`awk '/'$key'/ { print $0; }' $fstab`"
488 loopDev="$(echo $line | awk '{print $3}')"
489 loopFs="$(echo $line | awk '{print $4}')"
490 loopFile="$(echo $line | awk '{print $5}')"
491
492 BASICMODULES="$BASICMODULES -loop"
493 findmodule "-$loopFs"
494 BASICMODULES="$BASICMODULES -${loopFs}"
495 # don't have any clue, how is this supposed to work,
496 # anyway no bsp
497 USEBSP="no"
2b9510ad 498else # Check for other filesystems
7d2fc5eb 499 findmodule "-$rootFs"
bb529f94
JK
500fi
501
c31050f3 502for n in $BASICMODULES; do
7d2fc5eb 503 findmodule "$n"
bb529f94
JK
504done
505
506if [ -n "$ifneeded" -a -z "$MODULES" ]; then
7d2fc5eb 507 if [ -n "$verbose" ]; then
508 echo "No modules are needed -- not building initrd image."
509 fi
510 exit 0
bb529f94
JK
511fi
512
513if [ -n "$verbose" ]; then
7d2fc5eb 514 echo "Using modules: $MODULES"
bb529f94
JK
515fi
516
35164381
SZ
517MNTIMAGE="`mktemp -d /tmp/initrd.XXXXXX`"
518IMAGE="`mktemp -u /tmp/initrd.img-XXXXXX`"
519MNTPOINT="`mktemp -d /tmp/initrd.mnt-XXXXXX`"
520RCFILE="$MNTIMAGE/linuxrc"
bb529f94 521
35164381 522if [ -f "$MNTIMAGE" ]; then
c31050f3 523 echo "$MNTIMAGE already exists. Remove it and try again" 1>&2
7d2fc5eb 524 exit 1
bb529f94
JK
525fi
526
35164381 527if [ -f "$IMAGE" ]; then
a2c2980f 528 echo "$IMAGE already exists. Remove it and try again" 1>&2
7d2fc5eb 529 exit 1
bb529f94
JK
530fi
531
532if [ "$FS" = "ext2" ] ; then
35164381 533 dd if=/dev/zero of="$IMAGE" bs=1k count="$IMAGESIZE" 2> /dev/null
bb529f94 534
bb529f94
JK
535 # We have to "echo y |" so that it doesn't complain about $IMAGE not
536 # being a block device
35164381 537 echo y | mke2fs -F "$IMAGE" "$IMAGESIZE" >/dev/null 2>/dev/null
bb529f94 538
35164381
SZ
539 mkdir -p "$MNTPOINT"
540 mount -o loop -t ext2 "$IMAGE" "$MNTPOINT"
bb529f94 541else
35164381 542 mkdir -p "$MNTPOINT"
bb529f94
JK
543fi
544
8b1e4ac7 545
35164381 546mkdir -p "$MNTIMAGE"/{lib,bin,etc,dev,loopfs}
8b1e4ac7 547
bb529f94
JK
548
549# We don't need this directory, so let's save space
35164381 550rm -rf "$MNTPOINT"/lost+found
bb529f94 551
bb529f94 552for MODULE in $MODULES; do
81de8443
AF
553 MODULEDIR="`my_dirname "$MODULE"`"
554 mkdir -p "$MNTIMAGE/lib/modules/$kernel/$MODULEDIR"
555 cp $verbose -a "/lib/modules/$kernel/$MODULE" "$MNTIMAGE/lib/modules/$kernel/$MODULE"
bb529f94
JK
556done
557
558# mknod'ing the devices instead of copying them works both with and
559# without devfs...
35164381 560mknod "$MNTIMAGE/dev/console" c 5 1
bb529f94 561
a0a82190 562if is_yes "$USEBSP" ; then
413878f8 563 s="$MNTIMAGE/etc/startup"
564 inst /sbin/bsp "$RCFILE"
565 echo "# autogenerated startup" > "$s"
566 echo "" >> "$s"
c31050f3 567
413878f8 568 for MODULE in $MODULES; do
569 module="`echo $MODULE | awk -F/ '{ $0=$NF } /.o$/ { $0=substr($0,1,length($0)-2); } { print $0; }'`"
570 options="`awk '{ if($1 == "options" && $2 == "'${module}'") { for(i=3;i<=NF;i++) printf("%s ",$i); }}' "$modulefile"`"
c31050f3 571
413878f8 572 if [ -n "$verbose" ]; then
0a3f6c71 573 /bin/echo -n "Loading module $module "
611e9e47
AF
574 if [ -n "$options" ] ; then
575 echo "with options $options."
0a3f6c71 576 else
611e9e47 577 echo "without options."
0a3f6c71 578 fi
413878f8 579 fi
580 echo "insmod /lib/modules/$kernel/$MODULE $options" >> "$s"
581 done
a0a82190 582else
7d2fc5eb 583 inst /bin/trash "$MNTIMAGE/bin/sh"
584 inst /sbin/insmod.static "$MNTIMAGE/bin/insmod"
c31050f3 585
7d2fc5eb 586 mknod "$MNTIMAGE/dev/null" c 1 3
587 mknod "$MNTIMAGE/dev/ram" b 1 1
588 mknod "$MNTIMAGE/dev/systty" c 4 0
589 for i in 1 2 3 4; do
590 mknod "$MNTIMAGE/dev/tty$i" c 4 1
591 done
592 mknod "$MNTIMAGE/dev/zero" c 1 5
c31050f3 593
7d2fc5eb 594 echo "#!/bin/sh" > "$RCFILE"
595 echo "" >> "$RCFILE"
c31050f3 596
7d2fc5eb 597 for MODULE in $MODULES; do
598 module="`echo $MODULE | awk -F/ '{ $0=$NF } /.o$/ { $0=substr($0,1,length($0)-2); } { print $0; }'`"
ea10b6a5
MM
599 if [ -f "$modulefile" ] ; then
600 options="`awk '{ if($1 == "options" && $2 == "'${module}'") { for(i=3;i<=NF;i++) printf("%s ",$i); }}' "$modulefile"`"
601 else
602 options=
603 fi
7d2fc5eb 604
605 if [ -n "$verbose" ]; then
606 echo "Loading module $module with options $options"
607 fi
7e11065a 608 echo "Add module $module to initrd."
7d2fc5eb 609 echo "echo \"Loading $module module\"" >> "$RCFILE"
81de8443 610 echo "insmod -k /lib/modules/$kernel/$MODULE $options" >> "$RCFILE"
7d2fc5eb 611 done
612
2968c9dd 613
7d2fc5eb 614 if [ -n "$loopDev" ]; then
615 if [ ! -d /initrd ]; then
616 mkdir /initrd
617 fi
c31050f3 618
7d2fc5eb 619 cp -a "$loopDev" "$MNTIMAGE/dev"
620 cp -a "$rootdev" "$MNTIMAGE/dev"
621 echo "echo Mounting device containing loopback root filesystem" >> "$RCFILE"
622 echo "mount -t $loopFs $loopDev /loopfs" >> "$RCFILE"
623 echo "echo Setting up loopback device $rootdev" >> $RCFILE
624 echo "losetup $rootdev /loopfs$loopFile" >> "$RCFILE"
625 fi
bb529f94
JK
626fi
627
c31050f3 628if is_yes "$USERAIDSTART" ; then
2968c9dd
AF
629 if [ -x /sbin/raidstart.static ] ; then
630 [ -n "$verbose" ] && echo "Add raidstart to initrd"
631 mkdir -p "$MNTIMAGE/etc" || true
632 inst /sbin/raidstart.static "$MNTIMAGE/bin/raidstart"
633 inst "$raidtab" "$MNTIMAGE/etc/raidtab"
634 echo "echo \"Starting RAID\"" >> "$RCFILE"
635 echo "/bin/raidstart $rootdev" >> "$RCFILE"
636 else
637 echo "/sbin/raidstart.static is missing" 1>&2
638 exit 1
639 fi
640fi
641
35164381 642chmod +x "$RCFILE"
bb529f94 643
35164381 644(cd "$MNTIMAGE"; tar cf - .) | (cd "$MNTPOINT"; tar xf -)
bb529f94 645
8b1e4ac7
AF
646case "$FS" in
647 ext2)
35164381 648 umount "$IMAGE"
8b1e4ac7
AF
649 ;;
650 rom)
651 genromfs -f "$IMAGE" -d "$MNTPOINT" -V "PLD initrd for kernel $kernel"
652 ;;
653 cram)
654 mkcramfs "$MNTPOINT" "$IMAGE"
8b1e4ac7
AF
655 ;;
656 *)
657 echo "Filesystem $FS not supported by $0";
c31050f3 658esac
bb529f94
JK
659
660if is_yes "$COMPRESS" ; then
7d2fc5eb 661 gzip -9 < "$IMAGE" > "$target"
bb529f94 662else
7d2fc5eb 663 cp -a "$IMAGE" "$target"
bb529f94 664fi
35164381 665rm -rf "$MNTIMAGE" "$MNTPOINT" "$IMAGE"
This page took 0.174066 seconds and 4 git commands to generate.