Merge lp:~gesha/linaro-image-tools/1208678 into lp:linaro-image-tools/11.11
- 1208678
- Merge into trunk
Proposed by
Georgy Redkozubov
Status: | Needs review | ||||
---|---|---|---|---|---|
Proposed branch: | lp:~gesha/linaro-image-tools/1208678 | ||||
Merge into: | lp:linaro-image-tools/11.11 | ||||
Diff against target: |
419 lines (+95/-38) 5 files modified
linaro_image_tools/hwpack/config.py (+16/-0) linaro_image_tools/hwpack/hardwarepack.py (+8/-2) linaro_image_tools/hwpack/hwpack_fields.py (+2/-0) linaro_image_tools/media_create/boards.py (+24/-13) linaro_image_tools/media_create/tests/test_media_create.py (+45/-23) |
||||
To merge this branch: | bzr merge lp:~gesha/linaro-image-tools/1208678 | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
linaro-image-tools maintainers | Pending | ||
Review via email: mp+198402@code.launchpad.net |
Commit message
Description of the change
This branch adds zImage as supported kernel image type to boot.
New variable is added to hwpack: kernel_image_type
if it is set to 'zImage' 'kernel_file' is copied to the bootdisk as 'zImage', if it is not set or set to 'uImage' 'kernel_file' is treated as uImage.
To post a comment you must log in.
Unmerged revisions
- 646. By Georgy Redkozubov
-
Added zImage as supported kernel image type to boot.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'linaro_image_tools/hwpack/config.py' |
2 | --- linaro_image_tools/hwpack/config.py 2013-02-17 13:53:41 +0000 |
3 | +++ linaro_image_tools/hwpack/config.py 2013-12-10 14:12:52 +0000 |
4 | @@ -57,6 +57,7 @@ |
5 | INITRD_FILE_FIELD, |
6 | KERNEL_ADDR_FIELD, |
7 | KERNEL_FILE_FIELD, |
8 | + KERNEL_TYPE_FIELD, |
9 | LOAD_ADDR_FIELD, |
10 | LOADER_MIN_SIZE_FIELD, |
11 | LOADER_START_FIELD, |
12 | @@ -308,6 +309,7 @@ |
13 | self._validate_samsung_bl2_len() |
14 | |
15 | self._validate_sources() |
16 | + self._validate_kernel_type() |
17 | |
18 | @property |
19 | def format(self): |
20 | @@ -834,6 +836,14 @@ |
21 | return self._get_option(KERNEL_FILE_FIELD) |
22 | |
23 | @property |
24 | + def kernel_type(self): |
25 | + """Type of the kernel image. |
26 | + |
27 | + A str. |
28 | + """ |
29 | + return self._get_option(KERNEL_TYPE_FIELD) |
30 | + |
31 | + @property |
32 | def initrd(self): |
33 | """The path to initrd |
34 | |
35 | @@ -1458,3 +1468,9 @@ |
36 | self._do_validate_keys_prefix.pop() |
37 | |
38 | self._do_validate_keys_prefix.pop() |
39 | + |
40 | + def _validate_kernel_type(self): |
41 | + kernel_type = self.kernel_type |
42 | + if kernel_type not in (None, "uImage", "zImage"): |
43 | + raise HwpackConfigError( |
44 | + "Invalid value for kernel image type: %s" % kernel_type) |
45 | |
46 | === modified file 'linaro_image_tools/hwpack/hardwarepack.py' |
47 | --- linaro_image_tools/hwpack/hardwarepack.py 2013-02-18 13:05:58 +0000 |
48 | +++ linaro_image_tools/hwpack/hardwarepack.py 2013-12-10 14:12:52 +0000 |
49 | @@ -50,6 +50,7 @@ |
50 | INITRD_FILE_FIELD, |
51 | KERNEL_ADDR_FIELD, |
52 | KERNEL_FILE_FIELD, |
53 | + KERNEL_TYPE_FIELD, |
54 | LOAD_ADDR_FIELD, |
55 | LOADER_MIN_SIZE_FIELD, |
56 | LOADER_START_FIELD, |
57 | @@ -172,7 +173,8 @@ |
58 | self.samsung_bl2_len = samsung_bl2_len |
59 | |
60 | @classmethod |
61 | - def add_v3_config(self, boards=None, bootloaders=None, dtb_files=None): |
62 | + def add_v3_config(self, boards=None, bootloaders=None, dtb_files=None, |
63 | + kernel_type=None): |
64 | """Add fields that are specific to the v3 config format. |
65 | These fields are not present in the earlier config files. |
66 | |
67 | @@ -182,6 +184,7 @@ |
68 | self.boards = boards |
69 | self.bootloaders = bootloaders |
70 | self.dtb_files = dtb_files |
71 | + self.kernel_type = kernel_type |
72 | |
73 | @classmethod |
74 | def from_config(cls, config, version, architecture): |
75 | @@ -246,7 +249,8 @@ |
76 | if config.format.format_as_string == '3.0': |
77 | metadata.add_v3_config(boards=config.boards, |
78 | bootloaders=config.bootloaders, |
79 | - dtb_files=config.dtb_files) |
80 | + dtb_files=config.dtb_files, |
81 | + kernel_type=config.kernel_type) |
82 | return metadata |
83 | |
84 | def __str__(self): |
85 | @@ -311,6 +315,8 @@ |
86 | metadata += dump({LOADER_START_FIELD: self.loader_start}) |
87 | if self.vmlinuz is not None: |
88 | metadata += dump({KERNEL_FILE_FIELD: self.vmlinuz}) |
89 | + if self.kernel_type is not None: |
90 | + metadata += dump({KERNEL_TYPE_FIELD: self.kernel_type}) |
91 | if self.initrd is not None: |
92 | metadata += dump({INITRD_FILE_FIELD: self.initrd}) |
93 | if self.dtb_file is not None: |
94 | |
95 | === modified file 'linaro_image_tools/hwpack/hwpack_fields.py' |
96 | --- linaro_image_tools/hwpack/hwpack_fields.py 2013-02-17 13:53:41 +0000 |
97 | +++ linaro_image_tools/hwpack/hwpack_fields.py 2013-12-10 14:12:52 +0000 |
98 | @@ -42,6 +42,7 @@ |
99 | INITRD_FILE_FIELD = 'initrd_file' |
100 | KERNEL_ADDR_FIELD = 'kernel_addr' |
101 | KERNEL_FILE_FIELD = 'kernel_file' |
102 | +KERNEL_TYPE_FIELD = 'kernel_type' |
103 | LOAD_ADDR_FIELD = 'load_addr' |
104 | LOADER_MIN_SIZE_FIELD = 'loader_min_size' |
105 | LOADER_START_FIELD = 'loader_start' |
106 | @@ -131,6 +132,7 @@ |
107 | PARTITION_LAYOUT_FIELD: None, |
108 | KERNEL_FILE_FIELD: None, |
109 | KERNEL_ADDR_FIELD: None, |
110 | + KERNEL_TYPE_FIELD: None, |
111 | INITRD_FILE_FIELD: None, |
112 | INITRD_ADDR_FIELD: None, |
113 | LOAD_ADDR_FIELD: None, |
114 | |
115 | === modified file 'linaro_image_tools/media_create/boards.py' |
116 | --- linaro_image_tools/media_create/boards.py 2013-09-23 09:55:03 +0000 |
117 | +++ linaro_image_tools/media_create/boards.py 2013-12-10 14:12:52 +0000 |
118 | @@ -218,6 +218,7 @@ |
119 | # XXX: attributes that are not listed in hwpackV3, should be removed? |
120 | self.vmlinuz = None |
121 | self.initrd = None |
122 | + self.kernel_type = None |
123 | |
124 | # XXX: can be removed when killing v1 hwpack. |
125 | def _get_live_serial_options(self): |
126 | @@ -719,7 +720,7 @@ |
127 | self._dd_file(bootloader_file, boot_device_or_file, |
128 | self.bootloader_dd) |
129 | |
130 | - make_uImage(self.load_addr, k_img_data, boot_dir) |
131 | + make_kernel(self.load_addr, k_img_data, boot_dir, self.kernel_type) |
132 | |
133 | if i_img_data is not None: |
134 | make_uInitrd(i_img_data, boot_dir) |
135 | @@ -959,7 +960,7 @@ |
136 | # XXX: delete this method when hwpacks V1 can die |
137 | assert self.hwpack_format == HardwarepackHandler.FORMAT_1 |
138 | install_omap_boot_loader(chroot_dir, boot_dir, self) |
139 | - make_uImage(self.load_addr, k_img_data, boot_dir) |
140 | + make_kernel(self.load_addr, k_img_data, boot_dir, self.kernel_type) |
141 | make_uInitrd(i_img_data, boot_dir) |
142 | make_dtb(d_img_data, boot_dir) |
143 | boot_script_path = os.path.join(boot_dir, self.boot_script) |
144 | @@ -1047,7 +1048,7 @@ |
145 | d_img_data): |
146 | # XXX: delete this method when hwpacks V1 can die |
147 | assert self.hwpack_format == HardwarepackHandler.FORMAT_1 |
148 | - make_uImage(self.load_addr, k_img_data, boot_dir) |
149 | + make_kernel(self.load_addr, k_img_data, boot_dir, self.kernel_type) |
150 | make_uInitrd(i_img_data, boot_dir) |
151 | make_dtb(d_img_data, boot_dir) |
152 | boot_script_path = os.path.join(boot_dir, self.boot_script) |
153 | @@ -1078,7 +1079,7 @@ |
154 | d_img_data): |
155 | # XXX: delete this method when hwpacks V1 can die |
156 | assert self.hwpack_format == HardwarepackHandler.FORMAT_1 |
157 | - make_uImage(self.load_addr, k_img_data, boot_dir) |
158 | + make_kernel(self.load_addr, k_img_data, boot_dir, self.kernel_type) |
159 | make_uInitrd(i_img_data, boot_dir) |
160 | boot_script_path = os.path.join(boot_dir, self.boot_script) |
161 | make_boot_script(boot_env, boot_script_path) |
162 | @@ -1098,7 +1099,7 @@ |
163 | d_img_data): |
164 | # XXX: delete this method when hwpacks V1 can die |
165 | assert self.hwpack_format == HardwarepackHandler.FORMAT_1 |
166 | - make_uImage(self.load_addr, k_img_data, boot_dir) |
167 | + make_kernel(self.load_addr, k_img_data, boot_dir, self.kernel_type) |
168 | boot_script_path = os.path.join(boot_dir, self.boot_script) |
169 | make_boot_script(boot_env, boot_script_path) |
170 | |
171 | @@ -1156,7 +1157,7 @@ |
172 | d_img_data): |
173 | # XXX: delete this method when hwpacks V1 can die |
174 | assert self.hwpack_format == HardwarepackHandler.FORMAT_1 |
175 | - make_uImage(self.load_addr, k_img_data, boot_dir) |
176 | + make_kernel(self.load_addr, k_img_data, boot_dir, self.kernel_type) |
177 | boot_script_path = os.path.join(boot_dir, self.boot_script) |
178 | make_boot_script(boot_env, boot_script_path) |
179 | self.populate_raw_partition(boot_device_or_file, chroot_dir) |
180 | @@ -1325,7 +1326,7 @@ |
181 | 'u-boot.imx')) |
182 | install_mx5_boot_loader(bootloader_file, boot_device_or_file, |
183 | self.LOADER_MIN_SIZE_S) |
184 | - make_uImage(self.load_addr, k_img_data, boot_dir) |
185 | + make_kernel(self.load_addr, k_img_data, boot_dir, self.kernel_type) |
186 | make_uInitrd(i_img_data, boot_dir) |
187 | make_dtb(d_img_data, boot_dir) |
188 | boot_script_path = os.path.join(boot_dir, self.boot_script) |
189 | @@ -1401,7 +1402,7 @@ |
190 | def _make_boot_files(self, boot_env, chroot_dir, boot_dir, |
191 | boot_device_or_file, k_img_data, i_img_data, |
192 | d_img_data): |
193 | - make_uImage(self.load_addr, k_img_data, boot_dir) |
194 | + make_kernel(self.load_addr, k_img_data, boot_dir, self.kernel_type) |
195 | make_uInitrd(i_img_data, boot_dir) |
196 | |
197 | |
198 | @@ -1496,7 +1497,7 @@ |
199 | env_file = make_flashable_env(boot_env, env_size) |
200 | _dd(env_file, boot_device_or_file, seek=self.samsung_env_start) |
201 | |
202 | - make_uImage(self.load_addr, k_img_data, boot_dir) |
203 | + make_kernel(self.load_addr, k_img_data, boot_dir, self.kernel_type) |
204 | make_uInitrd(i_img_data, boot_dir) |
205 | |
206 | # unused at the moment once FAT support enabled for the |
207 | @@ -1694,7 +1695,7 @@ |
208 | self._dd_file(bootloader_file, boot_device_or_file, |
209 | self.bootloader_dd) |
210 | |
211 | - make_uImage(self.load_addr, k_img_data, boot_dir) |
212 | + make_kernel(self.load_addr, k_img_data, boot_dir, self.kernel_type) |
213 | |
214 | if i_img_data is not None: |
215 | make_uInitrd(i_img_data, boot_dir) |
216 | @@ -1909,9 +1910,19 @@ |
217 | raise ValueError("Too many files matching '%s' found." % regex) |
218 | |
219 | |
220 | -def make_uImage(load_addr, img_data, boot_disk): |
221 | - img = '%s/uImage' % boot_disk |
222 | - return _run_mkimage('kernel', load_addr, load_addr, 'Linux', img_data, img) |
223 | +def make_kernel(load_addr, img_data, boot_disk, kernel_type): |
224 | + if kernel_type is None: |
225 | + kernel_type = 'uImage' |
226 | + img = '%s/%s' % (boot_disk, kernel_type) |
227 | + if kernel_type == 'zImage': |
228 | + # Copy kernel to boot partition as zImage |
229 | + proc = cmd_runner.run(['cp', img_data, img], as_root=True) |
230 | + proc.wait() |
231 | + return proc.returncode |
232 | + else: |
233 | + # Make uImage kernel and place it on boot partition as uImage |
234 | + return _run_mkimage('kernel', load_addr, load_addr, 'Linux', img_data, |
235 | + img) |
236 | |
237 | |
238 | def make_uInitrd(img_data, boot_disk): |
239 | |
240 | === modified file 'linaro_image_tools/media_create/tests/test_media_create.py' |
241 | --- linaro_image_tools/media_create/tests/test_media_create.py 2013-11-29 10:16:06 +0000 |
242 | +++ linaro_image_tools/media_create/tests/test_media_create.py 2013-12-10 14:12:52 +0000 |
243 | @@ -57,7 +57,7 @@ |
244 | install_mx5_boot_loader, |
245 | install_omap_boot_loader, |
246 | make_boot_script, |
247 | - make_uImage, |
248 | + make_kernel, |
249 | make_uInitrd, |
250 | make_dtb, |
251 | _get_file_matching, |
252 | @@ -1272,14 +1272,14 @@ |
253 | board_conf = boards.VexpressConfig() |
254 | board_conf.hwpack_format = HardwarepackHandler.FORMAT_1 |
255 | self.make_boot_files(board_conf) |
256 | - expected = ['make_uImage', 'make_uInitrd'] |
257 | + expected = ['make_kernel', 'make_uInitrd'] |
258 | self.assertEqual(expected, self.funcs_calls) |
259 | |
260 | def test_vexpress_a9_steps(self): |
261 | board_conf = boards.VexpressA9Config() |
262 | board_conf.hwpack_format = HardwarepackHandler.FORMAT_1 |
263 | self.make_boot_files(board_conf) |
264 | - expected = ['make_uImage', 'make_uInitrd'] |
265 | + expected = ['make_kernel', 'make_uInitrd'] |
266 | self.assertEqual(expected, self.funcs_calls) |
267 | |
268 | def test_mx5_steps(self): |
269 | @@ -1292,7 +1292,7 @@ |
270 | lambda: HardwarepackHandler.FORMAT_1) |
271 | self.make_boot_files(board_conf) |
272 | expected = [ |
273 | - 'install_mx5_boot_loader', 'make_uImage', 'make_uInitrd', |
274 | + 'install_mx5_boot_loader', 'make_kernel', 'make_uInitrd', |
275 | 'make_dtb', 'make_boot_script'] |
276 | self.assertEqual(expected, self.funcs_calls) |
277 | |
278 | @@ -1311,7 +1311,7 @@ |
279 | self.make_boot_files(board_conf) |
280 | expected = [ |
281 | 'install_samsung_boot_loader', 'make_flashable_env', '_dd', |
282 | - 'make_uImage', 'make_uInitrd', 'make_boot_script'] |
283 | + 'make_kernel', 'make_uInitrd', 'make_boot_script'] |
284 | self.assertEqual(expected, self.funcs_calls) |
285 | |
286 | def test_origen_steps(self): |
287 | @@ -1329,7 +1329,7 @@ |
288 | self.make_boot_files(board_conf) |
289 | expected = [ |
290 | 'install_samsung_boot_loader', 'make_flashable_env', '_dd', |
291 | - 'make_uImage', 'make_uInitrd', 'make_boot_script'] |
292 | + 'make_kernel', 'make_uInitrd', 'make_boot_script'] |
293 | self.assertEqual(expected, self.funcs_calls) |
294 | |
295 | def test_origen_quad_steps(self): |
296 | @@ -1348,7 +1348,7 @@ |
297 | self.make_boot_files(board_conf) |
298 | expected = [ |
299 | 'install_samsung_boot_loader', 'make_flashable_env', '_dd', |
300 | - 'make_uImage', 'make_uInitrd', 'make_boot_script'] |
301 | + 'make_kernel', 'make_uInitrd', 'make_boot_script'] |
302 | self.assertEqual(expected, self.funcs_calls) |
303 | |
304 | def test_arndale_steps(self): |
305 | @@ -1367,21 +1367,21 @@ |
306 | self.make_boot_files(board_conf) |
307 | expected = [ |
308 | 'install_samsung_boot_loader', 'make_flashable_env', '_dd', |
309 | - 'make_uImage', 'make_uInitrd', 'make_boot_script'] |
310 | + 'make_kernel', 'make_uInitrd', 'make_boot_script'] |
311 | self.assertEqual(expected, self.funcs_calls) |
312 | |
313 | def test_ux500_steps(self): |
314 | board_conf = boards.Ux500Config() |
315 | board_conf.hwpack_format = HardwarepackHandler.FORMAT_1 |
316 | self.make_boot_files(board_conf) |
317 | - expected = ['make_uImage', 'make_uInitrd', 'make_boot_script'] |
318 | + expected = ['make_kernel', 'make_uInitrd', 'make_boot_script'] |
319 | self.assertEqual(expected, self.funcs_calls) |
320 | |
321 | def test_snowball_sd_steps(self): |
322 | board_conf = boards.SnowballSdConfig() |
323 | board_conf.hwpack_format = HardwarepackHandler.FORMAT_1 |
324 | self.make_boot_files(board_conf) |
325 | - expected = ['make_uImage', 'make_boot_script'] |
326 | + expected = ['make_kernel', 'make_boot_script'] |
327 | self.assertEqual(expected, self.funcs_calls) |
328 | |
329 | def test_panda_steps(self): |
330 | @@ -1390,7 +1390,7 @@ |
331 | self.mock_set_appropriate_serial_tty(board_conf) |
332 | self.make_boot_files(board_conf) |
333 | expected = [ |
334 | - 'install_omap_boot_loader', 'make_uImage', 'make_uInitrd', |
335 | + 'install_omap_boot_loader', 'make_kernel', 'make_uInitrd', |
336 | 'make_dtb', 'make_boot_script', 'make_boot_ini'] |
337 | self.assertEqual(expected, self.funcs_calls) |
338 | |
339 | @@ -1400,7 +1400,7 @@ |
340 | self.mock_set_appropriate_serial_tty(board_conf) |
341 | self.make_boot_files(board_conf) |
342 | expected = [ |
343 | - 'install_omap_boot_loader', 'make_uImage', 'make_uInitrd', |
344 | + 'install_omap_boot_loader', 'make_kernel', 'make_uInitrd', |
345 | 'make_dtb', 'make_boot_script', 'make_boot_ini'] |
346 | self.assertEqual(expected, self.funcs_calls) |
347 | |
348 | @@ -1410,7 +1410,7 @@ |
349 | self.mock_set_appropriate_serial_tty(board_conf) |
350 | self.make_boot_files(board_conf) |
351 | expected = [ |
352 | - 'make_uImage', 'make_uInitrd', 'make_dtb', 'make_boot_script', |
353 | + 'make_kernel', 'make_uInitrd', 'make_dtb', 'make_boot_script', |
354 | 'make_boot_ini'] |
355 | self.assertEqual(expected, self.funcs_calls) |
356 | |
357 | @@ -1420,7 +1420,7 @@ |
358 | self.mock_set_appropriate_serial_tty(board_conf) |
359 | self.make_boot_files(board_conf) |
360 | expected = [ |
361 | - 'install_omap_boot_loader', 'make_uImage', 'make_uInitrd', |
362 | + 'install_omap_boot_loader', 'make_kernel', 'make_uInitrd', |
363 | 'make_dtb', 'make_boot_script', 'make_boot_ini'] |
364 | self.assertEqual(expected, self.funcs_calls) |
365 | |
366 | @@ -1436,7 +1436,7 @@ |
367 | self.mock_set_appropriate_serial_tty(board_conf) |
368 | self.make_boot_files(board_conf) |
369 | expected = [ |
370 | - 'install_omap_boot_loader', 'make_uImage', 'make_uInitrd', |
371 | + 'install_omap_boot_loader', 'make_kernel', 'make_uInitrd', |
372 | 'make_dtb', 'make_boot_script', 'make_boot_ini'] |
373 | self.assertEqual(expected, self.funcs_calls) |
374 | |
375 | @@ -2462,14 +2462,36 @@ |
376 | self.useFixture(fixture) |
377 | return fixture |
378 | |
379 | - def test_make_uImage(self): |
380 | - self._mock_get_file_matching() |
381 | - fixture = self._mock_Popen() |
382 | - make_uImage('load_addr', 'parts_dir/vmlinuz-*-sub_arch', 'boot_disk') |
383 | - expected = [ |
384 | - '%s mkimage -A arm -O linux -T kernel -C none -a load_addr ' |
385 | - '-e load_addr -n Linux -d parts_dir/vmlinuz-*-sub_arch ' |
386 | - 'boot_disk/uImage' % sudo_args] |
387 | + def test_make_kernel_uImage(self): |
388 | + self._mock_get_file_matching() |
389 | + fixture = self._mock_Popen() |
390 | + make_kernel('load_addr', 'parts_dir/vmlinuz-*-sub_arch', 'boot_disk', |
391 | + 'uImage') |
392 | + expected = [ |
393 | + '%s mkimage -A arm -O linux -T kernel -C none -a load_addr ' |
394 | + '-e load_addr -n Linux -d parts_dir/vmlinuz-*-sub_arch ' |
395 | + 'boot_disk/uImage' % sudo_args] |
396 | + self.assertEqual(expected, fixture.mock.commands_executed) |
397 | + |
398 | + def test_make_kernel_uImage_None(self): |
399 | + self._mock_get_file_matching() |
400 | + fixture = self._mock_Popen() |
401 | + make_kernel('load_addr', 'parts_dir/vmlinuz-*-sub_arch', 'boot_disk', |
402 | + None) |
403 | + expected = [ |
404 | + '%s mkimage -A arm -O linux -T kernel -C none -a load_addr ' |
405 | + '-e load_addr -n Linux -d parts_dir/vmlinuz-*-sub_arch ' |
406 | + 'boot_disk/uImage' % sudo_args] |
407 | + self.assertEqual(expected, fixture.mock.commands_executed) |
408 | + |
409 | + def test_make_kernel_zImage(self): |
410 | + self._mock_get_file_matching() |
411 | + fixture = self._mock_Popen() |
412 | + make_kernel('load_addr', 'parts_dir/vmlinuz-*-sub_arch', 'boot_disk', |
413 | + 'zImage') |
414 | + expected = [ |
415 | + '%s cp parts_dir/vmlinuz-*-sub_arch ' |
416 | + 'boot_disk/zImage' % sudo_args] |
417 | self.assertEqual(expected, fixture.mock.commands_executed) |
418 | |
419 | def test_make_uInitrd(self): |