| 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 |