Merge lp:~gesha/linaro-image-tools/1208678 into lp:linaro-image-tools/11.11

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
Reviewer Review Type Date Requested Status
linaro-image-tools maintainers Pending
Review via email: mp+198402@code.launchpad.net

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):

Subscribers

People subscribed via source and target branches