| OLD | NEW |
| 1 #!/bin/bash | 1 #!/bin/bash |
| 2 | 2 |
| 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
| 5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
| 6 | 6 |
| 7 # This script modifies a base image to act as a recovery installer. | 7 # This script modifies a base image to act as a recovery installer. |
| 8 # If a developer payload is supplied, it will be used. | 8 # If a developer payload is supplied, it will be used. |
| 9 # It is very straight forward, top to bottom to show clearly what is | 9 # It is very straight forward, top to bottom to show clearly what is |
| 10 # little is needed to create a developer shim to run a signed script. | 10 # little is needed to create a developer shim to run a signed script. |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 | 58 |
| 59 header_offset=34 | 59 header_offset=34 |
| 60 stateful_sectors=$(((FLAGS_statefulfs_size * 1024 * 1024) / 512)) | 60 stateful_sectors=$(((FLAGS_statefulfs_size * 1024 * 1024) / 512)) |
| 61 stateful_sectors=$(roundup $stateful_sectors) | 61 stateful_sectors=$(roundup $stateful_sectors) |
| 62 | 62 |
| 63 if [ -b "$FLAGS_image" ]; then | 63 if [ -b "$FLAGS_image" ]; then |
| 64 sudo=sudo | 64 sudo=sudo |
| 65 else | 65 else |
| 66 max_kern_size=32768 | 66 max_kern_size=32768 |
| 67 dd if=/dev/zero of="${FLAGS_image}" bs=512 count=0 \ | 67 dd if=/dev/zero of="${FLAGS_image}" bs=512 count=0 \ |
| 68 seek=$((1 + max_kern_size + header_offset + stateful_sectors)) | 68 seek=$((1 + max_kern_size + (2 * header_offset) + stateful_sectors)) |
| 69 sudo="" | 69 sudo="" |
| 70 fi | 70 fi |
| 71 | 71 |
| 72 ## STATEFUL | 72 ## STATEFUL |
| 73 | 73 |
| 74 stateful_image=$(mktemp) | 74 stateful_image=$(mktemp) |
| 75 trap "rm $stateful_image" EXIT | 75 trap "rm $stateful_image" EXIT |
| 76 | 76 |
| 77 dd if=/dev/zero of="$stateful_image" bs=512 \ | 77 dd if=/dev/zero of="$stateful_image" bs=512 \ |
| 78 seek=$stateful_sectors count=0 | 78 seek=$stateful_sectors count=0 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 92 sudo umount -d "$stateful_mnt" | 92 sudo umount -d "$stateful_mnt" |
| 93 rmdir "$stateful_mnt" | 93 rmdir "$stateful_mnt" |
| 94 | 94 |
| 95 ## GPT | 95 ## GPT |
| 96 | 96 |
| 97 kernel_bytes=$(stat -c '%s' $FLAGS_kernel_image) | 97 kernel_bytes=$(stat -c '%s' $FLAGS_kernel_image) |
| 98 kernel_sectors=$((kernel_bytes / 512)) | 98 kernel_sectors=$((kernel_bytes / 512)) |
| 99 kernel_sectors=$(roundup $kernel_sectors) | 99 kernel_sectors=$(roundup $kernel_sectors) |
| 100 | 100 |
| 101 $sudo $GPT create $FLAGS_image | 101 $sudo $GPT create $FLAGS_image |
| 102 trap "rm $FLAGS_image" ERR | 102 trap "rm $FLAGS_image; echo 'An error occurred! Rerun with -v for details.'" ERR |
| 103 | 103 |
| 104 offset=$header_offset | 104 offset=$header_offset |
| 105 $sudo $GPT add -b $offset -s $stateful_sectors \ | 105 $sudo $GPT add -b $offset -s $stateful_sectors \ |
| 106 -t data -l "STATE" $FLAGS_image | 106 -t data -l "STATE" $FLAGS_image |
| 107 $sudo dd if=$stateful_image of=$FLAGS_image bs=512 conv=notrunc \ | 107 $sudo dd if=$stateful_image of=$FLAGS_image bs=512 conv=notrunc \ |
| 108 seek=$offset count=$stateful_sectors | 108 seek=$offset count=$stateful_sectors |
| 109 | 109 |
| 110 offset=$((offset + stateful_sectors)) | 110 offset=$((offset + stateful_sectors)) |
| 111 $sudo $GPT add -b $offset -s $kernel_sectors \ | 111 $sudo $GPT add -b $offset -s $kernel_sectors \ |
| 112 -t kernel -l "KERN-A" -S 0 -T 15 -P 15 $FLAGS_image | 112 -t kernel -l "KERN-A" -S 0 -T 15 -P 15 $FLAGS_image |
| 113 $sudo dd if=$FLAGS_kernel_image of=$FLAGS_image bs=512 conv=notrunc \ | 113 $sudo dd if=$FLAGS_kernel_image of=$FLAGS_image bs=512 conv=notrunc \ |
| 114 seek=$offset count=$kernel_sectors | 114 seek=$offset count=$kernel_sectors |
| 115 # The kernel will ignore GPT without a legacymbr. | 115 # The kernel will ignore GPT without a legacymbr. |
| 116 PMBRCODE=$(readlink -f /usr/share/syslinux/gptmbr.bin) | 116 PMBRCODE=$(readlink -f /usr/share/syslinux/gptmbr.bin) |
| 117 # Have it legacy boot off of stateful, not that it should matter. | 117 # Have it legacy boot off of stateful, not that it should matter. |
| 118 $sudo $GPT boot -p -b "$PMBRCODE" -i 1 $FLAGS_image 1>&2 | 118 $sudo $GPT boot -p -b "$PMBRCODE" -i 1 $FLAGS_image 1>&2 |
| 119 | 119 |
| 120 $sudo $GPT show $FLAGS_image | 120 $sudo $GPT show $FLAGS_image |
| 121 | 121 |
| 122 echo "Done." | 122 echo "Emitted $FLAGS_image successfully!" |
| OLD | NEW |