OLD | NEW |
1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
2 # Distributed under the terms of the GNU General Public License v2 | 2 # Distributed under the terms of the GNU General Public License v2 |
3 | 3 |
4 EAPI=2 | 4 EAPI=2 |
5 | 5 |
6 inherit cros-workon | 6 inherit cros-workon |
7 | 7 |
8 DESCRIPTION="Create Chrome OS initramfs" | 8 DESCRIPTION="Create Chrome OS initramfs" |
9 HOMEPAGE="http://src.chromium.org" | 9 HOMEPAGE="http://src.chromium.org" |
10 | 10 |
11 LICENSE="GPL-2" | 11 LICENSE="GPL-2" |
12 SLOT="0" | 12 SLOT="0" |
13 KEYWORDS="~x86 ~arm" | 13 KEYWORDS="~x86 ~arm" |
14 IUSE="" | 14 IUSE="" |
15 DEPEND="app-arch/cpio | 15 DEPEND="app-arch/cpio |
16 sys-apps/busybox | 16 sys-apps/busybox |
17 sys-apps/rootdev | |
18 sys-fs/lvm2 | 17 sys-fs/lvm2 |
19 chromeos-base/vboot_reference | 18 chromeos-base/vboot_reference |
20 chromeos-base/chromeos-installer" | 19 chromeos-base/chromeos-installer" |
21 RDEPEND="" | 20 RDEPEND="" |
22 | 21 |
23 CROS_WORKON_LOCALNAME="../platform/initramfs" | 22 CROS_WORKON_LOCALNAME="../platform/initramfs" |
24 CROS_WORKON_PROJECT="initramfs" | 23 CROS_WORKON_PROJECT="initramfs" |
25 | 24 |
26 INITRAMFS_TMP_S=${WORKDIR}/initramfs_tmp | 25 INITRAMFS_TMP_S=${WORKDIR}/initramfs_tmp |
27 # Suffixed with cpio or not recognize filetype. | 26 # Suffixed with cpio or not recognize filetype. |
28 INITRAMFS_FILE="initramfs.cpio.gz" | 27 INITRAMFS_FILE="initramfs.cpio.gz" |
29 | 28 |
30 build_initramfs_file() { | 29 build_initramfs_file() { |
31 mkdir -p ${INITRAMFS_TMP_S}/bin ${INITRAMFS_TMP_S}/sbin | 30 mkdir -p ${INITRAMFS_TMP_S}/bin ${INITRAMFS_TMP_S}/sbin |
32 mkdir -p ${INITRAMFS_TMP_S}/usr/bin ${INITRAMFS_TMP_S}/usr/sbin | 31 mkdir -p ${INITRAMFS_TMP_S}/usr/bin ${INITRAMFS_TMP_S}/usr/sbin |
33 mkdir -p ${INITRAMFS_TMP_S}/etc ${INITRAMFS_TMP_S}/dev | 32 mkdir -p ${INITRAMFS_TMP_S}/etc ${INITRAMFS_TMP_S}/dev |
34 mkdir -p ${INITRAMFS_TMP_S}/root ${INITRAMFS_TMP_S}/proc | 33 mkdir -p ${INITRAMFS_TMP_S}/root ${INITRAMFS_TMP_S}/proc |
35 mkdir -p ${INITRAMFS_TMP_S}/sys ${INITRAMFS_TMP_S}/usb | 34 mkdir -p ${INITRAMFS_TMP_S}/sys ${INITRAMFS_TMP_S}/usb |
36 mkdir -p ${INITRAMFS_TMP_S}/newroot ${INITRAMFS_TMP_S}/lib | 35 mkdir -p ${INITRAMFS_TMP_S}/newroot ${INITRAMFS_TMP_S}/lib |
37 » mkdir -p ${INITRAMFS_TMP_S}/stateful | 36 » mkdir -p ${INITRAMFS_TMP_S}/stateful ${INITRAMFS_TMP_S}/tmp |
| 37 » mkdir -p ${INITRAMFS_TMP_S}/log |
38 | 38 |
39 # Insure cgpt is statically linked | 39 # Insure cgpt is statically linked |
40 file ${ROOT}/usr/bin/cgpt | grep -q "statically linked" || die | 40 file ${ROOT}/usr/bin/cgpt | grep -q "statically linked" || die |
41 | 41 |
42 # Load libraries for busybox and dmsetup | 42 # Load libraries for busybox and dmsetup |
43 # TODO: how can ebuilds support static busybox? | 43 # TODO: how can ebuilds support static busybox? |
44 LIBS=" | 44 LIBS=" |
45 ld-linux.so.2 | 45 ld-linux.so.2 |
46 libm.so.6 | 46 libm.so.6 |
47 libc.so.6 | 47 libc.so.6 |
| 48 ../usr/lib/libcrypto.so.0.9.8 |
48 libdevmapper.so.1.02 | 49 libdevmapper.so.1.02 |
49 libdl.so.2 | 50 libdl.so.2 |
50 libpam.so.0 | 51 libpam.so.0 |
51 libpam_misc.so.0 | 52 libpam_misc.so.0 |
52 libpthread.so.0 | 53 libpthread.so.0 |
53 librt.so.1 | 54 librt.so.1 |
| 55 libz.so.1 |
54 " | 56 " |
55 for lib in $LIBS; do | 57 for lib in $LIBS; do |
56 cp ${ROOT}/lib/${lib} ${INITRAMFS_TMP_S}/lib/ || die | 58 cp ${ROOT}/lib/${lib} ${INITRAMFS_TMP_S}/lib/ || die |
57 done | 59 done |
58 | 60 |
59 cp ${ROOT}/bin/busybox ${INITRAMFS_TMP_S}/bin || die | 61 cp ${ROOT}/bin/busybox ${INITRAMFS_TMP_S}/bin || die |
| 62 |
| 63 # For verified rootfs |
60 cp ${ROOT}/sbin/dmsetup ${INITRAMFS_TMP_S}/bin || die | 64 cp ${ROOT}/sbin/dmsetup ${INITRAMFS_TMP_S}/bin || die |
61 » cp ${ROOT}/usr/bin/rootdev ${INITRAMFS_TMP_S}/bin || die | 65 |
| 66 » # For recovery behavior |
| 67 » cp ${ROOT}/usr/bin/tpmc ${INITRAMFS_TMP_S}/bin || die |
| 68 » cp ${ROOT}/usr/bin/dev_sign_file ${INITRAMFS_TMP_S}/bin || die |
| 69 » cp ${ROOT}/usr/bin/vbutil_kernel ${INITRAMFS_TMP_S}/bin || die |
62 | 70 |
63 cp ${ROOT}/usr/bin/cgpt ${INITRAMFS_TMP_S}/usr/bin || die | 71 cp ${ROOT}/usr/bin/cgpt ${INITRAMFS_TMP_S}/usr/bin || die |
64 cp ${ROOT}/usr/sbin/chromeos-common.sh ${INITRAMFS_TMP_S}/usr/sbin || di
e | 72 cp ${ROOT}/usr/sbin/chromeos-common.sh ${INITRAMFS_TMP_S}/usr/sbin || di
e |
65 cp ${ROOT}/usr/sbin/chromeos-findrootfs ${INITRAMFS_TMP_S}/usr/sbin || d
ie | 73 cp ${ROOT}/usr/sbin/chromeos-findrootfs ${INITRAMFS_TMP_S}/usr/sbin || d
ie |
66 | 74 |
67 ln -s "busybox" "${INITRAMFS_TMP_S}/bin/sh" | 75 ln -s "busybox" "${INITRAMFS_TMP_S}/bin/sh" |
68 cp "${FILESDIR}/init" "${INITRAMFS_TMP_S}/init" || die | 76 cp "${FILESDIR}/init" "${INITRAMFS_TMP_S}/init" || die |
69 chmod +x "${INITRAMFS_TMP_S}/init" | 77 chmod +x "${INITRAMFS_TMP_S}/init" |
70 | 78 |
71 # The kernel emake expects the file in cpio format. | 79 # The kernel emake expects the file in cpio format. |
72 pushd "${INITRAMFS_TMP_S}"; find . | cpio -o -H newc | gzip -9 \ | 80 pushd "${INITRAMFS_TMP_S}"; find . | cpio -o -H newc | gzip -9 \ |
73 > "${WORKDIR}/${INITRAMFS_FILE}" \ | 81 > "${WORKDIR}/${INITRAMFS_FILE}" \ |
74 || die "cannot package initramfs" | 82 || die "cannot package initramfs" |
75 popd | 83 popd |
76 } | 84 } |
77 | 85 |
78 src_compile() { | 86 src_compile() { |
79 einfo "Creating ${INITRAMFS_FILE}" | 87 einfo "Creating ${INITRAMFS_FILE}" |
80 build_initramfs_file | 88 build_initramfs_file |
81 INITRAMFS_FILE_SIZE=$(stat --printf="%s" "${WORKDIR}/${INITRAMFS_FILE}") | 89 INITRAMFS_FILE_SIZE=$(stat --printf="%s" "${WORKDIR}/${INITRAMFS_FILE}") |
82 einfo "${INITRAMFS_FILE}: ${INITRAMFS_FILE_SIZE} bytes" | 90 einfo "${INITRAMFS_FILE}: ${INITRAMFS_FILE_SIZE} bytes" |
83 } | 91 } |
84 | 92 |
85 src_install() { | 93 src_install() { |
86 dodir /boot | 94 dodir /boot |
87 dobin ${WORKDIR}/${INITRAMFS_FILE} | 95 dobin ${WORKDIR}/${INITRAMFS_FILE} |
88 } | 96 } |
OLD | NEW |