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

Side by Side Diff: scripts/newbitmaps/README

Issue 6825032: Add the latest localized text strings, update scripts to support them. (Closed) Base URL: ssh://gitrw.chromium.org:9222/vboot_reference.git@master
Patch Set: Created 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | scripts/newbitmaps/images/1280x800/Developer.bmp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 This directory contains examples of the new-style BIOS bitmaps, and a simple 1 This directory contains examples of the new-style BIOS bitmaps, and a simple
2 (and ugly) tool to view the configuration file that describes how each 2 (and ugly) tool to view the configuration file that describes how each
3 screen is displayed. 3 screen is displayed.
4 4
5 Old-style bitmaps: 5 Old-style bitmaps:
6 6
7 In the Cr-48 BIOS there are four BIOS screens that may be presented to the 7 In the Cr-48 BIOS there are four BIOS screens that may be presented to the
8 user. Each contains a graphic, a URL, and some informative text. The screens 8 user. Each contains a graphic, a URL, and some informative text. The screens
9 are single bitmap images, hardcoded in read-only BIOS (because they have to 9 are single bitmap images, hardcoded in read-only BIOS (because they have to
10 display even when the R/W BIOS and SSD are both completely erased). They can 10 display even when the R/W BIOS and SSD are both completely erased). They can
11 be replaced at manufacturing time, but creating the screens is difficult. 11 be replaced at manufacturing time, but creating the screens is difficult.
12 The format is a compressed EFI firmware volume that is generated when the 12 The format is a compressed EFI firmware volume that is generated when the
13 BIOS is compiled. The result is an opaque blob that cannot be viewed or 13 BIOS is compiled. The result is an opaque blob that cannot be viewed or
14 edited with linux-based tools. 14 edited with linux-based tools.
15 15
16 16
17 New-style bitmaps: 17 New-style bitmaps (version 1.0):
18 18
19 Future BIOSes will continue to display the same basic screens, but using a 19 Future BIOSes will continue to display the same basic screens, but using a
20 different format. Each screen will have separate bitmaps for the basic 20 different format. Each screen has separate bitmaps for the basic graphic,
21 graphic, the URL, and the informative text, and will be displayed by 21 the URL, and the informative text, and will be displayed by rendering each
22 rendering each component in order. This will allow us to modify and replace 22 component in order. This will allow us to modify and replace any bitmap
23 any bitmap (most frequently the HWID), using standard command-line tools 23 (most frequently the HWID), using standard command-line tools such as
24 such as imagemagick. Compositing each screen in this way also means that we 24 imagemagick. Compositing each screen in this way also means that we can
25 can easily provide localized BIOS screens or custom messages. 25 easily provide localized BIOS screens or custom messages.
26 26
27 27
28 Note: 28 Note:
29 29
30 Because the bitmap images and display code is part of the Read-Only BIOS, 30 Because the bitmap images and display code is part of the Read-Only BIOS,
31 back-porting the new-style bitmaps to older devices is not possible. 31 back-porting the new-style bitmaps to older devices is not possible.
32 32
33 33
34 Instructions: 34 Manual instructions:
35 35
36 The bmpblk_utility reads a config file and produces a binary bmpblock. The 36 The bmpblk_utility reads a config file and produces a binary bmpblock. The
37 config file lists the individual bitmaps and describes where to place each 37 config file lists the individual bitmaps and describes where to place each
38 one when displaying each screen. The bmpblock is then written into the BIOS 38 one when displaying each screen. The bmpblock is then written into the BIOS
39 image with the gbb_utility. The bitmap_viewer program lets you view the 39 image with the gbb_utility. The bitmap_viewer program lets you view the
40 composited screens as described by the config file. 40 composited screens as described by the config file.
41 41
42 * First, get the bitmap_viewer working. This is best used OUTSIDE of the 42 * First, get the bitmap_viewer working. This is best used OUTSIDE of the
43 chroot. Test it by changing to the scripts/newbitmaps/images/1280x800 43 chroot. Test it by changing to the scripts/newbitmaps/images/1280x800
44 directory and running "../../bitmap_viewer unknown.yaml". You may need to 44 directory and running "../../bitmap_viewer hwid_unknown.yaml". You may
45 install some additional packages. For example, on Ubuntu you'll probably 45 need to install some additional packages. For example, on Ubuntu you'll
46 need to install the "python-yaml" and "python-wxgtk2.8" packages. 46 probably need to install the "python-yaml" and "python-wxgtk2.8" packages.
47 47
48 * Now make changes to the unknown.yaml config file, and use the 48 * Now make changes to the hwid_unknown.yaml config file, and use the
49 bitmap_viewer to see how the layout looks. Hit Ctrl-R in the small window 49 bitmap_viewer to see how the layout looks. Hit Ctrl-R in the small window
50 to reload the config file without restarting. 50 to reload the config file without restarting.
51 51
52 * The bitmap_viewer can display images in several different formats, but the 52 * The bitmap_viewer can display images in several different formats, but the
53 BIOS is very limited (and may differ between x86 and ARM). For x86, ensure 53 BIOS is very limited (and may differ between x86 and ARM). For x86, ensure
54 that you're using the proper format by converting any new bitmaps with a 54 that you're using the proper format by converting any new bitmaps with a
55 command like this: 55 command like this:
56 56
57 convert IN.bmp -colors 256 -compress none -alpha off OUT.bmp 57 convert IN.bmp -colors 256 -compress none -alpha off OUT.bmp
58 58
59 * When you have the screens tweaked to your satisfaction, generate the 59 * When you have the screens tweaked to your satisfaction, generate the
60 binary bmpblock to embed into the BIOS. 60 binary bmpblock to embed into the BIOS.
61 61
62 bmpblk_utility -c unknown.yaml bmpblock.bin 62 bmpblk_utility -c hwid_unknown.yaml bmpblock.bin
63 63
64 * Use the gbb_utility to modify the BIOS to contain our new set of bitmaps. 64 * Use the gbb_utility to modify the BIOS to contain our new set of bitmaps.
65 65
66 NOTE: These commands are run (as root) on the device under test! 66 NOTE: These commands are run (as root) on the device under test!
67 67
68 NOTE: This will only work if the BIOS write-protection is disabled! 68 NOTE: This will only work if the BIOS write-protection is disabled!
69 69
70 Copy our new bmpblock over. 70 Copy our new bmpblock over.
71 71
72 cd /mnt/stateful_partition 72 cd /mnt/stateful_partition
73 scp USER@SOMEHOST:/SOMEPATH/bmpblock.bin . 73 scp USER@SOMEHOST:/SOMEPATH/bmpblock.bin .
74 74
75 Get a copy of the current BIOS. 75 Get a copy of the current BIOS.
76 76
77 flashrom -r bios.bin 77 flashrom -p internal:bus=spi -r bios.bin
78 78
79 Put our bmpblock in our copy of the BIOS 79 Put our bmpblock in our copy of the BIOS
80 80
81 gbb_utility -s -b bmpblock.bin bios.bin 81 gbb_utility -s -b bmpblock.bin bios.bin
82 82
83 Reflash the BIOS with the new content 83 Reflash the BIOS with the new content
84 84
85 flashrom -w bios.bin 85 flashrom -p internal:bus=spi -w bios.bin
86 86
87 * Reboot. You should see your new bitmaps appear whenever the BIOS screens 87 * Reboot. You should see your new bitmaps appear whenever the BIOS screens
88 are displayed. If you have more than one localization, you should be able 88 are displayed. If you have more than one localization, you should be able
89 to cycle among them with the arrow keys. 89 to cycle among them with the arrow keys.
90 90
91 * If you want to examine a binary bmpblock that you've pulled from a BIOS 91 * If you want to examine a binary bmpblock that you've pulled from a BIOS
92 image, the bmpblk_utility has options to display or unpack the binary. 92 image, the bmpblk_utility has options to display or unpack the binary.
93 93
94 bmpblk_utility bmpblock.bin 94 bmpblk_utility bmpblock.bin
95 95
96 bmpblk_utility -y bmpblock.bin 96 bmpblk_utility -y bmpblock.bin
97 97
98 bmpblk_utility -x -d /SOME/SCRATCH/DIR bmpblock.bin 98 bmpblk_utility -x -d /SOME/SCRATCH/DIR bmpblock.bin
99
100 Once you've unpacked it you can use the bitmap_viewer on the unpacked yaml
101 file to see what it looks like. There's not (yet) a single tool that just
102 displays the raw binary.
103
104
105
106 Automated instructions:
107
108 If you've got a LOT of HWIDs to generate, this is one way to do it. You can
109 do this entirely outside of the chroot if you've built vboot_reference
110 natively and put the resulting binaries into your $PATH.
111
112
113 * First, we generate the strings and bitmaps for each HWID:
114
115 cd ./strings
116 mkdir ./hwids
117 cd ./hwids
118
119 Put the list of new HWIDs strings into a file 'w':
120
121 SAMS ALEX ALPHA-US
122 SAMS ALEX ALPHA-GB
123 SAMS ALEX ALPHA-FR
124 SAMS ALEX ALPHA-DE
125 SAMS ALEX ALPHA-ES
126
127 You need to generate the HWID checksum numbers. I wrote this script, named
128 'hwidsum', to append the digits to the string:
129
130 #!/usr/bin/python
131 import sys,zlib;
132 me=' '.join(sys.argv[1:]);
133 print me, ('%04u'%(zlib.crc32(me)&0xffffffffL))[-4:]
134
135
136 Run another script like this to generate the checksums for the whole list:
137
138 #!/bin/bash
139 while read STUFF; do
140 full=$(hwidsum "$STUFF")
141 str=$(echo "HWID ${full}" | sed 's/ /_/g').txt
142 echo "$full" > "$str"
143 done < w
144
145
146 And now convert the text files into bmps:
147
148 ../text_to_bmp *.txt
149
150
151 * Move those HWID bmp files to the appropriate images directory:
152
153 pushd ../../images/1280x800/
154 mkdir ./hwids
155 mv ~1/*.bmp ./hwids/
156
157
158 * Generate the yaml files for all these new HWIDs:
159
160 ../make_yaml_from_hwids hwids/*.bmp
161
162
163 * Look at them with the bitmap viewer if you want.
164
165 ../../bitmap_viewer hwid_sams_alex_alpha-us_4504.yaml
166
167
168 * Convert the yaml files into bitmap blobs:
169
170 for i in *.yaml; do bmpblk_utility -c $i ${i%.yaml}.bin; done
171
172
173 * Test the bitmaps on a running system:
174
175 As root on an Alex, for example, you'd say something like this:
176
177 stop update-engine
178 cd /mnt/stateful_partition
179 flashrom -p internal:bus=spi -r bios.rom
180 scp USER@HOST:/SOME/PATH/TO/hwid_sams_alex_alpha-us_4504.bin .
181 gbb_utility -s \
182 -i 'SAMS ALEX ALPHA-US 4504' \
183 -b hwid_sams_alex_alpha-us_4504.bin
184 bios.rom newbios.rom
185 flashrom -p internal:bus=spi -w newbios.rom
186
187 Then reboot and see what happens.
OLDNEW
« no previous file with comments | « no previous file | scripts/newbitmaps/images/1280x800/Developer.bmp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698