Add a test which boots Linux and run basic commands using the serial
port console.
The kernel image is built by the Debian project:
https://wiki.debian.org/RaspberryPi
The DeviceTree blob comes from the official Raspberry Pi project:
https://www.raspberrypi.org/
The cpio image used comes from the linux-build-test project:
https://github.com/groeck/linux-build-test
This test can be run using:
$ avocado run --show=console,app run -t machine:raspi3 tests/acceptance
console: [ 0.000000] Linux version 4.14.0-3-arm64 (debian-kernel@lists.debian.org) (gcc version 7.2.0 (Debian 7.2.0-18)) #1 SMP Debian 4.14.12-2 (2018-01-06)
console: [ 0.000000] Boot CPU: AArch64 Processor [410fd034]
console: [ 0.000000] Machine model: Raspberry Pi 3 Model B
console: [ 0.000000] earlycon: pl11 at MMIO 0x000000003f201000 (options '')
console: [ 0.000000] bootconsole [pl11] enabled
[...]
console: Starting network: OK
console: Found console ttyAMA0
console: Boot successful.
console: / # cat /proc/cpuinfo
console: processor : 0
console: BogoMIPS : 125.00
console: r : 0x41
console: CPU architecture: 8
console: CPU variant
console: : 0x0
console: CPU part : 0xd03
console: CPU revision : 4
console: / # uname -a
console: Linux buildroot 4.14.0-3-arm64 #1 SMP Debian 4.14.12-2 (2018-01-06) aarch64 GNU/Linux
console: reboot
console: / # reboot
console: / # Found console ttyAMA0
console: Stopping network: OK
console: Saving random seed... done.
console: Stopping logging: OK
console: umount: devtmpfs busy - remounted read-only
console: umount: can't unmount /: Invalid argument
console: The system is going down NOW!
console: Sent SIGTERM to all processes
console: Sent SIGKILL to all processes
console: Requesting system reboot
console: kvm: exiting hardware virtualization
console: reboot: Restarting system
PASS (11.08 s)
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
some chars are scrambled on the console...
---
tests/acceptance/boot_linux_console.py | 47 ++++++++++++++++++++++++++
1 file changed, 47 insertions(+)
diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py
index 33e8f6c635..2a1a23763e 100644
--- a/tests/acceptance/boot_linux_console.py
+++ b/tests/acceptance/boot_linux_console.py
@@ -363,6 +363,53 @@ class BootLinuxConsole(Test):
"""
self.do_test_arm_raspi2(1)
+ def test_arm_raspi3_initrd_uart0(self):
+ """
+ :avocado: tags=arch:aarch64
+ :avocado: tags=machine:raspi3
+ """
+ deb_url = ('https://snapshot.debian.org/archive/debian/'
+ '20180106T174014Z/pool/main/l/linux/'
+ 'linux-image-4.14.0-3-arm64_4.14.12-2_arm64.deb')
+ deb_hash = 'e71c995de57921921895c1162baea5df527d1c6b'
+ deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)
+ kernel_path = self.extract_from_deb(deb_path,
+ '/boot/vmlinuz-4.14.0-3-arm64')
+
+ dtb_url = ('https://github.com/raspberrypi/firmware/raw/'
+ '1.20180313/boot/bcm2710-rpi-3-b.dtb')
+ dtb_hash = 'eb14d67133401ef2f93523be7341456d38bfc077'
+ dtb_path = self.fetch_asset(dtb_url, asset_hash=dtb_hash)
+
+ initrd_url = ('https://github.com/groeck/linux-build-test/raw/'
+ '9b6b392ea7bc15f0d6632328d429d31c9c6273da/rootfs/'
+ 'arm64/rootfs.cpio.gz')
+ initrd_hash = '6fd05324f17bb950196b5ad9d3a0fa996339f4cd'
+ initrd_path_gz = self.fetch_asset(initrd_url, asset_hash=initrd_hash)
+ initrd_path = self.workdir + "rootfs.cpio"
+ gunzip(initrd_path_gz, initrd_path)
+
+ self.vm.set_machine('raspi3')
+ self.vm.set_console()
+ kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
+ 'earlycon=pl011,0x3f201000 console=ttyAMA0 ' +
+ 'panic=-1 noreboot')
+ self.vm.add_args('-kernel', kernel_path,
+ '-dtb', dtb_path,
+ '-initrd', initrd_path,
+ '-append', kernel_command_line,
+ '-no-reboot')
+ self.vm.launch()
+
+ self.wait_for_console_pattern('Boot successful.')
+
+ self.exec_command_and_wait_for_pattern('cat /proc/cpuinfo',
+ 'BogoMIPS')
+ self.exec_command_and_wait_for_pattern('uname -a',
+ 'Debian')
+ self.exec_command_and_wait_for_pattern('reboot',
+ 'reboot: Restarting system')
+
def test_s390x_s390_ccw_virtio(self):
"""
:avocado: tags=arch:s390x
--
2.20.1
On Thu, Sep 26, 2019 at 07:34:26PM +0200, Philippe Mathieu-Daudé wrote: > Add a test which boots Linux and run basic commands using the serial > port console. > > The kernel image is built by the Debian project: > https://wiki.debian.org/RaspberryPi > > The DeviceTree blob comes from the official Raspberry Pi project: > https://www.raspberrypi.org/ > > The cpio image used comes from the linux-build-test project: > https://github.com/groeck/linux-build-test > > This test can be run using: > > $ avocado run --show=console,app run -t machine:raspi3 tests/acceptance > console: [ 0.000000] Linux version 4.14.0-3-arm64 (debian-kernel@lists.debian.org) (gcc version 7.2.0 (Debian 7.2.0-18)) #1 SMP Debian 4.14.12-2 (2018-01-06) > console: [ 0.000000] Boot CPU: AArch64 Processor [410fd034] > console: [ 0.000000] Machine model: Raspberry Pi 3 Model B > console: [ 0.000000] earlycon: pl11 at MMIO 0x000000003f201000 (options '') > console: [ 0.000000] bootconsole [pl11] enabled > [...] > console: Starting network: OK > console: Found console ttyAMA0 > console: Boot successful. > console: / # cat /proc/cpuinfo > console: processor : 0 > console: BogoMIPS : 125.00 > console: r : 0x41 > console: CPU architecture: 8 > console: CPU variant > console: : 0x0 > console: CPU part : 0xd03 > console: CPU revision : 4 > console: / # uname -a > console: Linux buildroot 4.14.0-3-arm64 #1 SMP Debian 4.14.12-2 (2018-01-06) aarch64 GNU/Linux > console: reboot > console: / # reboot > console: / # Found console ttyAMA0 > console: Stopping network: OK > console: Saving random seed... done. > console: Stopping logging: OK > console: umount: devtmpfs busy - remounted read-only > console: umount: can't unmount /: Invalid argument > console: The system is going down NOW! > console: Sent SIGTERM to all processes > console: Sent SIGKILL to all processes > console: Requesting system reboot > console: kvm: exiting hardware virtualization > console: reboot: Restarting system > PASS (11.08 s) > > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > some chars are scrambled on the console... > --- > tests/acceptance/boot_linux_console.py | 47 ++++++++++++++++++++++++++ > 1 file changed, 47 insertions(+) > > diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py > index 33e8f6c635..2a1a23763e 100644 > --- a/tests/acceptance/boot_linux_console.py > +++ b/tests/acceptance/boot_linux_console.py > @@ -363,6 +363,53 @@ class BootLinuxConsole(Test): > """ > self.do_test_arm_raspi2(1) > > + def test_arm_raspi3_initrd_uart0(self): > + """ > + :avocado: tags=arch:aarch64 > + :avocado: tags=machine:raspi3 > + """ > + deb_url = ('https://snapshot.debian.org/archive/debian/' > + '20180106T174014Z/pool/main/l/linux/' > + 'linux-image-4.14.0-3-arm64_4.14.12-2_arm64.deb') > + deb_hash = 'e71c995de57921921895c1162baea5df527d1c6b' > + deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) > + kernel_path = self.extract_from_deb(deb_path, > + '/boot/vmlinuz-4.14.0-3-arm64') > + > + dtb_url = ('https://github.com/raspberrypi/firmware/raw/' > + '1.20180313/boot/bcm2710-rpi-3-b.dtb') > + dtb_hash = 'eb14d67133401ef2f93523be7341456d38bfc077' > + dtb_path = self.fetch_asset(dtb_url, asset_hash=dtb_hash) > + > + initrd_url = ('https://github.com/groeck/linux-build-test/raw/' > + '9b6b392ea7bc15f0d6632328d429d31c9c6273da/rootfs/' > + 'arm64/rootfs.cpio.gz') > + initrd_hash = '6fd05324f17bb950196b5ad9d3a0fa996339f4cd' > + initrd_path_gz = self.fetch_asset(initrd_url, asset_hash=initrd_hash) > + initrd_path = self.workdir + "rootfs.cpio" > + gunzip(initrd_path_gz, initrd_path) > + > + self.vm.set_machine('raspi3') > + self.vm.set_console() > + kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + > + 'earlycon=pl011,0x3f201000 console=ttyAMA0 ' + > + 'panic=-1 noreboot') > + self.vm.add_args('-kernel', kernel_path, > + '-dtb', dtb_path, > + '-initrd', initrd_path, > + '-append', kernel_command_line, > + '-no-reboot') > + self.vm.launch() > + > + self.wait_for_console_pattern('Boot successful.') > + > + self.exec_command_and_wait_for_pattern('cat /proc/cpuinfo', > + 'BogoMIPS') > + self.exec_command_and_wait_for_pattern('uname -a', > + 'Debian') > + self.exec_command_and_wait_for_pattern('reboot', > + 'reboot: Restarting system') > + > def test_s390x_s390_ccw_virtio(self): > """ > :avocado: tags=arch:s390x > -- > 2.20.1 > Reviewed-by: Cleber Rosa <crosa@redhat.com> And even though you mentioned some trouble with the console, I've run this 100 times and had no issues that disturbed the test, so: Tested-by: Cleber Rosa <crosa@redhat.com>
On 10/9/19 6:12 PM, Cleber Rosa wrote: > On Thu, Sep 26, 2019 at 07:34:26PM +0200, Philippe Mathieu-Daudé wrote: >> Add a test which boots Linux and run basic commands using the serial >> port console. >> >> The kernel image is built by the Debian project: >> https://wiki.debian.org/RaspberryPi >> >> The DeviceTree blob comes from the official Raspberry Pi project: >> https://www.raspberrypi.org/ >> >> The cpio image used comes from the linux-build-test project: >> https://github.com/groeck/linux-build-test >> >> This test can be run using: >> >> $ avocado run --show=console,app run -t machine:raspi3 tests/acceptance >> console: [ 0.000000] Linux version 4.14.0-3-arm64 (debian-kernel@lists.debian.org) (gcc version 7.2.0 (Debian 7.2.0-18)) #1 SMP Debian 4.14.12-2 (2018-01-06) >> console: [ 0.000000] Boot CPU: AArch64 Processor [410fd034] >> console: [ 0.000000] Machine model: Raspberry Pi 3 Model B >> console: [ 0.000000] earlycon: pl11 at MMIO 0x000000003f201000 (options '') >> console: [ 0.000000] bootconsole [pl11] enabled >> [...] >> console: Starting network: OK >> console: Found console ttyAMA0 >> console: Boot successful. >> console: / # cat /proc/cpuinfo >> console: processor : 0 >> console: BogoMIPS : 125.00 >> console: r : 0x41 >> console: CPU architecture: 8 >> console: CPU variant >> console: : 0x0 >> console: CPU part : 0xd03 >> console: CPU revision : 4 >> console: / # uname -a >> console: Linux buildroot 4.14.0-3-arm64 #1 SMP Debian 4.14.12-2 (2018-01-06) aarch64 GNU/Linux >> console: reboot >> console: / # reboot >> console: / # Found console ttyAMA0 >> console: Stopping network: OK >> console: Saving random seed... done. >> console: Stopping logging: OK >> console: umount: devtmpfs busy - remounted read-only >> console: umount: can't unmount /: Invalid argument >> console: The system is going down NOW! >> console: Sent SIGTERM to all processes >> console: Sent SIGKILL to all processes >> console: Requesting system reboot >> console: kvm: exiting hardware virtualization >> console: reboot: Restarting system >> PASS (11.08 s) >> >> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> >> --- >> some chars are scrambled on the console... >> --- >> tests/acceptance/boot_linux_console.py | 47 ++++++++++++++++++++++++++ >> 1 file changed, 47 insertions(+) >> >> diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py >> index 33e8f6c635..2a1a23763e 100644 >> --- a/tests/acceptance/boot_linux_console.py >> +++ b/tests/acceptance/boot_linux_console.py >> @@ -363,6 +363,53 @@ class BootLinuxConsole(Test): >> """ >> self.do_test_arm_raspi2(1) >> >> + def test_arm_raspi3_initrd_uart0(self): >> + """ >> + :avocado: tags=arch:aarch64 >> + :avocado: tags=machine:raspi3 >> + """ >> + deb_url = ('https://snapshot.debian.org/archive/debian/' >> + '20180106T174014Z/pool/main/l/linux/' >> + 'linux-image-4.14.0-3-arm64_4.14.12-2_arm64.deb') >> + deb_hash = 'e71c995de57921921895c1162baea5df527d1c6b' >> + deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) >> + kernel_path = self.extract_from_deb(deb_path, >> + '/boot/vmlinuz-4.14.0-3-arm64') >> + >> + dtb_url = ('https://github.com/raspberrypi/firmware/raw/' >> + '1.20180313/boot/bcm2710-rpi-3-b.dtb') >> + dtb_hash = 'eb14d67133401ef2f93523be7341456d38bfc077' >> + dtb_path = self.fetch_asset(dtb_url, asset_hash=dtb_hash) >> + >> + initrd_url = ('https://github.com/groeck/linux-build-test/raw/' >> + '9b6b392ea7bc15f0d6632328d429d31c9c6273da/rootfs/' >> + 'arm64/rootfs.cpio.gz') >> + initrd_hash = '6fd05324f17bb950196b5ad9d3a0fa996339f4cd' >> + initrd_path_gz = self.fetch_asset(initrd_url, asset_hash=initrd_hash) >> + initrd_path = self.workdir + "rootfs.cpio" >> + gunzip(initrd_path_gz, initrd_path) >> + >> + self.vm.set_machine('raspi3') >> + self.vm.set_console() >> + kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + >> + 'earlycon=pl011,0x3f201000 console=ttyAMA0 ' + >> + 'panic=-1 noreboot') >> + self.vm.add_args('-kernel', kernel_path, >> + '-dtb', dtb_path, >> + '-initrd', initrd_path, >> + '-append', kernel_command_line, >> + '-no-reboot') >> + self.vm.launch() >> + >> + self.wait_for_console_pattern('Boot successful.') >> + >> + self.exec_command_and_wait_for_pattern('cat /proc/cpuinfo', >> + 'BogoMIPS') >> + self.exec_command_and_wait_for_pattern('uname -a', >> + 'Debian') >> + self.exec_command_and_wait_for_pattern('reboot', >> + 'reboot: Restarting system') >> + >> def test_s390x_s390_ccw_virtio(self): >> """ >> :avocado: tags=arch:s390x >> -- >> 2.20.1 >> > > Reviewed-by: Cleber Rosa <crosa@redhat.com> > > And even though you mentioned some trouble with the console, I've run > this 100 times and had no issues that disturbed the test, so: Ahaha thanks for insisting :) I ran the Exynos4210 test 20 times and it did not fail, I'll try 80 more times. > > Tested-by: Cleber Rosa <crosa@redhat.com> Thanks!
© 2016 - 2025 Red Hat, Inc.