Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Unified Diff: src/platform/installer/chromeos-common.sh

Issue 1513019: Create EFI System Partition on USB image during build. (Closed)
Patch Set: Cleanup, add image_to_vmware.sh changes Created 10 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/platform/installer/chromeos-install » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/platform/installer/chromeos-common.sh
diff --git a/src/platform/installer/chromeos-common.sh b/src/platform/installer/chromeos-common.sh
index 0baf440bf1f83704fcf54c8465aec2d75442fbf6..83fb0348efc51c36d77db5c28e93c77c4ba2a01b 100644
--- a/src/platform/installer/chromeos-common.sh
+++ b/src/platform/installer/chromeos-common.sh
@@ -28,11 +28,11 @@ numsectors() {
/dev/*[0-9])
dnum=${1##*/}
dev=${dnum%%[0-9]*}
- cat /sys/block/$dev/$dnum/size
+ cat /sys/block/$dev/$dnum/size
;;
/dev/*)
dev=${1##*/}
- cat /sys/block/$dev/size
+ cat /sys/block/$dev/size
;;
*)
local bytes=$(stat -c%s "$1")
@@ -43,7 +43,7 @@ numsectors() {
fi
echo $sectors
;;
- esac
+ esac
}
# Round a number of 512-byte sectors up to an integral number of 4096-byte
@@ -95,7 +95,7 @@ fi
# components. If the target is a block device or the FORCE_FULL arg is "true"
# we'll do a full install. Otherwise, it'll be just enough to boot.
# Invoke as: command (not subshell)
-# Args: TARGET ROOTFS_IMG KERNEL_IMG STATEFUL_IMG PMBRCODE FORCE_FULL
+# Args: TARGET ROOTFS_IMG KERNEL_IMG STATEFUL_IMG PMBRCODE ESP_IMG FORCE_FULL
# Return: nothing
# Side effects: Sets these global variables describing the GPT partitions
# (all untis are 512-byte sectors):
@@ -103,19 +103,22 @@ fi
# NUM_ROOTFS_SECTORS
# NUM_STATEFUL_SECTORS
# NUM_RESERVED_SECTORS
+# NUM_ESP_SECTORS
# START_KERN_A
# START_STATEFUL
# START_ROOTFS_A
# START_KERN_B
# START_ROOTFS_B
# START_RESERVED
+# START_ESP
install_gpt() {
local outdev=$1
local rootfs_img=$2
local kernel_img=$3
local stateful_img=$4
local pmbrcode=$5
- local force_full="${6:-}"
+ local esp_img=$6
+ local force_full="${7:-}"
# The gpt tool requires a fixed-size target to work on, so we may have to
# create a file of the appropriate size. Let's figure out what that size is
@@ -149,6 +152,7 @@ install_gpt() {
local max_kern_sectors=32768 # 16M
local max_rootfs_sectors=2097152 # 1G
local max_reserved_sectors=131072 # 64M
+ local max_esp_sectors=32768 # 16M
local min_stateful_sectors=262144 # 128M, expands to fill available space
local num_pmbr_sectors=1
@@ -171,12 +175,14 @@ install_gpt() {
# Full install, use max sizes and create both A & B images.
NUM_KERN_SECTORS=$max_kern_sectors
NUM_ROOTFS_SECTORS=$max_rootfs_sectors
+ NUM_ESP_SECTORS=$max_esp_sectors
NUM_RESERVED_SECTORS=$max_reserved_sectors
# Where do things go?
START_KERN_A=$start_useful
START_KERN_B=$(($START_KERN_A + $NUM_KERN_SECTORS))
- START_RESERVED=$(($START_KERN_B + $NUM_KERN_SECTORS))
+ START_ESP=$(($START_KERN_B + $NUM_KERN_SECTORS))
+ START_RESERVED=$(($START_ESP + $NUM_ESP_SECTORS))
START_STATEFUL=$(($START_RESERVED + $NUM_RESERVED_SECTORS))
local total_sectors=$(numsectors $outdev)
@@ -196,10 +202,12 @@ install_gpt() {
NUM_KERN_SECTORS=$(roundup $(numsectors $kernel_img))
NUM_ROOTFS_SECTORS=$(roundup $(numsectors $rootfs_img))
NUM_STATEFUL_SECTORS=$(roundup $(numsectors $stateful_img))
+ NUM_ESP_SECTORS=$(roundup $(numsectors $esp_img))
NUM_RESERVED_SECTORS=0
START_KERN_A=$start_useful
- START_STATEFUL=$(($START_KERN_A + $NUM_KERN_SECTORS))
+ START_ESP=$(($START_KERN_A + $NUM_KERN_SECTORS))
+ START_STATEFUL=$(($START_ESP + $NUM_ESP_SECTORS))
START_ROOTFS_A=$(($START_STATEFUL + $NUM_STATEFUL_SECTORS))
START_KERN_B=""
START_ROOTFS_B=""
@@ -226,38 +234,44 @@ install_gpt() {
count=$num_header_sectors
$sudo dd if=/dev/zero of=${outdev} conv=notrunc bs=512 \
seek=${start_gpt_footer} count=$num_footer_sectors
-
+
# Create the new GPT partitions. The order determines the partition number.
# Note that the partition label is in the GPT only. The filesystem label is
# what's used to populate /dev/disk/by-label/, and this is not that.
$sudo $GPT create ${outdev}
-
+
$sudo $GPT add -b ${START_STATEFUL} -s ${NUM_STATEFUL_SECTORS} \
-t ${STATEFUL_GUID} ${outdev}
$sudo $GPT label -i 1 -l "STATE" ${outdev}
-
+
$sudo $GPT add -b ${START_KERN_A} -s ${NUM_KERN_SECTORS} \
-t ${KERN_GUID} ${outdev}
$sudo $GPT label -i 2 -l "KERN-A" ${outdev}
-
+
$sudo $GPT add -b ${START_ROOTFS_A} -s ${NUM_ROOTFS_SECTORS} \
-t ${ROOTFS_GUID} ${outdev}
$sudo $GPT label -i 3 -l "ROOT-A" ${outdev}
-
+
# add the rest of the partitions for a full install
if [ -n "$START_KERN_B" ]; then
$sudo $GPT add -b ${START_KERN_B} -s ${NUM_KERN_SECTORS} \
-t ${KERN_GUID} ${outdev}
$sudo $GPT label -i 4 -l "KERN-B" ${outdev}
-
+
$sudo $GPT add -b ${START_ROOTFS_B} -s ${NUM_ROOTFS_SECTORS} \
-t ${ROOTFS_GUID} ${outdev}
$sudo $GPT label -i 5 -l "ROOT-B" ${outdev}
fi
+ # add the ESP partition
+ $sudo $GPT add -b ${START_ESP} -s ${NUM_ESP_SECTORS} \
+ -t ${ESP_GUID} ${outdev}
+ # FIXME: no label because I've lost count of the partition number
+ # I'll fix this when I've modified gpt to accept a label arg to 'add'.
+
# Create the PMBR and instruct it to boot ROOT-A
$sudo $GPT boot -i 3 -b ${pmbrcode} ${outdev}
-
+
# Display what we've got
$sudo $GPT -r show -l ${outdev}
« no previous file with comments | « no previous file | src/platform/installer/chromeos-install » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698