Make build_image create a bootable kernel partition.

Modify build_image to use the kernel_utility and the inline bootloader
to generate a bootable kernel partition.

Review URL: http://codereview.chromium.org/2112013

Review URL: http://codereview.chromium.org/2377003
This commit is contained in:
Bill Richardson 2010-05-28 15:38:56 -07:00
parent 5337440620
commit 6795622ce9

View File

@ -123,6 +123,9 @@ if [[ -e "$OUTPUT_DIR" ]]; then
fi
fi
# Be verbose to help debug failures.
set -x
# Create the output directory.
mkdir -p "$OUTPUT_DIR"
@ -387,11 +390,6 @@ sudo INSTALL_MASK="$INSTALL_MASK" emerge-${BOARD} \
--root="$ROOT_FS_DIR" --root-deps=rdeps \
--usepkgonly chromeos $EMERGE_JOBS
# Extract the kernel from the root filesystem for use by the GPT image. Legacy
# BIOS will use the kernel in the rootfs (via syslinux), Chrome OS BIOS will
# use the kernel partition.
sudo cp -f "${ROOT_FS_DIR}/boot/vmlinuz" "${OUTPUT_DIR}/vmlinuz.image"
# Create EFI System Partition to boot stock EFI BIOS (but not ChromeOS EFI
# BIOS). We only need this for x86, but it's simpler and safer to keep the disk
# images the same for both x86 and ARM.
@ -428,6 +426,43 @@ menuentry "local image B" {
EOF
# Legacy BIOS will use the kernel in the rootfs (via syslinux), as will
# standard EFI BIOS (via grub, from the EFI System Partition). Chrome OS BIOS
# will use a separate signed kernel partition, which we'll create now.
# FIXME: remove serial output, debugging messages
cat <<'EOF' > "${OUTPUT_DIR}/config.txt"
earlyprintk=serial,ttyS0,115200
console=ttyS0,115200
init=/sbin/init
add_efi_memmap
boot=local
rootwait
root=/dev/sd%D%P
ro
noresume
noswap
i915.modeset=1
loglevel=7
Hi_Mom
EOF
# FIXME: We need to specify the real keys and certs here!
SIG_DIR="${SRC_ROOT}/platform/vboot_reference/tests/testkeys"
# Create the kernel partition image.
kernel_utility --generate \
--firmware_key "${SIG_DIR}/key_rsa4096.pem" \
--kernel_key "${SIG_DIR}/key_rsa1024.pem" \
--kernel_key_pub "${SIG_DIR}/key_rsa1024.keyb" \
--firmware_sign_algorithm 8 \
--kernel_sign_algorithm 2 \
--kernel_key_version 1 \
--kernel_version 1 \
--config "${OUTPUT_DIR}/config.txt" \
--bootloader /lib64/bootstub/bootstub.efi \
--vmlinuz "${ROOT_FS_DIR}/boot/vmlinuz" \
--out "${OUTPUT_DIR}/vmlinuz.image"
# Perform any customizations on the root file system that are needed.
"${SCRIPTS_DIR}/customize_rootfs" \
--root="$ROOT_FS_DIR" \
@ -477,6 +512,9 @@ OUTSIDE_OUTPUT_DIR="../build/images/${FLAGS_board}/${IMAGE_SUBDIR}"
[ "$FLAGS_withdev" -eq "$FLAGS_TRUE" ] && create_developer_image
trap - EXIT
# be quiet again
set +x
echo "Done. Image created in ${OUTPUT_DIR}"
echo "Chromium OS image created as $PRISTINE_IMAGE_NAME"
if [ "$FLAGS_withdev" -eq "$FLAGS_TRUE" ]; then