Message ID | 1459202897-21440-1-git-send-email-luca@lucaceresoli.net |
---|---|
State | Changes Requested |
Headers | show |
Hei hei, Am 2016-03-29 00:08, schrieb Luca Ceresoli: > The current Buildroot defconfigs for Raspberry Pi and Raspberry Pi 2 > instantiate a console on tty1, which appears on HDMI. Add a console on > the serial port (ttyAMA0) to be more consistent with other defconfigs > and provide a better out-of-the-box experience to users used to have a > serial console from Buildroot defconfigs. I ran in the very problem last week. So +1 for the idea. > This requires two changes: > 1. have two 'console=' entries in the kernel command line; > 2. add a new getty process to the generated inittab. Then why not split up those two changes in two patches? ;-) > -BR2_TARGET_GENERIC_GETTY_PORT="tty1" > +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" +1 > diff --git a/package/rpi-firmware/cmdline.txt b/package/rpi-firmware/cmdline.txt > index 38aa3782621b..155a54693bff 100644 > --- a/package/rpi-firmware/cmdline.txt > +++ b/package/rpi-firmware/cmdline.txt > @@ -1 +1 @@ > -root=/dev/mmcblk0p2 rootwait > +root=/dev/mmcblk0p2 rootwait console=tty1 console=ttyAMA0,115200 +1 Not sure about the post build script though, maybe someone with more experience in buildroot could comment on that. Greets Alex
Hei hei Alexander, thanks for your review! See below by replies. However, when replying to a mail on the mailing list, please reply to all. This helps involved people to follow the discussion. Typically an e-mail sent directly is seen sooner that one on a mailing list only. On 29/03/2016 13:30, Alexander Dahl wrote: > Hei hei, > > Am 2016-03-29 00:08, schrieb Luca Ceresoli: >> The current Buildroot defconfigs for Raspberry Pi and Raspberry Pi 2 >> instantiate a console on tty1, which appears on HDMI. Add a console on >> the serial port (ttyAMA0) to be more consistent with other defconfigs >> and provide a better out-of-the-box experience to users used to have a >> serial console from Buildroot defconfigs. > > I ran in the very problem last week. So +1 for the idea. > >> This requires two changes: >> 1. have two 'console=' entries in the kernel command line; >> 2. add a new getty process to the generated inittab. > > Then why not split up those two changes in two patches? ;-) Because change 1 alone is almost useless. It just outputs kernel booting and early init messages on UART, but no console. I see adding a UART console as a self-contained change, but of course that's only my opinion. > >> -BR2_TARGET_GENERIC_GETTY_PORT="tty1" >> +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" > > +1 > >> diff --git a/package/rpi-firmware/cmdline.txt b/package/rpi-firmware/cmdline.txt >> index 38aa3782621b..155a54693bff 100644 >> --- a/package/rpi-firmware/cmdline.txt >> +++ b/package/rpi-firmware/cmdline.txt >> @@ -1 +1 @@ >> -root=/dev/mmcblk0p2 rootwait >> +root=/dev/mmcblk0p2 rootwait console=tty1 console=ttyAMA0,115200 > > +1 > > Not sure about the post build script though, maybe someone with more > experience in buildroot could comment on that. That's OK if you don't feel confident enough to give your official Acked-by or Reviewed-by tag. Still, you can test the patch on a real board and report back the outcome. If it works, you can add your Tested-by tag. Otherwise, please report what went wrong. More details on: http://nightly.buildroot.org/manual.html#_reviewing_and_testing_patches Cheers,
On 03/29/16 00:08, Luca Ceresoli wrote: > The current Buildroot defconfigs for Raspberry Pi and Raspberry Pi 2 > instantiate a console on tty1, which appears on HDMI. Add a console on > the serial port (ttyAMA0) to be more consistent with other defconfigs > and provide a better out-of-the-box experience to users used to have a > serial console from Buildroot defconfigs. > > This requires two changes: > 1. have two 'console=' entries in the kernel command line; > 2. add a new getty process to the generated inittab. > > Step 2 requires a post-build script since the Buildroot makefiles can > configure only one console. But instead of simply adding a new getty > on ttyAMA0 (which would work) this patch actually changes > BR2_TARGET_GENERIC_GETTY_PORT from tty1 to ttyAMA0, then adds back > tty1 via post-build.sh. This is done only to avoid the > "GENERIC_SERIAL" comment where we instantiate an HDMI console, then > instantiate a really-serial console on another line. > > The result is these two inittab lines: > > ttyAMA0::respawn:/sbin/getty -L ttyAMA0 0 vt100 # GENERIC_SERIAL > tty1::respawn:/sbin/getty -L tty1 0 vt100 # HDMI console > > Cc: Yann E. MORIN <yann.morin.1998@free.fr> > Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net> > > --- > > Tested on both Raspberry Pi B and Raspberry Pi 2, each on serial and > HDMI console. > --- > board/raspberrypi/post-build.sh | 9 +++++++++ > configs/raspberrypi2_defconfig | 3 ++- > configs/raspberrypi_defconfig | 3 ++- > package/rpi-firmware/cmdline.txt | 2 +- > 4 files changed, 14 insertions(+), 3 deletions(-) > create mode 100755 board/raspberrypi/post-build.sh > > diff --git a/board/raspberrypi/post-build.sh b/board/raspberrypi/post-build.sh > new file mode 100755 > index 000000000000..7eae14a88569 > --- /dev/null > +++ b/board/raspberrypi/post-build.sh > @@ -0,0 +1,9 @@ > +#!/bin/sh > + > +set -u > +set -e > + > +# Add a console on tty1 > +grep -qE '^tty1::' ${TARGET_DIR}/etc/inittab || \ > +sed -i '/GENERIC_SERIAL/a\ > +tty1::respawn:/sbin/getty -L tty1 0 vt100 # HDMI console' ${TARGET_DIR}/etc/inittab > diff --git a/configs/raspberrypi2_defconfig b/configs/raspberrypi2_defconfig > index ce41ee31adba..0ffc6cdaf158 100644 > --- a/configs/raspberrypi2_defconfig > +++ b/configs/raspberrypi2_defconfig > @@ -5,7 +5,7 @@ BR2_ARM_FPU_NEON_VFPV4=y > > BR2_TOOLCHAIN_BUILDROOT_CXX=y > > -BR2_TARGET_GENERIC_GETTY_PORT="tty1" > +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" Why not keep the default "console"? That should work, no? Or doesn't that work if there are two consoles? Regards, Arnout > > # Linux headers same as kernel, a 4.1 series > BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y > @@ -33,4 +33,5 @@ BR2_PACKAGE_HOST_MTOOLS=y > BR2_TARGET_ROOTFS_EXT2=y > BR2_TARGET_ROOTFS_EXT2_4=y > # BR2_TARGET_ROOTFS_TAR is not set > +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi2/post-build.sh" > BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi2/post-image.sh" > diff --git a/configs/raspberrypi_defconfig b/configs/raspberrypi_defconfig > index 3b3cc504c2be..717d798b3851 100644 > --- a/configs/raspberrypi_defconfig > +++ b/configs/raspberrypi_defconfig > @@ -2,7 +2,7 @@ BR2_arm=y > BR2_arm1176jzf_s=y > BR2_ARM_EABIHF=y > > -BR2_TARGET_GENERIC_GETTY_PORT="tty1" > +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" > > # Linux headers same as kernel, a 4.1 series > BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y > @@ -32,4 +32,5 @@ BR2_PACKAGE_HOST_MTOOLS=y > BR2_TARGET_ROOTFS_EXT2=y > BR2_TARGET_ROOTFS_EXT2_4=y > # BR2_TARGET_ROOTFS_TAR is not set > +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi/post-build.sh" > BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi/post-image.sh" > diff --git a/package/rpi-firmware/cmdline.txt b/package/rpi-firmware/cmdline.txt > index 38aa3782621b..155a54693bff 100644 > --- a/package/rpi-firmware/cmdline.txt > +++ b/package/rpi-firmware/cmdline.txt > @@ -1 +1 @@ > -root=/dev/mmcblk0p2 rootwait > +root=/dev/mmcblk0p2 rootwait console=tty1 console=ttyAMA0,115200 >
Hei hei, On 29.03.2016 16:12, Luca Ceresoli wrote: > However, when replying to a mail on the mailing list, please reply to > all. This helps involved people to follow the discussion. Typically an > e-mail sent directly is seen sooner that one on a mailing list only. Well, I try to remember it, each community handles this different and I find it annoying to receive mails twice personally. Some mailing list filter this, others not. ;-) > That's OK if you don't feel confident enough to give your official > Acked-by or Reviewed-by tag. Still, you can test the patch on a real > board and report back the outcome. If it works, you can add your > Tested-by tag. Otherwise, please report what went wrong. More details on: Yeah I actually tried to this evening, but there was a showstopper I filed a bug for now: https://bugs.busybox.net/show_bug.cgi?id=8831 Maybe I try again later. Greets Alex
Dear Arnout, On 29/03/2016 22:32, Arnout Vandecappelle wrote: > On 03/29/16 00:08, Luca Ceresoli wrote: >> The current Buildroot defconfigs for Raspberry Pi and Raspberry Pi 2 >> instantiate a console on tty1, which appears on HDMI. Add a console on >> the serial port (ttyAMA0) to be more consistent with other defconfigs >> and provide a better out-of-the-box experience to users used to have a >> serial console from Buildroot defconfigs. >> >> This requires two changes: >> 1. have two 'console=' entries in the kernel command line; >> 2. add a new getty process to the generated inittab. >> >> Step 2 requires a post-build script since the Buildroot makefiles can >> configure only one console. But instead of simply adding a new getty >> on ttyAMA0 (which would work) this patch actually changes >> BR2_TARGET_GENERIC_GETTY_PORT from tty1 to ttyAMA0, then adds back >> tty1 via post-build.sh. This is done only to avoid the >> "GENERIC_SERIAL" comment where we instantiate an HDMI console, then >> instantiate a really-serial console on another line. >> >> The result is these two inittab lines: >> >> ttyAMA0::respawn:/sbin/getty -L ttyAMA0 0 vt100 # GENERIC_SERIAL >> tty1::respawn:/sbin/getty -L tty1 0 vt100 # HDMI console >> >> Cc: Yann E. MORIN <yann.morin.1998@free.fr> >> Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net> >> >> --- >> >> Tested on both Raspberry Pi B and Raspberry Pi 2, each on serial and >> HDMI console. >> --- >> board/raspberrypi/post-build.sh | 9 +++++++++ >> configs/raspberrypi2_defconfig | 3 ++- >> configs/raspberrypi_defconfig | 3 ++- >> package/rpi-firmware/cmdline.txt | 2 +- >> 4 files changed, 14 insertions(+), 3 deletions(-) >> create mode 100755 board/raspberrypi/post-build.sh >> >> diff --git a/board/raspberrypi/post-build.sh >> b/board/raspberrypi/post-build.sh >> new file mode 100755 >> index 000000000000..7eae14a88569 >> --- /dev/null >> +++ b/board/raspberrypi/post-build.sh >> @@ -0,0 +1,9 @@ >> +#!/bin/sh >> + >> +set -u >> +set -e >> + >> +# Add a console on tty1 >> +grep -qE '^tty1::' ${TARGET_DIR}/etc/inittab || \ >> +sed -i '/GENERIC_SERIAL/a\ >> +tty1::respawn:/sbin/getty -L tty1 0 vt100 # HDMI console' >> ${TARGET_DIR}/etc/inittab >> diff --git a/configs/raspberrypi2_defconfig >> b/configs/raspberrypi2_defconfig >> index ce41ee31adba..0ffc6cdaf158 100644 >> --- a/configs/raspberrypi2_defconfig >> +++ b/configs/raspberrypi2_defconfig >> @@ -5,7 +5,7 @@ BR2_ARM_FPU_NEON_VFPV4=y >> >> BR2_TOOLCHAIN_BUILDROOT_CXX=y >> >> -BR2_TARGET_GENERIC_GETTY_PORT="tty1" >> +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" > > Why not keep the default "console"? That should work, no? Or doesn't > that work if there are two consoles? What improvement you expect from using "console" instead of "ttyAMA0"? OTOH I think ttyAMA0 or tty1 is explicit about the device to use. And as Yann pointed out on IRC, "console is not a controlling tty, so no Ctrl-C for example".
On 03/29/16 23:04, Alexander Dahl wrote: > Hei hei, > > On 29.03.2016 16:12, Luca Ceresoli wrote: >> However, when replying to a mail on the mailing list, please reply to >> all. This helps involved people to follow the discussion. Typically an >> e-mail sent directly is seen sooner that one on a mailing list only. > > Well, I try to remember it, each community handles this different and I > find it annoying to receive mails twice personally. Some mailing list > filter this, others not. ;-) > >> That's OK if you don't feel confident enough to give your official >> Acked-by or Reviewed-by tag. Still, you can test the patch on a real >> board and report back the outcome. If it works, you can add your >> Tested-by tag. Otherwise, please report what went wrong. More details on: > > Yeah I actually tried to this evening, but there was a showstopper I > filed a bug for now: https://bugs.busybox.net/show_bug.cgi?id=8831 But that problem has nothing to do with this patch. I expect that if you revert the patch, your build will still fail. Regards, Arnout
On 03/29/16 23:56, Luca Ceresoli wrote: > Dear Arnout, > > On 29/03/2016 22:32, Arnout Vandecappelle wrote: >> On 03/29/16 00:08, Luca Ceresoli wrote: [snip] >>> diff --git a/configs/raspberrypi2_defconfig >>> b/configs/raspberrypi2_defconfig >>> index ce41ee31adba..0ffc6cdaf158 100644 >>> --- a/configs/raspberrypi2_defconfig >>> +++ b/configs/raspberrypi2_defconfig >>> @@ -5,7 +5,7 @@ BR2_ARM_FPU_NEON_VFPV4=y >>> >>> BR2_TOOLCHAIN_BUILDROOT_CXX=y >>> >>> -BR2_TARGET_GENERIC_GETTY_PORT="tty1" >>> +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" >> >> Why not keep the default "console"? That should work, no? Or doesn't >> that work if there are two consoles? > > What improvement you expect from using "console" instead of "ttyAMA0"? > > OTOH I think ttyAMA0 or tty1 is explicit about the device to use. And as > Yann pointed out on IRC, "console is not a controlling tty, so no Ctrl-C > for example". For the record, as concluded on IRC: - "console" is still a controlling tty, it is init=/bin/sh that doesn't give a controlling tty; - GETTY_PORT="console" will launch a getty on the last console= given on the kernel command line - What I actually meant is that BR2_TARGET_GENERIC_GETTY_PORT can be removed completely from the defconfig (as is the case already in roughly half our defconfigs) because it anyway defaults to "console". Regards, Arnout
Dear Arnout, On 30/03/2016 00:46, Arnout Vandecappelle wrote: > On 03/29/16 23:56, Luca Ceresoli wrote: >> Dear Arnout, >> >> On 29/03/2016 22:32, Arnout Vandecappelle wrote: >>> On 03/29/16 00:08, Luca Ceresoli wrote: > [snip] >>>> diff --git a/configs/raspberrypi2_defconfig >>>> b/configs/raspberrypi2_defconfig >>>> index ce41ee31adba..0ffc6cdaf158 100644 >>>> --- a/configs/raspberrypi2_defconfig >>>> +++ b/configs/raspberrypi2_defconfig >>>> @@ -5,7 +5,7 @@ BR2_ARM_FPU_NEON_VFPV4=y >>>> >>>> BR2_TOOLCHAIN_BUILDROOT_CXX=y >>>> >>>> -BR2_TARGET_GENERIC_GETTY_PORT="tty1" >>>> +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" >>> >>> Why not keep the default "console"? That should work, no? Or doesn't >>> that work if there are two consoles? >> >> What improvement you expect from using "console" instead of "ttyAMA0"? >> >> OTOH I think ttyAMA0 or tty1 is explicit about the device to use. And as >> Yann pointed out on IRC, "console is not a controlling tty, so no Ctrl-C >> for example". > > For the record, as concluded on IRC: > > - "console" is still a controlling tty, it is init=/bin/sh that doesn't > give a controlling tty; > > - GETTY_PORT="console" will launch a getty on the last console= given on > the kernel command line > > - What I actually meant is that BR2_TARGET_GENERIC_GETTY_PORT can be > removed completely from the defconfig (as is the case already in roughly > half our defconfigs) because it anyway defaults to "console". Thanks for the recap. Will do in v2.
diff --git a/board/raspberrypi/post-build.sh b/board/raspberrypi/post-build.sh new file mode 100755 index 000000000000..7eae14a88569 --- /dev/null +++ b/board/raspberrypi/post-build.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +set -u +set -e + +# Add a console on tty1 +grep -qE '^tty1::' ${TARGET_DIR}/etc/inittab || \ +sed -i '/GENERIC_SERIAL/a\ +tty1::respawn:/sbin/getty -L tty1 0 vt100 # HDMI console' ${TARGET_DIR}/etc/inittab diff --git a/configs/raspberrypi2_defconfig b/configs/raspberrypi2_defconfig index ce41ee31adba..0ffc6cdaf158 100644 --- a/configs/raspberrypi2_defconfig +++ b/configs/raspberrypi2_defconfig @@ -5,7 +5,7 @@ BR2_ARM_FPU_NEON_VFPV4=y BR2_TOOLCHAIN_BUILDROOT_CXX=y -BR2_TARGET_GENERIC_GETTY_PORT="tty1" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" # Linux headers same as kernel, a 4.1 series BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y @@ -33,4 +33,5 @@ BR2_PACKAGE_HOST_MTOOLS=y BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y # BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi2/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi2/post-image.sh" diff --git a/configs/raspberrypi_defconfig b/configs/raspberrypi_defconfig index 3b3cc504c2be..717d798b3851 100644 --- a/configs/raspberrypi_defconfig +++ b/configs/raspberrypi_defconfig @@ -2,7 +2,7 @@ BR2_arm=y BR2_arm1176jzf_s=y BR2_ARM_EABIHF=y -BR2_TARGET_GENERIC_GETTY_PORT="tty1" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" # Linux headers same as kernel, a 4.1 series BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y @@ -32,4 +32,5 @@ BR2_PACKAGE_HOST_MTOOLS=y BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y # BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi/post-image.sh" diff --git a/package/rpi-firmware/cmdline.txt b/package/rpi-firmware/cmdline.txt index 38aa3782621b..155a54693bff 100644 --- a/package/rpi-firmware/cmdline.txt +++ b/package/rpi-firmware/cmdline.txt @@ -1 +1 @@ -root=/dev/mmcblk0p2 rootwait +root=/dev/mmcblk0p2 rootwait console=tty1 console=ttyAMA0,115200
The current Buildroot defconfigs for Raspberry Pi and Raspberry Pi 2 instantiate a console on tty1, which appears on HDMI. Add a console on the serial port (ttyAMA0) to be more consistent with other defconfigs and provide a better out-of-the-box experience to users used to have a serial console from Buildroot defconfigs. This requires two changes: 1. have two 'console=' entries in the kernel command line; 2. add a new getty process to the generated inittab. Step 2 requires a post-build script since the Buildroot makefiles can configure only one console. But instead of simply adding a new getty on ttyAMA0 (which would work) this patch actually changes BR2_TARGET_GENERIC_GETTY_PORT from tty1 to ttyAMA0, then adds back tty1 via post-build.sh. This is done only to avoid the "GENERIC_SERIAL" comment where we instantiate an HDMI console, then instantiate a really-serial console on another line. The result is these two inittab lines: ttyAMA0::respawn:/sbin/getty -L ttyAMA0 0 vt100 # GENERIC_SERIAL tty1::respawn:/sbin/getty -L tty1 0 vt100 # HDMI console Cc: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net> --- Tested on both Raspberry Pi B and Raspberry Pi 2, each on serial and HDMI console. --- board/raspberrypi/post-build.sh | 9 +++++++++ configs/raspberrypi2_defconfig | 3 ++- configs/raspberrypi_defconfig | 3 ++- package/rpi-firmware/cmdline.txt | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) create mode 100755 board/raspberrypi/post-build.sh