* [U-Boot] [RFC PATCH] qemu-x86: Use config_distro_bootcmd
@ 2019-06-21 15:16 Joshua Watt
2019-06-22 14:51 ` Bin Meng
2019-07-02 13:24 ` [U-Boot] [PATCH v2] " Joshua Watt
0 siblings, 2 replies; 12+ messages in thread
From: Joshua Watt @ 2019-06-21 15:16 UTC (permalink / raw)
To: u-boot
Converts qemu x86 machines to boot using distro_config. The intent is to
allow u-boot in qemu to be maximally compatible with many boot methods
without having to change the config. Currently, u-boot will only boot in
a very limited set of circumstances where there is a /boot/vmlinuz on
scsi 0:3 with no ramdisk.
If distro_bootcmd fails, u-boot will fall back to the original method.
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
---
include/configs/qemu-x86.h | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/include/configs/qemu-x86.h b/include/configs/qemu-x86.h
index 64e7a60b8a..d9c96e295d 100644
--- a/include/configs/qemu-x86.h
+++ b/include/configs/qemu-x86.h
@@ -10,8 +10,38 @@
#ifndef __CONFIG_H
#define __CONFIG_H
+#include <linux/sizes.h>
+
+#define CONFIG_BOOTCOMMAND \
+ "run distro_bootcmd; " \
+ "ext2load scsi 0:3 01000000 /boot/vmlinuz; " \
+ "zboot 01000000"
+
+#define BOOT_TARGET_DEVICES(func) \
+ func(USB, usb, 0) \
+ func(SCSI, scsi, 0) \
+ func(VIRTIO, virtio, 0) \
+ func(IDE, ide, 0) \
+ func(DHCP, dhcp, na)
+
+#include <config_distro_bootcmd.h>
#include <configs/x86-common.h>
+#undef CONFIG_ENV_SIZE
+#define CONFIG_ENV_SIZE SZ_256K
+
+#define CONFIG_PREBOOT "pci enum"
+
+#undef CONFIG_EXTRA_ENV_SETTINGS
+#define CONFIG_EXTRA_ENV_SETTINGS \
+ CONFIG_STD_DEVICES_SETTINGS \
+ "scriptaddr=0x8000000\0" \
+ "kernel_addr_r=0x1000000\0" \
+ "ramdisk_addr_r=0x4000000\0" \
+ "consoledev=ttyS0\0" \
+ CONFIG_OTHBOOTARGS \
+ BOOTENV
+
#define CONFIG_SYS_MONITOR_LEN (1 << 20)
#define CONFIG_STD_DEVICES_SETTINGS "stdin=serial,i8042-kbd\0" \
--
2.21.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [U-Boot] [RFC PATCH] qemu-x86: Use config_distro_bootcmd
2019-06-21 15:16 [U-Boot] [RFC PATCH] qemu-x86: Use config_distro_bootcmd Joshua Watt
@ 2019-06-22 14:51 ` Bin Meng
2019-06-22 14:52 ` Bin Meng
2019-07-02 13:24 ` [U-Boot] [PATCH v2] " Joshua Watt
1 sibling, 1 reply; 12+ messages in thread
From: Bin Meng @ 2019-06-22 14:51 UTC (permalink / raw)
To: u-boot
Hi Joshua,
On Fri, Jun 21, 2019 at 11:17 PM Joshua Watt <jpewhacker@gmail.com> wrote:
>
> Converts qemu x86 machines to boot using distro_config. The intent is to
> allow u-boot in qemu to be maximally compatible with many boot methods
> without having to change the config. Currently, u-boot will only boot in
> a very limited set of circumstances where there is a /boot/vmlinuz on
> scsi 0:3 with no ramdisk.
>
> If distro_bootcmd fails, u-boot will fall back to the original method.
>
> Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> ---
> include/configs/qemu-x86.h | 30 ++++++++++++++++++++++++++++++
Could you please enable
> 1 file changed, 30 insertions(+)
>
> diff --git a/include/configs/qemu-x86.h b/include/configs/qemu-x86.h
> index 64e7a60b8a..d9c96e295d 100644
> --- a/include/configs/qemu-x86.h
> +++ b/include/configs/qemu-x86.h
> @@ -10,8 +10,38 @@
> #ifndef __CONFIG_H
> #define __CONFIG_H
>
> +#include <linux/sizes.h>
> +
> +#define CONFIG_BOOTCOMMAND \
> + "run distro_bootcmd; " \
> + "ext2load scsi 0:3 01000000 /boot/vmlinuz; " \
> + "zboot 01000000"
This should be in the board defconfig files. I would like to only keep
the "run distro_bootcmd" command.
> +
> +#define BOOT_TARGET_DEVICES(func) \
> + func(USB, usb, 0) \
> + func(SCSI, scsi, 0) \
> + func(VIRTIO, virtio, 0) \
> + func(IDE, ide, 0) \
> + func(DHCP, dhcp, na)
> +
> +#include <config_distro_bootcmd.h>
> #include <configs/x86-common.h>
>
> +#undef CONFIG_ENV_SIZE
> +#define CONFIG_ENV_SIZE SZ_256K
> +
> +#define CONFIG_PREBOOT "pci enum"
> +
> +#undef CONFIG_EXTRA_ENV_SETTINGS
> +#define CONFIG_EXTRA_ENV_SETTINGS \
> + CONFIG_STD_DEVICES_SETTINGS \
> + "scriptaddr=0x8000000\0" \
QEMU default memory is 128MiB, so I would put this to somewhere that
does not break the default one, like 0x7000000?
> + "kernel_addr_r=0x1000000\0" \
> + "ramdisk_addr_r=0x4000000\0" \
> + "consoledev=ttyS0\0" \
> + CONFIG_OTHBOOTARGS \
> + BOOTENV
> +
> #define CONFIG_SYS_MONITOR_LEN (1 << 20)
>
> #define CONFIG_STD_DEVICES_SETTINGS "stdin=serial,i8042-kbd\0" \
> --
CONFIG_DISTRO_DEFAULTS should also be turned on in the board defconfig files.
Could you please update the README.x86 about testing distro boot on
QEMU? Thanks!
Regards,
Bin
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [RFC PATCH] qemu-x86: Use config_distro_bootcmd
2019-06-22 14:51 ` Bin Meng
@ 2019-06-22 14:52 ` Bin Meng
0 siblings, 0 replies; 12+ messages in thread
From: Bin Meng @ 2019-06-22 14:52 UTC (permalink / raw)
To: u-boot
On Sat, Jun 22, 2019 at 10:51 PM Bin Meng <bmeng.cn@gmail.com> wrote:
>
> Hi Joshua,
>
> On Fri, Jun 21, 2019 at 11:17 PM Joshua Watt <jpewhacker@gmail.com> wrote:
> >
> > Converts qemu x86 machines to boot using distro_config. The intent is to
> > allow u-boot in qemu to be maximally compatible with many boot methods
> > without having to change the config. Currently, u-boot will only boot in
> > a very limited set of circumstances where there is a /boot/vmlinuz on
> > scsi 0:3 with no ramdisk.
> >
> > If distro_bootcmd fails, u-boot will fall back to the original method.
> >
> > Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> > ---
> > include/configs/qemu-x86.h | 30 ++++++++++++++++++++++++++++++
>
> Could you please enable
Oops, I wanted to say: enable CONFIG_DISTRO_DEFAULTS in the board
defconfig files.
>
> > 1 file changed, 30 insertions(+)
> >
Regards,
Bin
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH v2] qemu-x86: Use config_distro_bootcmd
2019-06-21 15:16 [U-Boot] [RFC PATCH] qemu-x86: Use config_distro_bootcmd Joshua Watt
2019-06-22 14:51 ` Bin Meng
@ 2019-07-02 13:24 ` Joshua Watt
2019-07-02 14:24 ` Bin Meng
2019-07-03 17:45 ` [U-Boot] [PATCH v3] " Joshua Watt
1 sibling, 2 replies; 12+ messages in thread
From: Joshua Watt @ 2019-07-02 13:24 UTC (permalink / raw)
To: u-boot
Converts qemu x86 machines to boot using distro_config. The intent is to
allow u-boot in qemu to be maximally compatible with many boot methods
without having to change the config. Previously, u-boot would only boot
in a very limited set of circumstances where there was a /boot/vmlinuz
on scsi 0:3 with no ramdisk.
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
---
configs/qemu-x86_64_defconfig | 1 +
configs/qemu-x86_defconfig | 1 +
doc/README.x86 | 5 +++++
include/configs/qemu-x86.h | 25 +++++++++++++++++++++++++
4 files changed, 32 insertions(+)
diff --git a/configs/qemu-x86_64_defconfig b/configs/qemu-x86_64_defconfig
index d89cd44144..3e9e83efaf 100644
--- a/configs/qemu-x86_64_defconfig
+++ b/configs/qemu-x86_64_defconfig
@@ -62,3 +62,4 @@ CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
CONFIG_FRAMEBUFFER_VESA_MODE_USER=y
CONFIG_FRAMEBUFFER_VESA_MODE=0x144
CONFIG_CONSOLE_SCROLL_LINES=5
+CONFIG_DISTRO_DEFAULTS=y
diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
index 898d656ac3..85bb7b1daf 100644
--- a/configs/qemu-x86_defconfig
+++ b/configs/qemu-x86_defconfig
@@ -50,3 +50,4 @@ CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
CONFIG_FRAMEBUFFER_VESA_MODE_USER=y
CONFIG_FRAMEBUFFER_VESA_MODE=0x144
CONFIG_CONSOLE_SCROLL_LINES=5
+CONFIG_DISTRO_DEFAULTS=y
diff --git a/doc/README.x86 b/doc/README.x86
index 8e0a3f36ed..48557ffa51 100644
--- a/doc/README.x86
+++ b/doc/README.x86
@@ -466,6 +466,11 @@ If you want to check both consoles, use '-serial stdio'.
Multicore is also supported by QEMU via '-smp n' where n is the number of cores
to instantiate. Note, the maximum supported CPU number in QEMU is 255.
+U-Boot uses 'distro_bootcmd' by default when booting on x86 QEMU. This tries to
+load a boot script, kernel, and ramdisk from several different interfaces. For
+the default boot order, see 'qemu-x86.h'. For more information, see
+'README.distro'
+
The fw_cfg interface in QEMU also provides information about kernel data,
initrd, command-line arguments and more. U-Boot supports directly accessing
these informtion from fw_cfg interface, which saves the time of loading them
diff --git a/include/configs/qemu-x86.h b/include/configs/qemu-x86.h
index 64e7a60b8a..097ed414f8 100644
--- a/include/configs/qemu-x86.h
+++ b/include/configs/qemu-x86.h
@@ -10,8 +10,33 @@
#ifndef __CONFIG_H
#define __CONFIG_H
+#include <linux/sizes.h>
+
+#define BOOT_TARGET_DEVICES(func) \
+ func(USB, usb, 0) \
+ func(SCSI, scsi, 0) \
+ func(VIRTIO, virtio, 0) \
+ func(IDE, ide, 0) \
+ func(DHCP, dhcp, na)
+
+#include <config_distro_bootcmd.h>
#include <configs/x86-common.h>
+#undef CONFIG_ENV_SIZE
+#define CONFIG_ENV_SIZE SZ_256K
+
+#define CONFIG_PREBOOT "pci enum"
+
+#undef CONFIG_EXTRA_ENV_SETTINGS
+#define CONFIG_EXTRA_ENV_SETTINGS \
+ CONFIG_STD_DEVICES_SETTINGS \
+ "scriptaddr=0x7000000\0" \
+ "kernel_addr_r=0x1000000\0" \
+ "ramdisk_addr_r=0x4000000\0" \
+ "consoledev=ttyS0\0" \
+ CONFIG_OTHBOOTARGS \
+ BOOTENV
+
#define CONFIG_SYS_MONITOR_LEN (1 << 20)
#define CONFIG_STD_DEVICES_SETTINGS "stdin=serial,i8042-kbd\0" \
--
2.21.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH v2] qemu-x86: Use config_distro_bootcmd
2019-07-02 13:24 ` [U-Boot] [PATCH v2] " Joshua Watt
@ 2019-07-02 14:24 ` Bin Meng
2019-07-02 15:31 ` Joshua Watt
2019-07-03 17:45 ` [U-Boot] [PATCH v3] " Joshua Watt
1 sibling, 1 reply; 12+ messages in thread
From: Bin Meng @ 2019-07-02 14:24 UTC (permalink / raw)
To: u-boot
Hi Joshua,
On Tue, Jul 2, 2019 at 9:26 PM Joshua Watt <jpewhacker@gmail.com> wrote:
>
> Converts qemu x86 machines to boot using distro_config. The intent is to
> allow u-boot in qemu to be maximally compatible with many boot methods
> without having to change the config. Previously, u-boot would only boot
> in a very limited set of circumstances where there was a /boot/vmlinuz
> on scsi 0:3 with no ramdisk.
>
> Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> ---
> configs/qemu-x86_64_defconfig | 1 +
> configs/qemu-x86_defconfig | 1 +
> doc/README.x86 | 5 +++++
> include/configs/qemu-x86.h | 25 +++++++++++++++++++++++++
> 4 files changed, 32 insertions(+)
>
> diff --git a/configs/qemu-x86_64_defconfig b/configs/qemu-x86_64_defconfig
> index d89cd44144..3e9e83efaf 100644
> --- a/configs/qemu-x86_64_defconfig
> +++ b/configs/qemu-x86_64_defconfig
> @@ -62,3 +62,4 @@ CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
> CONFIG_FRAMEBUFFER_VESA_MODE_USER=y
> CONFIG_FRAMEBUFFER_VESA_MODE=0x144
> CONFIG_CONSOLE_SCROLL_LINES=5
> +CONFIG_DISTRO_DEFAULTS=y
I think this should be inserted to a proper place in the defconfig
files. Try "make savedefconfig" and use the generated "defconfig"
file.
> diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
> index 898d656ac3..85bb7b1daf 100644
> --- a/configs/qemu-x86_defconfig
> +++ b/configs/qemu-x86_defconfig
> @@ -50,3 +50,4 @@ CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
> CONFIG_FRAMEBUFFER_VESA_MODE_USER=y
> CONFIG_FRAMEBUFFER_VESA_MODE=0x144
> CONFIG_CONSOLE_SCROLL_LINES=5
> +CONFIG_DISTRO_DEFAULTS=y
> diff --git a/doc/README.x86 b/doc/README.x86
> index 8e0a3f36ed..48557ffa51 100644
> --- a/doc/README.x86
> +++ b/doc/README.x86
> @@ -466,6 +466,11 @@ If you want to check both consoles, use '-serial stdio'.
> Multicore is also supported by QEMU via '-smp n' where n is the number of cores
> to instantiate. Note, the maximum supported CPU number in QEMU is 255.
>
> +U-Boot uses 'distro_bootcmd' by default when booting on x86 QEMU. This tries to
> +load a boot script, kernel, and ramdisk from several different interfaces. For
> +the default boot order, see 'qemu-x86.h'. For more information, see
> +'README.distro'
Thanks for adding some documentation. Do you have any details on for
example how to boot Ubuntu or Fedora on QEMU?
> +
> The fw_cfg interface in QEMU also provides information about kernel data,
> initrd, command-line arguments and more. U-Boot supports directly accessing
> these informtion from fw_cfg interface, which saves the time of loading them
> diff --git a/include/configs/qemu-x86.h b/include/configs/qemu-x86.h
> index 64e7a60b8a..097ed414f8 100644
> --- a/include/configs/qemu-x86.h
> +++ b/include/configs/qemu-x86.h
> @@ -10,8 +10,33 @@
> #ifndef __CONFIG_H
> #define __CONFIG_H
>
Regards,
Bin
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH v2] qemu-x86: Use config_distro_bootcmd
2019-07-02 14:24 ` Bin Meng
@ 2019-07-02 15:31 ` Joshua Watt
0 siblings, 0 replies; 12+ messages in thread
From: Joshua Watt @ 2019-07-02 15:31 UTC (permalink / raw)
To: u-boot
On 7/2/19 9:24 AM, Bin Meng wrote:
> Hi Joshua,
>
> On Tue, Jul 2, 2019 at 9:26 PM Joshua Watt <jpewhacker@gmail.com> wrote:
>> Converts qemu x86 machines to boot using distro_config. The intent is to
>> allow u-boot in qemu to be maximally compatible with many boot methods
>> without having to change the config. Previously, u-boot would only boot
>> in a very limited set of circumstances where there was a /boot/vmlinuz
>> on scsi 0:3 with no ramdisk.
>>
>> Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
>> ---
>> configs/qemu-x86_64_defconfig | 1 +
>> configs/qemu-x86_defconfig | 1 +
>> doc/README.x86 | 5 +++++
>> include/configs/qemu-x86.h | 25 +++++++++++++++++++++++++
>> 4 files changed, 32 insertions(+)
>>
>> diff --git a/configs/qemu-x86_64_defconfig b/configs/qemu-x86_64_defconfig
>> index d89cd44144..3e9e83efaf 100644
>> --- a/configs/qemu-x86_64_defconfig
>> +++ b/configs/qemu-x86_64_defconfig
>> @@ -62,3 +62,4 @@ CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
>> CONFIG_FRAMEBUFFER_VESA_MODE_USER=y
>> CONFIG_FRAMEBUFFER_VESA_MODE=0x144
>> CONFIG_CONSOLE_SCROLL_LINES=5
>> +CONFIG_DISTRO_DEFAULTS=y
> I think this should be inserted to a proper place in the defconfig
> files. Try "make savedefconfig" and use the generated "defconfig"
> file.
OK, I'll do that.
>
>> diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
>> index 898d656ac3..85bb7b1daf 100644
>> --- a/configs/qemu-x86_defconfig
>> +++ b/configs/qemu-x86_defconfig
>> @@ -50,3 +50,4 @@ CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
>> CONFIG_FRAMEBUFFER_VESA_MODE_USER=y
>> CONFIG_FRAMEBUFFER_VESA_MODE=0x144
>> CONFIG_CONSOLE_SCROLL_LINES=5
>> +CONFIG_DISTRO_DEFAULTS=y
>> diff --git a/doc/README.x86 b/doc/README.x86
>> index 8e0a3f36ed..48557ffa51 100644
>> --- a/doc/README.x86
>> +++ b/doc/README.x86
>> @@ -466,6 +466,11 @@ If you want to check both consoles, use '-serial stdio'.
>> Multicore is also supported by QEMU via '-smp n' where n is the number of cores
>> to instantiate. Note, the maximum supported CPU number in QEMU is 255.
>>
>> +U-Boot uses 'distro_bootcmd' by default when booting on x86 QEMU. This tries to
>> +load a boot script, kernel, and ramdisk from several different interfaces. For
>> +the default boot order, see 'qemu-x86.h'. For more information, see
>> +'README.distro'
> Thanks for adding some documentation. Do you have any details on for
> example how to boot Ubuntu or Fedora on QEMU?
I don't, but I'll see if I can get an image and give it a try.
>
>> +
>> The fw_cfg interface in QEMU also provides information about kernel data,
>> initrd, command-line arguments and more. U-Boot supports directly accessing
>> these informtion from fw_cfg interface, which saves the time of loading them
>> diff --git a/include/configs/qemu-x86.h b/include/configs/qemu-x86.h
>> index 64e7a60b8a..097ed414f8 100644
>> --- a/include/configs/qemu-x86.h
>> +++ b/include/configs/qemu-x86.h
>> @@ -10,8 +10,33 @@
>> #ifndef __CONFIG_H
>> #define __CONFIG_H
>>
> Regards,
> Bin
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH v3] qemu-x86: Use config_distro_bootcmd
2019-07-02 13:24 ` [U-Boot] [PATCH v2] " Joshua Watt
2019-07-02 14:24 ` Bin Meng
@ 2019-07-03 17:45 ` Joshua Watt
2019-07-16 14:19 ` Joshua Watt
2019-07-17 5:43 ` Bin Meng
1 sibling, 2 replies; 12+ messages in thread
From: Joshua Watt @ 2019-07-03 17:45 UTC (permalink / raw)
To: u-boot
Converts qemu x86 machines to boot using distro_config. The intent is to
allow u-boot in qemu to be maximally compatible with many boot methods
without having to change the config. Previously, u-boot would only boot
in a very limited set of circumstances where there was a /boot/vmlinuz
on scsi 0:3 with no ramdisk.
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
---
configs/qemu-x86_64_defconfig | 1 +
configs/qemu-x86_defconfig | 1 +
doc/README.x86 | 17 +++++++++++++++++
include/configs/qemu-x86.h | 25 +++++++++++++++++++++++++
4 files changed, 44 insertions(+)
diff --git a/configs/qemu-x86_64_defconfig b/configs/qemu-x86_64_defconfig
index d89cd44144..89118cc3dc 100644
--- a/configs/qemu-x86_64_defconfig
+++ b/configs/qemu-x86_64_defconfig
@@ -12,6 +12,7 @@ CONFIG_SMP=y
CONFIG_GENERATE_PIRQ_TABLE=y
CONFIG_GENERATE_MP_TABLE=y
CONFIG_GENERATE_ACPI_TABLE=y
+CONFIG_DISTRO_DEFAULTS=y
CONFIG_BUILD_ROM=y
CONFIG_FIT=y
CONFIG_SPL_LOAD_FIT=y
diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
index 898d656ac3..a50285beec 100644
--- a/configs/qemu-x86_defconfig
+++ b/configs/qemu-x86_defconfig
@@ -6,6 +6,7 @@ CONFIG_SMP=y
CONFIG_GENERATE_PIRQ_TABLE=y
CONFIG_GENERATE_MP_TABLE=y
CONFIG_GENERATE_ACPI_TABLE=y
+CONFIG_DISTRO_DEFAULTS=y
CONFIG_BUILD_ROM=y
CONFIG_FIT=y
CONFIG_BOOTSTAGE=y
diff --git a/doc/README.x86 b/doc/README.x86
index 8e0a3f36ed..a00ae69acc 100644
--- a/doc/README.x86
+++ b/doc/README.x86
@@ -466,6 +466,23 @@ If you want to check both consoles, use '-serial stdio'.
Multicore is also supported by QEMU via '-smp n' where n is the number of cores
to instantiate. Note, the maximum supported CPU number in QEMU is 255.
+U-Boot uses 'distro_bootcmd' by default when booting on x86 QEMU. This tries to
+load a boot script, kernel, and ramdisk from several different interfaces. For
+the default boot order, see 'qemu-x86.h'. For more information, see
+'README.distro'. Most Linux distros can be booted by writing a uboot script.
+For example, Debian (stretch) can be booted by creating a script file named
+'boot.txt' with the contents:
+
+ setenv bootargs root=/dev/sda1 ro
+ load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} /vmlinuz
+ load ${devtype} ${devnum}:${distro_bootpart} ${ramdisk_addr_r} /initrd.img
+ zboot ${kernel_addr_r} - ${ramdisk_addr_r} ${filesize}
+
+Then compile and install it with:
+
+ $ apt install u-boot-tools && \
+ mkimage -T script -C none -n "Boot script" -d boot.txt /boot/boot.scr
+
The fw_cfg interface in QEMU also provides information about kernel data,
initrd, command-line arguments and more. U-Boot supports directly accessing
these informtion from fw_cfg interface, which saves the time of loading them
diff --git a/include/configs/qemu-x86.h b/include/configs/qemu-x86.h
index 64e7a60b8a..097ed414f8 100644
--- a/include/configs/qemu-x86.h
+++ b/include/configs/qemu-x86.h
@@ -10,8 +10,33 @@
#ifndef __CONFIG_H
#define __CONFIG_H
+#include <linux/sizes.h>
+
+#define BOOT_TARGET_DEVICES(func) \
+ func(USB, usb, 0) \
+ func(SCSI, scsi, 0) \
+ func(VIRTIO, virtio, 0) \
+ func(IDE, ide, 0) \
+ func(DHCP, dhcp, na)
+
+#include <config_distro_bootcmd.h>
#include <configs/x86-common.h>
+#undef CONFIG_ENV_SIZE
+#define CONFIG_ENV_SIZE SZ_256K
+
+#define CONFIG_PREBOOT "pci enum"
+
+#undef CONFIG_EXTRA_ENV_SETTINGS
+#define CONFIG_EXTRA_ENV_SETTINGS \
+ CONFIG_STD_DEVICES_SETTINGS \
+ "scriptaddr=0x7000000\0" \
+ "kernel_addr_r=0x1000000\0" \
+ "ramdisk_addr_r=0x4000000\0" \
+ "consoledev=ttyS0\0" \
+ CONFIG_OTHBOOTARGS \
+ BOOTENV
+
#define CONFIG_SYS_MONITOR_LEN (1 << 20)
#define CONFIG_STD_DEVICES_SETTINGS "stdin=serial,i8042-kbd\0" \
--
2.21.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH v3] qemu-x86: Use config_distro_bootcmd
2019-07-03 17:45 ` [U-Boot] [PATCH v3] " Joshua Watt
@ 2019-07-16 14:19 ` Joshua Watt
2019-07-17 5:43 ` Bin Meng
1 sibling, 0 replies; 12+ messages in thread
From: Joshua Watt @ 2019-07-16 14:19 UTC (permalink / raw)
To: u-boot
ping?
On 7/3/19 12:45 PM, Joshua Watt wrote:
> Converts qemu x86 machines to boot using distro_config. The intent is to
> allow u-boot in qemu to be maximally compatible with many boot methods
> without having to change the config. Previously, u-boot would only boot
> in a very limited set of circumstances where there was a /boot/vmlinuz
> on scsi 0:3 with no ramdisk.
>
> Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> ---
> configs/qemu-x86_64_defconfig | 1 +
> configs/qemu-x86_defconfig | 1 +
> doc/README.x86 | 17 +++++++++++++++++
> include/configs/qemu-x86.h | 25 +++++++++++++++++++++++++
> 4 files changed, 44 insertions(+)
>
> diff --git a/configs/qemu-x86_64_defconfig b/configs/qemu-x86_64_defconfig
> index d89cd44144..89118cc3dc 100644
> --- a/configs/qemu-x86_64_defconfig
> +++ b/configs/qemu-x86_64_defconfig
> @@ -12,6 +12,7 @@ CONFIG_SMP=y
> CONFIG_GENERATE_PIRQ_TABLE=y
> CONFIG_GENERATE_MP_TABLE=y
> CONFIG_GENERATE_ACPI_TABLE=y
> +CONFIG_DISTRO_DEFAULTS=y
> CONFIG_BUILD_ROM=y
> CONFIG_FIT=y
> CONFIG_SPL_LOAD_FIT=y
> diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
> index 898d656ac3..a50285beec 100644
> --- a/configs/qemu-x86_defconfig
> +++ b/configs/qemu-x86_defconfig
> @@ -6,6 +6,7 @@ CONFIG_SMP=y
> CONFIG_GENERATE_PIRQ_TABLE=y
> CONFIG_GENERATE_MP_TABLE=y
> CONFIG_GENERATE_ACPI_TABLE=y
> +CONFIG_DISTRO_DEFAULTS=y
> CONFIG_BUILD_ROM=y
> CONFIG_FIT=y
> CONFIG_BOOTSTAGE=y
> diff --git a/doc/README.x86 b/doc/README.x86
> index 8e0a3f36ed..a00ae69acc 100644
> --- a/doc/README.x86
> +++ b/doc/README.x86
> @@ -466,6 +466,23 @@ If you want to check both consoles, use '-serial stdio'.
> Multicore is also supported by QEMU via '-smp n' where n is the number of cores
> to instantiate. Note, the maximum supported CPU number in QEMU is 255.
>
> +U-Boot uses 'distro_bootcmd' by default when booting on x86 QEMU. This tries to
> +load a boot script, kernel, and ramdisk from several different interfaces. For
> +the default boot order, see 'qemu-x86.h'. For more information, see
> +'README.distro'. Most Linux distros can be booted by writing a uboot script.
> +For example, Debian (stretch) can be booted by creating a script file named
> +'boot.txt' with the contents:
> +
> + setenv bootargs root=/dev/sda1 ro
> + load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} /vmlinuz
> + load ${devtype} ${devnum}:${distro_bootpart} ${ramdisk_addr_r} /initrd.img
> + zboot ${kernel_addr_r} - ${ramdisk_addr_r} ${filesize}
> +
> +Then compile and install it with:
> +
> + $ apt install u-boot-tools && \
> + mkimage -T script -C none -n "Boot script" -d boot.txt /boot/boot.scr
> +
> The fw_cfg interface in QEMU also provides information about kernel data,
> initrd, command-line arguments and more. U-Boot supports directly accessing
> these informtion from fw_cfg interface, which saves the time of loading them
> diff --git a/include/configs/qemu-x86.h b/include/configs/qemu-x86.h
> index 64e7a60b8a..097ed414f8 100644
> --- a/include/configs/qemu-x86.h
> +++ b/include/configs/qemu-x86.h
> @@ -10,8 +10,33 @@
> #ifndef __CONFIG_H
> #define __CONFIG_H
>
> +#include <linux/sizes.h>
> +
> +#define BOOT_TARGET_DEVICES(func) \
> + func(USB, usb, 0) \
> + func(SCSI, scsi, 0) \
> + func(VIRTIO, virtio, 0) \
> + func(IDE, ide, 0) \
> + func(DHCP, dhcp, na)
> +
> +#include <config_distro_bootcmd.h>
> #include <configs/x86-common.h>
>
> +#undef CONFIG_ENV_SIZE
> +#define CONFIG_ENV_SIZE SZ_256K
> +
> +#define CONFIG_PREBOOT "pci enum"
> +
> +#undef CONFIG_EXTRA_ENV_SETTINGS
> +#define CONFIG_EXTRA_ENV_SETTINGS \
> + CONFIG_STD_DEVICES_SETTINGS \
> + "scriptaddr=0x7000000\0" \
> + "kernel_addr_r=0x1000000\0" \
> + "ramdisk_addr_r=0x4000000\0" \
> + "consoledev=ttyS0\0" \
> + CONFIG_OTHBOOTARGS \
> + BOOTENV
> +
> #define CONFIG_SYS_MONITOR_LEN (1 << 20)
>
> #define CONFIG_STD_DEVICES_SETTINGS "stdin=serial,i8042-kbd\0" \
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH v3] qemu-x86: Use config_distro_bootcmd
2019-07-03 17:45 ` [U-Boot] [PATCH v3] " Joshua Watt
2019-07-16 14:19 ` Joshua Watt
@ 2019-07-17 5:43 ` Bin Meng
2019-07-19 9:46 ` Bin Meng
1 sibling, 1 reply; 12+ messages in thread
From: Bin Meng @ 2019-07-17 5:43 UTC (permalink / raw)
To: u-boot
On Thu, Jul 4, 2019 at 1:46 AM Joshua Watt <jpewhacker@gmail.com> wrote:
>
> Converts qemu x86 machines to boot using distro_config. The intent is to
> allow u-boot in qemu to be maximally compatible with many boot methods
> without having to change the config. Previously, u-boot would only boot
> in a very limited set of circumstances where there was a /boot/vmlinuz
> on scsi 0:3 with no ramdisk.
>
> Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> ---
> configs/qemu-x86_64_defconfig | 1 +
> configs/qemu-x86_defconfig | 1 +
> doc/README.x86 | 17 +++++++++++++++++
> include/configs/qemu-x86.h | 25 +++++++++++++++++++++++++
> 4 files changed, 44 insertions(+)
>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH v3] qemu-x86: Use config_distro_bootcmd
2019-07-17 5:43 ` Bin Meng
@ 2019-07-19 9:46 ` Bin Meng
2019-08-14 4:14 ` Heinrich Schuchardt
0 siblings, 1 reply; 12+ messages in thread
From: Bin Meng @ 2019-07-19 9:46 UTC (permalink / raw)
To: u-boot
On Wed, Jul 17, 2019 at 1:43 PM Bin Meng <bmeng.cn@gmail.com> wrote:
>
> On Thu, Jul 4, 2019 at 1:46 AM Joshua Watt <jpewhacker@gmail.com> wrote:
> >
> > Converts qemu x86 machines to boot using distro_config. The intent is to
> > allow u-boot in qemu to be maximally compatible with many boot methods
> > without having to change the config. Previously, u-boot would only boot
> > in a very limited set of circumstances where there was a /boot/vmlinuz
> > on scsi 0:3 with no ramdisk.
> >
> > Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> > ---
> > configs/qemu-x86_64_defconfig | 1 +
> > configs/qemu-x86_defconfig | 1 +
> > doc/README.x86 | 17 +++++++++++++++++
> > include/configs/qemu-x86.h | 25 +++++++++++++++++++++++++
> > 4 files changed, 44 insertions(+)
> >
>
> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
applied to u-boot-x86, thanks!
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH v3] qemu-x86: Use config_distro_bootcmd
2019-07-19 9:46 ` Bin Meng
@ 2019-08-14 4:14 ` Heinrich Schuchardt
2019-08-14 7:19 ` Bin Meng
0 siblings, 1 reply; 12+ messages in thread
From: Heinrich Schuchardt @ 2019-08-14 4:14 UTC (permalink / raw)
To: u-boot
On 7/19/19 11:46 AM, Bin Meng wrote:
> On Wed, Jul 17, 2019 at 1:43 PM Bin Meng <bmeng.cn@gmail.com> wrote:
>>
>> On Thu, Jul 4, 2019 at 1:46 AM Joshua Watt <jpewhacker@gmail.com> wrote:
>>>
>>> Converts qemu x86 machines to boot using distro_config. The intent is to
>>> allow u-boot in qemu to be maximally compatible with many boot methods
>>> without having to change the config. Previously, u-boot would only boot
>>> in a very limited set of circumstances where there was a /boot/vmlinuz
>>> on scsi 0:3 with no ramdisk.
>>>
>>> Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
>>> ---
>>> configs/qemu-x86_64_defconfig | 1 +
>>> configs/qemu-x86_defconfig | 1 +
>>> doc/README.x86 | 17 +++++++++++++++++
>>> include/configs/qemu-x86.h | 25 +++++++++++++++++++++++++
>>> 4 files changed, 44 insertions(+)
>>>
>>
>> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
>
> applied to u-boot-x86, thanks!
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot
>
This patch leads to a build error when building with
CONFIG_DISTRO_DEFAULTS=n.
In file included from include/configs/qemu-x86.h:23,
from include/config.h:5,
from include/common.h:23,
from lib/asm-offsets.c:14:
include/configs/x86-common.h:109: error: "BOOTENV" redefined [-Werror]
#define BOOTENV
In file included from include/configs/qemu-x86.h:22,
from include/config.h:5,
from include/common.h:23,
from lib/asm-offsets.c:14:
include/config_distro_bootcmd.h:407: note: this is the location of the
previous definition
#define BOOTENV \
I am glad that qemu-x86 now can use distro defaults. But I would not
expect a build error due to a legal configuration choice.
If you do not want to retain backwards compatibility you could 'select
DISTRO_DEFAULTS' in board/emulation/Kconfig. This way distro defaults
would no longer be deselectable for qemu-x86.
Best regards
Heinrich
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH v3] qemu-x86: Use config_distro_bootcmd
2019-08-14 4:14 ` Heinrich Schuchardt
@ 2019-08-14 7:19 ` Bin Meng
0 siblings, 0 replies; 12+ messages in thread
From: Bin Meng @ 2019-08-14 7:19 UTC (permalink / raw)
To: u-boot
Hi Heinrich,
On Wed, Aug 14, 2019 at 12:15 PM Heinrich Schuchardt
<xypron.debian@gmx.de> wrote:
>
> On 7/19/19 11:46 AM, Bin Meng wrote:
> > On Wed, Jul 17, 2019 at 1:43 PM Bin Meng <bmeng.cn@gmail.com> wrote:
> >>
> >> On Thu, Jul 4, 2019 at 1:46 AM Joshua Watt <jpewhacker@gmail.com> wrote:
> >>>
> >>> Converts qemu x86 machines to boot using distro_config. The intent is to
> >>> allow u-boot in qemu to be maximally compatible with many boot methods
> >>> without having to change the config. Previously, u-boot would only boot
> >>> in a very limited set of circumstances where there was a /boot/vmlinuz
> >>> on scsi 0:3 with no ramdisk.
> >>>
> >>> Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
> >>> ---
> >>> configs/qemu-x86_64_defconfig | 1 +
> >>> configs/qemu-x86_defconfig | 1 +
> >>> doc/README.x86 | 17 +++++++++++++++++
> >>> include/configs/qemu-x86.h | 25 +++++++++++++++++++++++++
> >>> 4 files changed, 44 insertions(+)
> >>>
> >>
> >> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
> >
> > applied to u-boot-x86, thanks!
> > _______________________________________________
> > U-Boot mailing list
> > U-Boot at lists.denx.de
> > https://lists.denx.de/listinfo/u-boot
> >
>
> This patch leads to a build error when building with
> CONFIG_DISTRO_DEFAULTS=n.
>
> In file included from include/configs/qemu-x86.h:23,
> from include/config.h:5,
> from include/common.h:23,
> from lib/asm-offsets.c:14:
> include/configs/x86-common.h:109: error: "BOOTENV" redefined [-Werror]
> #define BOOTENV
>
> In file included from include/configs/qemu-x86.h:22,
> from include/config.h:5,
> from include/common.h:23,
> from lib/asm-offsets.c:14:
> include/config_distro_bootcmd.h:407: note: this is the location of the
> previous definition
> #define BOOTENV \
>
> I am glad that qemu-x86 now can use distro defaults. But I would not
> expect a build error due to a legal configuration choice.
>
> If you do not want to retain backwards compatibility you could 'select
> DISTRO_DEFAULTS' in board/emulation/Kconfig. This way distro defaults
> would no longer be deselectable for qemu-x86.
Thanks for reporting it. I will prepare a patch to fix it.
Regards,
Bin
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2019-08-14 7:19 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-21 15:16 [U-Boot] [RFC PATCH] qemu-x86: Use config_distro_bootcmd Joshua Watt
2019-06-22 14:51 ` Bin Meng
2019-06-22 14:52 ` Bin Meng
2019-07-02 13:24 ` [U-Boot] [PATCH v2] " Joshua Watt
2019-07-02 14:24 ` Bin Meng
2019-07-02 15:31 ` Joshua Watt
2019-07-03 17:45 ` [U-Boot] [PATCH v3] " Joshua Watt
2019-07-16 14:19 ` Joshua Watt
2019-07-17 5:43 ` Bin Meng
2019-07-19 9:46 ` Bin Meng
2019-08-14 4:14 ` Heinrich Schuchardt
2019-08-14 7:19 ` Bin Meng
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox