summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJose Perez Carranza <jose.perez.carranza@intel.com>2016-07-13 14:01:57 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-07-21 07:47:52 +0100
commit8da54b401d20a69c68153d36d2ad3c5100565051 (patch)
tree1a068170f7f29dd6e4b9d01d49ec835d24b7c812
parentcd78d8745d9af80bce9ce7f086e9124562e964ad (diff)
downloadpoky-8da54b401d20a69c68153d36d2ad3c5100565051.tar.gz
oeqa/controllers: Add test target for Systemd-boot
A new test target is neede to test Systemd-boot similar to gummiboot. Created a copy of GummibootTarget class and named as SystemdbootTarget, at this point the gummibootTarget will remain until documentation is updated with new systed information. (From OE-Core rev: d1fd3a7dbc363bdc02d810f796b3b810cb13f029) Signed-off-by: Jose Perez Carranza <jose.perez.carranza@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/lib/oeqa/controllers/masterimage.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/meta/lib/oeqa/controllers/masterimage.py b/meta/lib/oeqa/controllers/masterimage.py
index 4cb75539ee..9ce3bf803d 100644
--- a/meta/lib/oeqa/controllers/masterimage.py
+++ b/meta/lib/oeqa/controllers/masterimage.py
@@ -197,3 +197,43 @@ class GummibootTarget(MasterImageHardwareTarget):
197 self.power_cycle(self.master) 197 self.power_cycle(self.master)
198 # there are better ways than a timeout but this should work for now 198 # there are better ways than a timeout but this should work for now
199 time.sleep(120) 199 time.sleep(120)
200
201
202class SystemdbootTarget(MasterImageHardwareTarget):
203
204 def __init__(self, d):
205 super(SystemdbootTarget, self).__init__(d)
206 # this the value we need to set in the LoaderEntryOneShot EFI variable
207 # so the system boots the 'test' bootloader label and not the default
208 # The first four bytes are EFI bits, and the rest is an utf-16le string
209 # (EFI vars values need to be utf-16)
210 # $ echo -en "test\0" | iconv -f ascii -t utf-16le | hexdump -C
211 # 00000000 74 00 65 00 73 00 74 00 00 00 |t.e.s.t...|
212 self.efivarvalue = r'\x07\x00\x00\x00\x74\x00\x65\x00\x73\x00\x74\x00\x00\x00'
213 self.deploy_cmds = [
214 'mount -L boot /boot',
215 'mkdir -p /mnt/testrootfs',
216 'mount -L testrootfs /mnt/testrootfs',
217 'modprobe efivarfs',
218 'mount -t efivarfs efivarfs /sys/firmware/efi/efivars',
219 'cp ~/test-kernel /boot',
220 'rm -rf /mnt/testrootfs/*',
221 'tar xvf ~/test-rootfs.%s -C /mnt/testrootfs' % self.image_fstype,
222 'printf "%s" > /sys/firmware/efi/efivars/LoaderEntryOneShot-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f' % self.efivarvalue
223 ]
224
225 def _deploy(self):
226 # make sure these aren't mounted
227 self.master.run("umount /boot; umount /mnt/testrootfs; umount /sys/firmware/efi/efivars;")
228 # from now on, every deploy cmd should return 0
229 # else an exception will be thrown by sshcontrol
230 self.master.ignore_status = False
231 self.master.copy_to(self.rootfs, "~/test-rootfs." + self.image_fstype)
232 self.master.copy_to(self.kernel, "~/test-kernel")
233 for cmd in self.deploy_cmds:
234 self.master.run(cmd)
235
236 def _start(self, params=None):
237 self.power_cycle(self.master)
238 # there are better ways than a timeout but this should work for now
239 time.sleep(120)