annotate system-image.sh @ 642:c92dc77da038

Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
author Rob Landley <rob@landley.net>
date Sat, 21 Mar 2009 22:56:15 -0500
parents b4ea140d2439
children 87ef47d783f5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
177
6b4844b708b9 dash->bash.
Rob Landley <rob@landley.net>
parents: 162
diff changeset
1 #!/bin/bash
109
d9dae1196ea7 Package ext2 filesystem image using UML.
Rob Landley <rob@landley.net>
parents:
diff changeset
2
576
036dbe218036 Add BASE_ARCH support, so a hardware architecture can specify a base architecture and just provide a different kernel.
Rob Landley <rob@landley.net>
parents: 573
diff changeset
3 # Create a bootable system image from mini-native
109
d9dae1196ea7 Package ext2 filesystem image using UML.
Rob Landley <rob@landley.net>
parents:
diff changeset
4
576
036dbe218036 Add BASE_ARCH support, so a hardware architecture can specify a base architecture and just provide a different kernel.
Rob Landley <rob@landley.net>
parents: 573
diff changeset
5 NO_BASE_ARCH=1
503
e98ed40c55ef Move include.sh to sources/include.sh. End user doesn't call it directly, shouldn't be at top level.
Rob Landley <rob@landley.net>
parents: 499
diff changeset
6 source sources/include.sh
109
d9dae1196ea7 Package ext2 filesystem image using UML.
Rob Landley <rob@landley.net>
parents:
diff changeset
7
485
b0438691e9e1 Move color selection into ./config. (The default colors don't look great on a white background.)
Rob Landley <rob@landley.net>
parents: 483
diff changeset
8 echo -e "$PACKAGE_COLOR"
b0438691e9e1 Move color selection into ./config. (The default colors don't look great on a white background.)
Rob Landley <rob@landley.net>
parents: 483
diff changeset
9 echo "=== Packaging system image from mini-native"
b0438691e9e1 Move color selection into ./config. (The default colors don't look great on a white background.)
Rob Landley <rob@landley.net>
parents: 483
diff changeset
10
581
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
11 [ -z "$SYSIMAGE_TYPE" ] && SYSIMAGE_TYPE=ext2
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
12
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
13 SYSIMAGE="${BUILD}/system-image-${ARCH_NAME}"
462
3f3283fb5e1e Running ./package-mini-native.sh as root can just loopback mount itself, without User Mode Linux.
Rob Landley <rob@landley.net>
parents: 451
diff changeset
14
572
1277d5ae4507 Move bin/qemu-setup.sh to sbin/init.sh and do more work on initramfs packaging. (Doesn't work yet.)
Rob Landley <rob@landley.net>
parents: 553
diff changeset
15 TOOLSDIR=tools
1277d5ae4507 Move bin/qemu-setup.sh to sbin/init.sh and do more work on initramfs packaging. (Doesn't work yet.)
Rob Landley <rob@landley.net>
parents: 553
diff changeset
16 [ -z "$NATIVE_TOOLSDIR" ] && TOOLSDIR=usr
1277d5ae4507 Move bin/qemu-setup.sh to sbin/init.sh and do more work on initramfs packaging. (Doesn't work yet.)
Rob Landley <rob@landley.net>
parents: 553
diff changeset
17
490
004f9509349b Rip out User Mode Linux, switch to genext2fs instead. (Based on an old patch from James Davidson.)
Rob Landley <rob@landley.net>
parents: 486
diff changeset
18 # Flush old system-image directory
468
3d2996abb6ea Moving the temp dir broke non-root packaging: fix it.
Rob Landley <rob@landley.net>
parents: 467
diff changeset
19
490
004f9509349b Rip out User Mode Linux, switch to genext2fs instead. (Based on an old patch from James Davidson.)
Rob Landley <rob@landley.net>
parents: 486
diff changeset
20 rm -rf "${SYSIMAGE}"
553
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
21 mkdir -p "${SYSIMAGE}" || dienow
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
22
581
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
23 # This next bit is a little complicated; we generate the root filesystem image
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
24 # in the middle of building a kernel. This is necessary to embed an
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
25 # initramfs in the kernel, and allows us to parallelize the kernel build with
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
26 # the image generation. Having the other image types in the same if/else
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
27 # staircase with initramfs lets us detect unknown image types (probably typos)
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
28 # without repeating any.
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
29
553
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
30 # Build a linux kernel for the target
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
31
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
32 setupfor linux
586
c9c7420e952b More tweaks to make hw- targets work.
Rob Landley <rob@landley.net>
parents: 581
diff changeset
33 [ -z "$BOOT_KARCH" ] && BOOT_KARCH="$KARCH"
591
4750bed36a72 The kernel changed so CONFIG_BLK_DEV_INITRD has to be enabled to use initramfs; yes even the built-in one.
Rob Landley <rob@landley.net>
parents: 590
diff changeset
34 cp "$(getconfig linux)" mini.conf || dienow
4750bed36a72 The kernel changed so CONFIG_BLK_DEV_INITRD has to be enabled to use initramfs; yes even the built-in one.
Rob Landley <rob@landley.net>
parents: 590
diff changeset
35 [ "$SYSIMAGE_TYPE" == "initramfs" ] &&
4750bed36a72 The kernel changed so CONFIG_BLK_DEV_INITRD has to be enabled to use initramfs; yes even the built-in one.
Rob Landley <rob@landley.net>
parents: 590
diff changeset
36 (echo "CONFIG_BLK_DEV_INITRD=y" >> mini.conf || dienow)
4750bed36a72 The kernel changed so CONFIG_BLK_DEV_INITRD has to be enabled to use initramfs; yes even the built-in one.
Rob Landley <rob@landley.net>
parents: 590
diff changeset
37 make ARCH="${BOOT_KARCH}" KCONFIG_ALLCONFIG=mini.conf \
4750bed36a72 The kernel changed so CONFIG_BLK_DEV_INITRD has to be enabled to use initramfs; yes even the built-in one.
Rob Landley <rob@landley.net>
parents: 590
diff changeset
38 allnoconfig >/dev/null || dienow
553
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
39
581
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
40 # Build kernel in parallel with initramfs
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
41
586
c9c7420e952b More tweaks to make hw- targets work.
Rob Landley <rob@landley.net>
parents: 581
diff changeset
42 ( make -j $CPUS ARCH="${BOOT_KARCH}" CROSS_COMPILE="${ARCH}-" $LINUX_FLAGS ||
c9c7420e952b More tweaks to make hw- targets work.
Rob Landley <rob@landley.net>
parents: 581
diff changeset
43 dienow ) &
581
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
44
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
45 # If we exit before removing this handler, kill everything in the current
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
46 # process group, which should take out backgrounded kernel make.
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
47 trap "kill 0" EXIT
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
48
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
49 # Embed an initramfs image in the kernel?
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
50
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
51 if [ "$SYSIMAGE_TYPE" == "initramfs" ]
553
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
52 then
572
1277d5ae4507 Move bin/qemu-setup.sh to sbin/init.sh and do more work on initramfs packaging. (Doesn't work yet.)
Rob Landley <rob@landley.net>
parents: 553
diff changeset
53 echo "Generating initramfs (in background)"
588
965923c576f3 More initramfs fixes. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents: 586
diff changeset
54 $CC usr/gen_init_cpio.c -o my_gen_init_cpio || dienow
965923c576f3 More initramfs fixes. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents: 586
diff changeset
55 (./my_gen_init_cpio <(
597
3d67228ceb1e Rename $NATIVE to $NATIVE_ROOT and allow it to be supplied externally so system-image.sh can package up an arbitrary native root filesystem source dir.
Rob Landley <rob@landley.net>
parents: 593
diff changeset
56 "$SOURCES"/toys/gen_initramfs_list.sh "$NATIVE_ROOT"
3d67228ceb1e Rename $NATIVE to $NATIVE_ROOT and allow it to be supplied externally so system-image.sh can package up an arbitrary native root filesystem source dir.
Rob Landley <rob@landley.net>
parents: 593
diff changeset
57 [ ! -e "$NATIVE_ROOT"/init ] &&
590
8e7db79a3d75 Make initramfs work, add "--memory MEGS" option to ./run-emulator.sh and make run-from-build.sh use it.
Rob Landley <rob@landley.net>
parents: 588
diff changeset
58 echo "slink /init /$TOOLSDIR/sbin/init.sh 755 0 0"
597
3d67228ceb1e Rename $NATIVE to $NATIVE_ROOT and allow it to be supplied externally so system-image.sh can package up an arbitrary native root filesystem source dir.
Rob Landley <rob@landley.net>
parents: 593
diff changeset
59 [ ! -d "$NATIVE_ROOT"/dev ] && echo "dir /dev 755 0 0"
590
8e7db79a3d75 Make initramfs work, add "--memory MEGS" option to ./run-emulator.sh and make run-from-build.sh use it.
Rob Landley <rob@landley.net>
parents: 588
diff changeset
60 echo "nod /dev/console 660 0 0 c 5 1"
588
965923c576f3 More initramfs fixes. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents: 586
diff changeset
61 ) || dienow
965923c576f3 More initramfs fixes. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents: 586
diff changeset
62 ) | gzip -9 > initramfs_data.cpio.gz || dienow
965923c576f3 More initramfs fixes. Still doesn't work yet.
Rob Landley <rob@landley.net>
parents: 586
diff changeset
63 echo Initramfs generated.
354
d96741481221 User Mode Linux found a new way to break: now when it panics, it sends a kill
Rob Landley <rob@landley.net>
parents: 353
diff changeset
64
581
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
65 # Wait for initial kernel build to finish.
572
1277d5ae4507 Move bin/qemu-setup.sh to sbin/init.sh and do more work on initramfs packaging. (Doesn't work yet.)
Rob Landley <rob@landley.net>
parents: 553
diff changeset
66
581
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
67 wait4background 0
572
1277d5ae4507 Move bin/qemu-setup.sh to sbin/init.sh and do more work on initramfs packaging. (Doesn't work yet.)
Rob Landley <rob@landley.net>
parents: 553
diff changeset
68
1277d5ae4507 Move bin/qemu-setup.sh to sbin/init.sh and do more work on initramfs packaging. (Doesn't work yet.)
Rob Landley <rob@landley.net>
parents: 553
diff changeset
69 # This is a repeat of an earlier make invocation, but if we try to
1277d5ae4507 Move bin/qemu-setup.sh to sbin/init.sh and do more work on initramfs packaging. (Doesn't work yet.)
Rob Landley <rob@landley.net>
parents: 553
diff changeset
70 # consolidate them the dependencies build unnecessary prereqisites
1277d5ae4507 Move bin/qemu-setup.sh to sbin/init.sh and do more work on initramfs packaging. (Doesn't work yet.)
Rob Landley <rob@landley.net>
parents: 553
diff changeset
71 # and then decide that they're newer than the cpio.gz we supplied,
1277d5ae4507 Move bin/qemu-setup.sh to sbin/init.sh and do more work on initramfs packaging. (Doesn't work yet.)
Rob Landley <rob@landley.net>
parents: 553
diff changeset
72 # and thus overwrite it with a default (emptyish) one.
1277d5ae4507 Move bin/qemu-setup.sh to sbin/init.sh and do more work on initramfs packaging. (Doesn't work yet.)
Rob Landley <rob@landley.net>
parents: 553
diff changeset
73
573
de6725a2fdad Fix an "it doesn't boot" bug dating back to commit 553. Sigh.
Rob Landley <rob@landley.net>
parents: 572
diff changeset
74 echo "Building kernel with initramfs."
572
1277d5ae4507 Move bin/qemu-setup.sh to sbin/init.sh and do more work on initramfs packaging. (Doesn't work yet.)
Rob Landley <rob@landley.net>
parents: 553
diff changeset
75 [ -f initramfs_data.cpio.gz ] &&
1277d5ae4507 Move bin/qemu-setup.sh to sbin/init.sh and do more work on initramfs packaging. (Doesn't work yet.)
Rob Landley <rob@landley.net>
parents: 553
diff changeset
76 touch initramfs_data.cpio.gz &&
1277d5ae4507 Move bin/qemu-setup.sh to sbin/init.sh and do more work on initramfs packaging. (Doesn't work yet.)
Rob Landley <rob@landley.net>
parents: 553
diff changeset
77 mv initramfs_data.cpio.gz usr &&
593
67bc5a49cf1d Mark Miller pointed out that $LINUX_FLAGS is needed for the initramfs build.
Rob Landley <rob@landley.net>
parents: 591
diff changeset
78 make -j $CPUS ARCH="${BOOT_KARCH}" CROSS_COMPILE="${ARCH}-" $LINUX_FLAGS \
67bc5a49cf1d Mark Miller pointed out that $LINUX_FLAGS is needed for the initramfs build.
Rob Landley <rob@landley.net>
parents: 591
diff changeset
79 || dienow
581
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
80
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
81 # No need to supply an hda image to emulator.
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
82
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
83 IMAGE=
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
84 elif [ "$SYSIMAGE_TYPE" == "ext2" ]
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
85 then
597
3d67228ceb1e Rename $NATIVE to $NATIVE_ROOT and allow it to be supplied externally so system-image.sh can package up an arbitrary native root filesystem source dir.
Rob Landley <rob@landley.net>
parents: 593
diff changeset
86 # Generate a 64 megabyte ext2 filesystem image from the $NATIVE_ROOT
3d67228ceb1e Rename $NATIVE to $NATIVE_ROOT and allow it to be supplied externally so system-image.sh can package up an arbitrary native root filesystem source dir.
Rob Landley <rob@landley.net>
parents: 593
diff changeset
87 # directory, with a temporary file defining the /dev nodes for the new
3d67228ceb1e Rename $NATIVE to $NATIVE_ROOT and allow it to be supplied externally so system-image.sh can package up an arbitrary native root filesystem source dir.
Rob Landley <rob@landley.net>
parents: 593
diff changeset
88 # filesystem.
581
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
89
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
90 echo "Generating ext2 image (in background)"
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
91
616
a95cb8f13284 Add SYSIMAGE_HDA_MEGS config parameter (defaulting to 64).
Rob Landley <rob@landley.net>
parents: 597
diff changeset
92 [ -z "$SYSIMAGE_HDA_MEGS" ] && SYSIMAGE_HDA_MEGS=64
a95cb8f13284 Add SYSIMAGE_HDA_MEGS config parameter (defaulting to 64).
Rob Landley <rob@landley.net>
parents: 597
diff changeset
93
581
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
94 IMAGE="image-${ARCH}.ext2"
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
95 DEVLIST="$WORK"/devlist
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
96
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
97 echo "/dev d 755 0 0 - - - - -" > "$DEVLIST" &&
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
98 echo "/dev/console c 640 0 0 5 1 0 0 -" >> "$DEVLIST" &&
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
99
642
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 640
diff changeset
100 # Produce 64 meg filesystem, which should always be big enough.
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 640
diff changeset
101
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 640
diff changeset
102 genext2fs -z -D "$DEVLIST" -d "$NATIVE_ROOT" -b 65536 -i 1024 \
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 640
diff changeset
103 "$SYSIMAGE/$IMAGE" &&
581
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
104 rm "$DEVLIST" || dienow
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
105
642
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 640
diff changeset
106 # Extend image size to HDA_MEGS if necessary, keeping it sparse. (Feeding
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 640
diff changeset
107 # a larger -b size to genext2fs is insanely slow, and not particularly
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 640
diff changeset
108 # sparse.)
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 640
diff changeset
109
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 640
diff changeset
110 if [ $[1024*$SYSIMAGE_HDA_MEGS] -gt 65536 ]
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 640
diff changeset
111 then
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 640
diff changeset
112 dd if=/dev/zero of=woot.img bs=1k count=1 seek=$[1024*1024-1] &&
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 640
diff changeset
113 resize2fs "${SYSIMAGE}/${IMAGE}" ${SYSIMAGE_HDA_MEGS}M || dienow
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 640
diff changeset
114 fi
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 640
diff changeset
115
581
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
116 #elif [ "$SYSIMAGE_TYPE" == "squashfs" ]
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
117 #then
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
118 # We used to do this, but updating the squashfs patch for each new kernel
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
119 # was just too much work. If it gets merged someday, we may care again...
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
120
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
121 # IMAGE="image-${ARCH}.sqf"
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
122 # echo -n "Creating squashfs image (in background)"
597
3d67228ceb1e Rename $NATIVE to $NATIVE_ROOT and allow it to be supplied externally so system-image.sh can package up an arbitrary native root filesystem source dir.
Rob Landley <rob@landley.net>
parents: 593
diff changeset
123 # "${WORK}/mksquashfs" "${NATIVE_ROOT}" "${SYSIMAGE}/$IMAGE" \
581
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
124 # -noappend -all-root -info || dienow
586
c9c7420e952b More tweaks to make hw- targets work.
Rob Landley <rob@landley.net>
parents: 581
diff changeset
125 else
c9c7420e952b More tweaks to make hw- targets work.
Rob Landley <rob@landley.net>
parents: 581
diff changeset
126 echo "Unknown image type." >&2
c9c7420e952b More tweaks to make hw- targets work.
Rob Landley <rob@landley.net>
parents: 581
diff changeset
127 dienow
553
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
128 fi
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
129
581
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
130 # Wait for kernel build to finish (may be a NOP)
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
131
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
132 echo Image generation complete.
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
133 wait4background 0
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
134 trap "" EXIT
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
135
553
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
136 # Install kernel
109
d9dae1196ea7 Package ext2 filesystem image using UML.
Rob Landley <rob@landley.net>
parents:
diff changeset
137
553
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
138 [ -d "${TOOLS}/src" ] && cp .config "${TOOLS}"/src/config-linux
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
139 cp "${KERNEL_PATH}" "${SYSIMAGE}/zImage-${ARCH}" &&
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
140 cd ..
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
141
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
142 cleanup linux
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
143
330
f9ff71c71f9e Tweak run-with-home.sh to have a chance of actually working.
Rob Landley <rob@landley.net>
parents: 325
diff changeset
144 # Provide qemu's common command line options between architectures. The lack
f9ff71c71f9e Tweak run-with-home.sh to have a chance of actually working.
Rob Landley <rob@landley.net>
parents: 325
diff changeset
145 # of ending quotes on -append is intentional, callers append more kernel
f9ff71c71f9e Tweak run-with-home.sh to have a chance of actually working.
Rob Landley <rob@landley.net>
parents: 325
diff changeset
146 # command line arguments and provide their own ending quote.
325
51bcd6de223d Redo plumbing that constructs run-emulator.sh. Group common qemu command
Rob Landley <rob@landley.net>
parents: 317
diff changeset
147 function qemu_defaults()
51bcd6de223d Redo plumbing that constructs run-emulator.sh. Group common qemu command
Rob Landley <rob@landley.net>
parents: 317
diff changeset
148 {
581
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
149 if [ "$SYSIMAGE_TYPE" != "initramfs" ]
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
150 then
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
151 HDA="-hda \"$1\" "
590
8e7db79a3d75 Make initramfs work, add "--memory MEGS" option to ./run-emulator.sh and make run-from-build.sh use it.
Rob Landley <rob@landley.net>
parents: 588
diff changeset
152 APPEND="root=/dev/$ROOT rw init=/$TOOLSDIR/sbin/init.sh "
581
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
153 fi
9dffdd74c186 More changes for initramfs and hw- targets with a base architecture.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
154
640
b4ea140d2439 Add $QEMU_EXTRA for emulator command line arguments.
Rob Landley <rob@landley.net>
parents: 616
diff changeset
155 echo "-nographic -no-reboot -kernel \"$2\" \$WITH_HDB ${HDA}" \
590
8e7db79a3d75 Make initramfs work, add "--memory MEGS" option to ./run-emulator.sh and make run-from-build.sh use it.
Rob Landley <rob@landley.net>
parents: 588
diff changeset
156 "-append \"${APPEND}panic=1 PATH=\$DISTCC_PATH_PREFIX/${TOOLSDIR}/bin" \
640
b4ea140d2439 Add $QEMU_EXTRA for emulator command line arguments.
Rob Landley <rob@landley.net>
parents: 616
diff changeset
157 "console=$CONSOLE \$KERNEL_EXTRA\" \$QEMU_EXTRA"
325
51bcd6de223d Redo plumbing that constructs run-emulator.sh. Group common qemu command
Rob Landley <rob@landley.net>
parents: 317
diff changeset
158 }
51bcd6de223d Redo plumbing that constructs run-emulator.sh. Group common qemu command
Rob Landley <rob@landley.net>
parents: 317
diff changeset
159
490
004f9509349b Rip out User Mode Linux, switch to genext2fs instead. (Based on an old patch from James Davidson.)
Rob Landley <rob@landley.net>
parents: 486
diff changeset
160 # Write out a script to call the appropriate emulator. We split out the
004f9509349b Rip out User Mode Linux, switch to genext2fs instead. (Based on an old patch from James Davidson.)
Rob Landley <rob@landley.net>
parents: 486
diff changeset
161 # filesystem, kernel, and base kernel command line arguments in case you want
004f9509349b Rip out User Mode Linux, switch to genext2fs instead. (Based on an old patch from James Davidson.)
Rob Landley <rob@landley.net>
parents: 486
diff changeset
162 # to use an emulator other than qemu, but put the default case in qemu_defaults
004f9509349b Rip out User Mode Linux, switch to genext2fs instead. (Based on an old patch from James Davidson.)
Rob Landley <rob@landley.net>
parents: 486
diff changeset
163
499
9d5fd8e1467b Merge run-*.sh so run-emulator.sh takes command line arguments. Rename emulator-build.sh to be more clear what it does.
Rob Landley <rob@landley.net>
parents: 496
diff changeset
164 cp "$SOURCES/toys/run-emulator.sh" "$SYSIMAGE/run-emulator.sh" &&
537
15af90157a19 Move the kernel image file from the temp dir into the mini-native dir, and teach packaging not to put it in the ext2 image. (Don't keep important files in the temp directory.)
Rob Landley <rob@landley.net>
parents: 508
diff changeset
165 emulator_command image-$ARCH.ext2 zImage-$ARCH >> "$SYSIMAGE/run-emulator.sh"
306
358ef8a27085 Break up run-$ARCH.sh, move more temp files into temp dir, fix deletion logic.
Rob Landley <rob@landley.net>
parents: 300
diff changeset
166
490
004f9509349b Rip out User Mode Linux, switch to genext2fs instead. (Based on an old patch from James Davidson.)
Rob Landley <rob@landley.net>
parents: 486
diff changeset
167 [ $? -ne 0 ] && dienow
004f9509349b Rip out User Mode Linux, switch to genext2fs instead. (Based on an old patch from James Davidson.)
Rob Landley <rob@landley.net>
parents: 486
diff changeset
168
004f9509349b Rip out User Mode Linux, switch to genext2fs instead. (Based on an old patch from James Davidson.)
Rob Landley <rob@landley.net>
parents: 486
diff changeset
169 if [ "$ARCH" == powerpc ]
004f9509349b Rip out User Mode Linux, switch to genext2fs instead. (Based on an old patch from James Davidson.)
Rob Landley <rob@landley.net>
parents: 486
diff changeset
170 then
004f9509349b Rip out User Mode Linux, switch to genext2fs instead. (Based on an old patch from James Davidson.)
Rob Landley <rob@landley.net>
parents: 486
diff changeset
171 cp "$SOURCES"/toys/ppc_rom.bin "$SYSIMAGE" || dienow
004f9509349b Rip out User Mode Linux, switch to genext2fs instead. (Based on an old patch from James Davidson.)
Rob Landley <rob@landley.net>
parents: 486
diff changeset
172 fi
109
d9dae1196ea7 Package ext2 filesystem image using UML.
Rob Landley <rob@landley.net>
parents:
diff changeset
173
490
004f9509349b Rip out User Mode Linux, switch to genext2fs instead. (Based on an old patch from James Davidson.)
Rob Landley <rob@landley.net>
parents: 486
diff changeset
174 # Tar it up.
004f9509349b Rip out User Mode Linux, switch to genext2fs instead. (Based on an old patch from James Davidson.)
Rob Landley <rob@landley.net>
parents: 486
diff changeset
175
586
c9c7420e952b More tweaks to make hw- targets work.
Rob Landley <rob@landley.net>
parents: 581
diff changeset
176 tar -cvj -f "$BUILD"/system-image-$ARCH_NAME.tar.bz2 \
c9c7420e952b More tweaks to make hw- targets work.
Rob Landley <rob@landley.net>
parents: 581
diff changeset
177 -C "$BUILD" system-image-$ARCH_NAME || dienow
267
98c1a2136322 Update package-mini-native.sh to create qemu-image-$ARCH.tar.bz2
Rob Landley <rob@landley.net>
parents: 264
diff changeset
178
490
004f9509349b Rip out User Mode Linux, switch to genext2fs instead. (Based on an old patch from James Davidson.)
Rob Landley <rob@landley.net>
parents: 486
diff changeset
179 echo -e "=== Packaging complete\e[0m"