Mercurial > hg > aboriginal
comparison root-image.sh @ 1350:7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
author | Rob Landley <rob@landley.net> |
---|---|
date | Mon, 18 Apr 2011 18:41:04 -0500 |
parents | |
children | 2059add65b8c |
comparison
equal
deleted
inserted
replaced
1349:37ba3859ea14 | 1350:7eabfa815c90 |
---|---|
1 #!/bin/bash | |
2 | |
3 # Package a root filesystem directory into a filesystem image file | |
4 | |
5 source sources/include.sh || exit 1 | |
6 | |
7 # Parse the sources/targets/$1 directory | |
8 | |
9 read_arch_dir "$1" | |
10 | |
11 # Which directory do we package up? | |
12 | |
13 if [ -z "$NATIVE_ROOT" ] | |
14 then | |
15 [ -z "$NO_NATIVE_COMPILER" ] && | |
16 NATIVE_ROOT="$BUILD/root-filesystem-$ARCH" | |
17 | |
18 [ -e "$NATIVE_ROOT" ] || | |
19 NATIVE_ROOT="$BUILD/simple-root-filesystem-$ARCH" | |
20 fi | |
21 | |
22 if [ ! -d "$NATIVE_ROOT" ] | |
23 then | |
24 [ -z "$FAIL_QUIET" ] && echo No "$NATIVE_ROOT" >&2 | |
25 exit 1 | |
26 fi | |
27 | |
28 [ -z "$SYSIMAGE_TYPE" ] && SYSIMAGE_TYPE=squashfs | |
29 | |
30 echo "Generating $SYSIMAGE_TYPE root filesystem from $NATIVE_ROOT." | |
31 | |
32 # Embed an initramfs image in the kernel? | |
33 | |
34 if [ "$SYSIMAGE_TYPE" == "initramfs" ] | |
35 then | |
36 $CC "$SOURCES/toys/gen_init_cpio.c" -o my_gen_init_cpio || dienow | |
37 ./my_gen_init_cpio <( | |
38 "$SOURCES"/toys/gen_initramfs_list.sh "$NATIVE_ROOT" || dienow | |
39 [ ! -e "$NATIVE_ROOT"/init ] && | |
40 echo "slink /init /sbin/init.sh 755 0 0" | |
41 [ ! -d "$NATIVE_ROOT"/dev ] && echo "dir /dev 755 0 0" | |
42 echo "nod /dev/console 660 0 0 c 5 1" | |
43 ) > "$STAGE_DIR/initramfs_data.cpio" || dienow | |
44 echo Initramfs generated. | |
45 | |
46 elif [ "$SYSIMAGE_TYPE" == "ext2" ] | |
47 then | |
48 # Generate a 64 megabyte ext2 filesystem image from the $NATIVE_ROOT | |
49 # directory, with a temporary file defining the /dev nodes for the new | |
50 # filesystem. | |
51 | |
52 [ -z "$SYSIMAGE_HDA_MEGS" ] && SYSIMAGE_HDA_MEGS=64 | |
53 | |
54 echo "/dev d 755 0 0 - - - - -" > "$WORK/devs" && | |
55 echo "/dev/console c 640 0 0 5 1 0 0 -" >> "$WORK/devs" && | |
56 | |
57 # Produce a filesystem with the currently used space plus 20% for filesystem | |
58 # overhead, which should always be big enough. | |
59 | |
60 BLOCKS=$[1024*(($(du -m -s "$NATIVE_ROOT" | awk '{print $1}')*12)/10)] | |
61 [ $BLOCKS -lt 4096 ] && BLOCKS=4096 | |
62 | |
63 genext2fs -z -D "$WORK/devs" -d "$NATIVE_ROOT" -b $BLOCKS -i 1024 \ | |
64 "$STAGE_DIR/hda.ext2" && | |
65 rm "$WORK/devs" || dienow | |
66 | |
67 # Extend image size to HDA_MEGS if necessary, keeping it sparse. (Feeding | |
68 # a larger -b size to genext2fs is insanely slow, and not particularly | |
69 # sparse.) | |
70 | |
71 echo "$(stat -c %s "$STAGE_DIR/$IMAGE") -lt $SYSIMAGE_HDA_MEGS" | |
72 | |
73 if [ ! -z "$SYSIMAGE_HDA_MEGS" ] && | |
74 [ $((`stat -c %s "$STAGE_DIR/$IMAGE"` / (1024*1024) )) -lt "$SYSIMAGE_HDA_MEGS" ] | |
75 then | |
76 echo resizing image to $SYSIMAGE_HDA_MEGS | |
77 dd if=/dev/zero of="$STAGE_DIR/$IMAGE" bs=1k count=1 seek=$[1024*1024-1] && | |
78 resize2fs "$STAGE_DIR/$IMAGE" ${SYSIMAGE_HDA_MEGS}M || dienow | |
79 echo resize complete | |
80 fi | |
81 | |
82 elif [ "$SYSIMAGE_TYPE" == "squashfs" ] | |
83 then | |
84 mksquashfs "${NATIVE_ROOT}" "$STAGE_DIR/hda.sqf" -noappend -all-root \ | |
85 ${FORK:+-no-progress} -p "/dev d 755 0 0" \ | |
86 -p "/dev/console c 666 0 0 5 1" || dienow | |
87 else | |
88 echo "Unknown image type $SYSIMAGE_TYPE" >&2 | |
89 dienow | |
90 fi | |
91 | |
92 create_stage_tarball | |
93 | |
94 echo Image generation complete. |