summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/initrdscripts
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:14:24 +0100
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:29:45 +0100
commit29d6678fd546377459ef75cf54abeef5b969b5cf (patch)
tree8edd65790e37a00d01c3f203f773fe4b5012db18 /meta/recipes-core/initrdscripts
parentda49de6885ee1bc424e70bc02f21f6ab920efb55 (diff)
downloadpoky-29d6678fd546377459ef75cf54abeef5b969b5cf.tar.gz
Major layout change to the packages directory
Having one monolithic packages directory makes it hard to find things and is generally overwhelming. This commit splits it into several logical sections roughly based on function, recipes.txt gives more information about the classifications used. The opportunity is also used to switch from "packages" to "recipes" as used in OpenEmbedded as the term "packages" can be confusing to people and has many different meanings. Not all recipes have been classified yet, this is just a first pass at separating things out. Some packages are moved to meta-extras as they're no longer actively used or maintained. Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/recipes-core/initrdscripts')
-rw-r--r--meta/recipes-core/initrdscripts/files/init-boot.sh8
-rw-r--r--meta/recipes-core/initrdscripts/files/init-install.sh170
-rw-r--r--meta/recipes-core/initrdscripts/files/init-live.sh92
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-boot_1.0.bb13
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb13
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb18
6 files changed, 314 insertions, 0 deletions
diff --git a/meta/recipes-core/initrdscripts/files/init-boot.sh b/meta/recipes-core/initrdscripts/files/init-boot.sh
new file mode 100644
index 0000000000..9d804fc3a7
--- /dev/null
+++ b/meta/recipes-core/initrdscripts/files/init-boot.sh
@@ -0,0 +1,8 @@
1#!/bin/sh
2
3mkdir /proc
4mkdir /sys
5mount -t proc proc /proc
6mount -t sysfs sysfs /sys
7
8exec sh
diff --git a/meta/recipes-core/initrdscripts/files/init-install.sh b/meta/recipes-core/initrdscripts/files/init-install.sh
new file mode 100644
index 0000000000..ecd0a1b44a
--- /dev/null
+++ b/meta/recipes-core/initrdscripts/files/init-install.sh
@@ -0,0 +1,170 @@
1#!/bin/sh -e
2#
3# Copyright (C) 2008 Intel
4#
5# install.sh [device_name] [rootfs_name] [video_mode] [vga_mode]
6#
7
8# We need 20 Mb for the boot partition
9boot_size=20
10
11# 5% for the swap
12swap_ratio=5
13
14found="no"
15
16echo "Searching for a hard drive..."
17for device in 'hda' 'hdb' 'sda' 'sdb'
18 do
19 if [ -e /sys/block/${device}/removable ]; then
20 if [ "$(cat /sys/block/${device}/removable)" = "0" ]; then
21 found="yes"
22
23 while true; do
24 echo "Found drive at /dev/${device}. Do you want to install moblin there ? [y/n]"
25 read answer
26 if [ "$answer" = "y" ] ; then
27 break
28 fi
29
30 if [ "$answer" = "n" ] ; then
31 found=no
32 break
33 fi
34
35 echo "Please answer by y or n"
36 done
37 fi
38 fi
39
40 if [ "$found" = "yes" ]; then
41 break;
42 fi
43
44done
45
46if [ "$found" = "no" ]; then
47 exit 1
48fi
49
50echo "Installing image on /dev/${device}"
51
52#
53# The udev automounter can cause pain here, kill it
54#
55rm -f /etc/udev/scripts/mount*
56
57#
58# Unmount anything the automounter had mounted
59#
60umount /dev/${device} 2> /dev/null || /bin/true
61umount /dev/${device}1 2> /dev/null || /bin/true
62umount /dev/${device}2 2> /dev/null || /bin/true
63umount /dev/${device}3 2> /dev/null || /bin/true
64umount /dev/${device}4 2> /dev/null || /bin/true
65umount /dev/${device}5 2> /dev/null || /bin/true
66umount /dev/${device}6 2> /dev/null || /bin/true
67
68if [ ! -b /dev/sda ] ; then
69 mknod /dev/sda b 8 0
70fi
71
72if [ ! -b /dev/sdb ] ; then
73 mknod /dev/sdb b 8 16
74fi
75
76if [ ! -b /dev/loop0 ] ; then
77 mknod /dev/loop0 b 7 0
78fi
79
80mkdir -p /tmp
81cat /proc/mounts > /etc/mtab
82
83disk_size=$(parted /dev/${device} unit mb print | grep Disk | cut -d" " -f 3 | sed -e "s/MB//")
84
85swap_size=$((disk_size*5/100))
86rootfs_size=$((disk_size-boot_size-swap_size))
87
88rootfs_start=$((boot_size + 1))
89rootfs_end=$((rootfs_start+rootfs_size))
90swap_start=$((rootfs_end+1))
91
92bootfs=/dev/${device}1
93rootfs=/dev/${device}2
94swap=/dev/${device}3
95
96echo "*****************"
97echo "Boot partition size: $boot_size MB (/dev/${device}1)"
98echo "Rootfs partition size: $rootfs_size MB (/dev/${device}2)"
99echo "Swap partition size: $swap_size MB (/dev/${device}3)"
100echo "*****************"
101echo "Deleting partition table on /dev/${device} ..."
102dd if=/dev/zero of=/dev/${device} bs=512 count=2
103
104echo "Creating new partition table on /dev/${device} ..."
105parted /dev/${device} mklabel msdos
106
107echo "Creating boot partition on /dev/${device}1"
108parted /dev/${device} mkpartfs primary ext2 0 $boot_size
109
110echo "Creating rootfs partition on /dev/${device}2"
111parted /dev/${device} mkpartfs primary ext2 $rootfs_start $rootfs_end
112
113echo "Creating swap partition on /dev/${device}3"
114parted /dev/${device} mkpartfs primary linux-swap $swap_start $disk_size
115
116parted /dev/${device} print
117
118echo "Formatting /dev/${device}1 to ext2..."
119mkfs.ext3 $bootfs
120
121echo "Formatting /dev/${device}2 to ext3..."
122mkfs.ext3 $rootfs
123
124echo "Formatting swap partition...(/dev/${device}3)"
125mkswap $swap
126
127mkdir /ssd
128mkdir /rootmnt
129
130mount $rootfs /ssd
131mount -o rw,loop,noatime,nodiratime /media/$1/$2 /rootmnt
132
133echo "Copying rootfs files..."
134cp -a /rootmnt/* /ssd
135
136if [ -d /ssd/etc/ ] ; then
137 echo "$swap swap swap defaults 0 0" >> /ssd/etc/fstab
138
139 # We dont want udev to mount our root device while we're booting...
140 if [ -d /ssd/etc/udev/ ] ; then
141 echo "/dev/${device}" >> /ssd/etc/udev/mount.blacklist
142 fi
143fi
144
145umount /ssd
146umount /rootmnt
147
148echo "Preparing boot partition..."
149mount $bootfs /ssd
150grub-install --root-directory=/ssd /dev/${device}
151
152echo "(hd0) /dev/${device}" > /ssd/boot/grub/device.map
153
154echo "default 0" > /ssd/boot/grub/menu.lst
155echo "timeout 30" >> /ssd/boot/grub/menu.lst
156echo "title Poky-Netbook" >> /ssd/boot/grub/menu.lst
157echo "root (hd0,0)" >> /ssd/boot/grub/menu.lst
158echo "kernel /boot/vmlinuz root=$rootfs rw $3 $4 quiet" >> /ssd/boot/grub/menu.lst
159
160cp /media/$1/vmlinuz /ssd/boot/
161
162umount /ssd
163sync
164
165echo "Remove your installation media, and press ENTER"
166
167read enter
168
169echo "Rebooting..."
170reboot -f
diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh b/meta/recipes-core/initrdscripts/files/init-live.sh
new file mode 100644
index 0000000000..c96b1f47c3
--- /dev/null
+++ b/meta/recipes-core/initrdscripts/files/init-live.sh
@@ -0,0 +1,92 @@
1#!/bin/sh
2
3ROOT_MOUNT="/rootfs/"
4ROOT_IMAGE=rootfs.img
5MOUNT="/bin/mount"
6UMOUNT="/bin/umount"
7
8early_setup() {
9 mkdir /proc
10 mkdir /sys
11 mount -t proc proc /proc
12 mount -t sysfs sysfs /sys
13 udevd --daemon
14}
15
16read_args() {
17 [ -z "$CMDLINE" ] && CMDLINE=`cat /proc/cmdline`
18 for arg in $CMDLINE; do
19 optarg=`expr "x$arg" : 'x[^=]*=\(.*\)'`
20 case $arg in
21 root=*)
22 ROOT_DEVICE=$optarg ;;
23 rootfstype=*)
24 ROOT_FSTYPE=$optarg ;;
25 rootdelay=*)
26 rootdelay=$optarg ;;
27 LABEL=*)
28 label=$optarg ;;
29 video=*)
30 video_mode=$arg ;;
31 vga=*)
32 vga_mode=$arg ;;
33 esac
34 done
35}
36
37boot_live_root() {
38 killall udevd
39 cd $ROOT_MOUNT
40 exec switch_root -c /dev/console $ROOT_MOUNT /sbin/init
41}
42
43fatal() {
44 echo $1 >$CONSOLE
45 echo >$CONSOLE
46 exec sh
47}
48
49early_setup
50
51[ -z "$CONSOLE" ] && CONSOLE="/dev/console"
52
53read_args
54
55echo "Waiting for removable media..."
56while true
57do
58 for i in `ls /media 2>/dev/null`; do
59 if [ -f /media/$i/$ROOT_IMAGE ] ; then
60 found="yes"
61 break
62 fi
63 done
64 if [ "$found" = "yes" ]; then
65 break;
66 fi
67 sleep 1
68done
69
70case $label in
71 boot)
72 mkdir $ROOT_MOUNT
73 mknod /dev/loop0 b 7 0
74
75 if ! $MOUNT -o rw,loop,noatime,nodiratime /media/$i/$ROOT_IMAGE $ROOT_MOUNT ; then
76 fatal "Couldnt mount rootfs image"
77 else
78 boot_live_root
79 fi
80 ;;
81 install)
82 if [ -f /media/$i/$ROOT_IMAGE ] ; then
83 ./install.sh $i $ROOT_IMAGE $video_mode $vga_mode
84 else
85 fatal "Couldnt find install script"
86 fi
87
88 # If we're getting here, we failed...
89 fatal "Installation image failed"
90 ;;
91esac
92
diff --git a/meta/recipes-core/initrdscripts/initramfs-boot_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-boot_1.0.bb
new file mode 100644
index 0000000000..04ce51fafa
--- /dev/null
+++ b/meta/recipes-core/initrdscripts/initramfs-boot_1.0.bb
@@ -0,0 +1,13 @@
1DESCRIPTON = "A live image init script"
2LICENSE = "MIT"
3
4SRC_URI = "file://init-boot.sh"
5
6PR = "r0"
7
8do_install() {
9 install -m 0755 ${WORKDIR}/init-boot.sh ${D}/init
10}
11
12PACKAGE_ARCH = "all"
13FILES_${PN} += " /init "
diff --git a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
new file mode 100644
index 0000000000..ba36a58049
--- /dev/null
+++ b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
@@ -0,0 +1,13 @@
1DESCRIPTON = "A live image init script"
2LICENSE = "MIT"
3
4SRC_URI = "file://init-live.sh"
5
6PR = "r2"
7
8do_install() {
9 install -m 0755 ${WORKDIR}/init-live.sh ${D}/init
10}
11
12PACKAGE_ARCH = "all"
13FILES_${PN} += " /init "
diff --git a/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb
new file mode 100644
index 0000000000..b15621b668
--- /dev/null
+++ b/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb
@@ -0,0 +1,18 @@
1DESCRIPTON = "A live image init script"
2LICENSE = "MIT"
3
4SRC_URI = "file://init-install.sh"
5
6PR = "r3"
7
8RDEPENDS="grub parted e2fsprogs-mke2fs"
9
10do_install() {
11 install -m 0755 ${WORKDIR}/init-install.sh ${D}/install.sh
12}
13
14PACKAGE_ARCH = "all"
15FILES_${PN} = " /install.sh "
16
17# Alternatives to grub need adding for other arch support
18COMPATIBLE_HOST = "(i.86|x86_64).*-linux"