Skip to contentSkip to conversation

getty: add the ability to pass options to getty

PATCH New Assaf Inbal 3 participants 7 messages Aug 22, 2013 – Aug 25, 2013

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 getty: add the ability to pass options to getty

---
 system/Config.in |    7 +++++++
 system/system.mk |    5 +++--
 2 files changed, 10 insertions(+), 2 deletions(-)
system/Config.in +7 -0
index d41f184..16558bf 100644
@@ -230,6 +230,13 @@ config BR2_TARGET_GENERIC_GETTY_BAUDRATE
 	default "57600"		if BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600
 	default "115200"	if BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200
 
+config BR2_TARGET_GENERIC_GETTY_OPTIONS
+	string "other random options to pass to getty"
+	default ""
+	help
+	  Any other flags you want to pass to gettey,
+	  Refer to getty --help for details.
+
 config BR2_TARGET_GENERIC_GETTY_TERM
 	string "Value to assign the TERM environment variable"
 	default "vt100"
system/system.mk +3 -2
index b4ddc3e..925f3f4 100644
@@ -5,6 +5,7 @@ TARGET_GENERIC_PASSWD_METHOD := $(call qstrip,$(BR2_TARGET_GENERIC_PASSWD_METHOD
 TARGET_GENERIC_GETTY := $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT))
 TARGET_GENERIC_GETTY_BAUDRATE := $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE))
 TARGET_GENERIC_GETTY_TERM := $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_TERM))
+TARGET_GENERIC_GETTY_OPTIONS:=$(call qstrip,$(BR2_TARGET_GENERIC_GETTY_OPTIONS))
 
 target-generic-securetty:
 	grep -q '^$(TARGET_GENERIC_GETTY)$$' $(TARGET_DIR)/etc/securetty || \
@@ -29,13 +30,13 @@ target-root-passwd:
 	$(SED) "s,^root:[^:]*:,root:$$TARGET_GENERIC_ROOT_PASSWD_HASH:," $(TARGET_DIR)/etc/shadow
 
 target-generic-getty-busybox:
-	$(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(TARGET_GENERIC_GETTY)::respawn:/sbin/getty -L $(TARGET_GENERIC_GETTY) $(TARGET_GENERIC_GETTY_BAUDRATE) $(TARGET_GENERIC_GETTY_TERM) #~' \
+	$(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(TARGET_GENERIC_GETTY)::respawn:/sbin/getty -L $(TARGET_GENERIC_GETTY_OPTIONS) $(TARGET_GENERIC_GETTY) $(TARGET_GENERIC_GETTY_BAUDRATE) $(TARGET_GENERIC_GETTY_TERM) #~' \
 		$(TARGET_DIR)/etc/inittab
 
 # In sysvinit inittab, the "id" must not be longer than 4 bytes, so we
 # skip the "tty" part and keep only the remaining.
 target-generic-getty-sysvinit:
-	$(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(shell echo $(TARGET_GENERIC_GETTY) | tail -c+4)::respawn:/sbin/getty -L $(TARGET_GENERIC_GETTY) $(TARGET_GENERIC_GETTY_BAUDRATE) $(TARGET_GENERIC_GETTY_TERM) #~' \
+	$(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(shell echo $(TARGET_GENERIC_GETTY) | tail -c+4)::respawn:/sbin/getty -L $(TARGET_GENERIC_GETTY_OPTIONS) $(TARGET_GENERIC_GETTY) $(TARGET_GENERIC_GETTY_BAUDRATE) $(TARGET_GENERIC_GETTY_TERM) #~' \
 		$(TARGET_DIR)/etc/inittab
 
 # Find commented line, if any, and remove leading '#'s
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH 1/1 getty: add the ability to pass options to getty

Quoted 1 line · Assaf Inbal

(for -next)

With some minor fixes, though:

Quoted 10 lines
---
  system/Config.in |    7 +++++++
  system/system.mk |    5 +++--
  2 files changed, 10 insertions(+), 2 deletions(-)
system/Config.in +0 -0
index d41f184..16558bf 100644

system/Config.in config BR2_TARGET_GENERIC_GETTY_BAUDRATE · line 237

Quoted 8 lines
system/Config.in +5 -0
@@ -230,6 +230,13 @@ config BR2_TARGET_GENERIC_GETTY_BAUDRATE
  	default "57600"		if BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600
  	default "115200"	if BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200
 
+config BR2_TARGET_GENERIC_GETTY_OPTIONS
+	string "other random options to pass to getty"
+	default ""
+	help
+	  Any other flags you want to pass to gettey,

gettey -> getty

Quoted 10 lines
system/Config.in +2 -0
+	  Refer to getty --help for details.
+
  config BR2_TARGET_GENERIC_GETTY_TERM
  	string "Value to assign the TERM environment variable"
  	default "vt100"
system/system.mk +0 -0
index b4ddc3e..925f3f4 100644

system/system.mk TARGET_GENERIC_PASSWD_METHOD := $(call qstrip,$(BR2_TARGET_GENERIC_PASSWD_METHOD · line 8

Quoted 4 lines
system/system.mk +1 -0
@@ -5,6 +5,7 @@ TARGET_GENERIC_PASSWD_METHOD := $(call qstrip,$(BR2_TARGET_GENERIC_PASSWD_METHOD
  TARGET_GENERIC_GETTY := $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT))
  TARGET_GENERIC_GETTY_BAUDRATE := $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE))
  TARGET_GENERIC_GETTY_TERM := $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_TERM))
+TARGET_GENERIC_GETTY_OPTIONS:=$(call qstrip,$(BR2_TARGET_GENERIC_GETTY_OPTIONS))

Don't copy the incorrect coding style :-) Use = instead of := and put
spaces around it.

system/system.mk target-root-passwd: · line 33

Quoted 9 lines
system/system.mk +1 -1
  target-generic-securetty:
  	grep -q '^$(TARGET_GENERIC_GETTY)$$' $(TARGET_DIR)/etc/securetty || \
@@ -29,13 +30,13 @@ target-root-passwd:
  	$(SED) "s,^root:[^:]*:,root:$$TARGET_GENERIC_ROOT_PASSWD_HASH:," $(TARGET_DIR)/etc/shadow
 
  target-generic-getty-busybox:
-	$(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(TARGET_GENERIC_GETTY)::respawn:/sbin/getty -L $(TARGET_GENERIC_GETTY) $(TARGET_GENERIC_GETTY_BAUDRATE) $(TARGET_GENERIC_GETTY_TERM) #~' \
+	$(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(TARGET_GENERIC_GETTY)::respawn:/sbin/getty -L $(TARGET_GENERIC_GETTY_OPTIONS) $(TARGET_GENERIC_GETTY) $(TARGET_GENERIC_GETTY_BAUDRATE) $(TARGET_GENERIC_GETTY_TERM) #~' \

This line could really use some splitting... But maybe that's not the
responsibility of this patch.

Regards,
Arnout

Quoted 11 lines
system/system.mk +1 -1
  		$(TARGET_DIR)/etc/inittab
 
  # In sysvinit inittab, the "id" must not be longer than 4 bytes, so we
  # skip the "tty" part and keep only the remaining.
  target-generic-getty-sysvinit:
-	$(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(shell echo $(TARGET_GENERIC_GETTY) | tail -c+4)::respawn:/sbin/getty -L $(TARGET_GENERIC_GETTY) $(TARGET_GENERIC_GETTY_BAUDRATE) $(TARGET_GENERIC_GETTY_TERM) #~' \
+	$(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(shell echo $(TARGET_GENERIC_GETTY) | tail -c+4)::respawn:/sbin/getty -L $(TARGET_GENERIC_GETTY_OPTIONS) $(TARGET_GENERIC_GETTY) $(TARGET_GENERIC_GETTY_BAUDRATE) $(TARGET_GENERIC_GETTY_TERM) #~' \
  		$(TARGET_DIR)/etc/inittab
 
  # Find commented line, if any, and remove leading '#'s
Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#2 lore raw

PATCH 1/1 getty: add the ability to pass options to getty

Hey,

Don't copy the incorrect coding style :-) Use = instead of := and put

Quoted 1 line

spaces around it.

Just out of curiosity, why would you rather I use =? Is it because that macro won't always be evaluated, or is there something else I'm missing?

BTW - Would you like me to submit an updated patch?

Good day,
Assaf
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20130822/5eb48482/attachment.html>

#3 lore raw

PATCH 1/1 getty: add the ability to pass options to getty

Hi Assaf,

Quoted 8 lines · Assaf Inbal

Hey,

Quoted 2 lines

Don't copy the incorrect coding style :-) Use = instead of := and put
spaces around it.

Just out of curiosity, why would you rather I use =? Is it because that macro won't always be evaluated, or is there something else I'm missing?

Technically, in this case, both := and = are fine, and both produce the same result because the right-hand side is fixed and does not reference any other make variable.
The more unusual := is thus not really needed, and therefore it has become buildroot policy to use the simple = in all cases, with spaces as delimiter. This is also visually the most attractive.

Quoted 2 lines

BTW - Would you like me to submit an updated patch?

Yes please. Review the comments provided and send an updated patch marked as 'PATCH v2'.

Best regards,
Thomas

#4 lore raw

PATCH 1/1 getty: add the ability to pass options to getty

Hey,

Yes please. Review the comments provided and send an updated patch

Quoted 2 lines

marked as 'PATCH v2'.

Sadly, it seems that my git-send-email-foo isn't that good since it didn't attach my new patches to this thread.
In any case, I sent out two patches, one for cleaning up getty a bit as discussed, and the other for adding the original command line options that started this thread.

Good day,
Assaf
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20130825/cd3e1e00/attachment.html>

#5 lore raw

PATCH 1/1 getty: add the ability to pass options to getty

In reply to Assaf Inbal
Quoted 11 lines · Assaf Inbal
---
 system/Config.in |    7 +++++++
 system/system.mk |    5 +++--
 2 files changed, 10 insertions(+), 2 deletions(-)
system/Config.in +0 -0
index d41f184..16558bf 100644

system/Config.in config BR2_TARGET_GENERIC_GETTY_BAUDRATE · line 234

Quoted 5 lines
system/Config.in +2 -0
@@ -230,6 +230,13 @@ config BR2_TARGET_GENERIC_GETTY_BAUDRATE
        default "57600"         if BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600
        default "115200"        if BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200
 
+config BR2_TARGET_GENERIC_GETTY_OPTIONS
+       string "other random options to pass to getty"

I would remove the 'random': options you pass here are not random but probably well-chosen.

system/Config.in config BR2_TARGET_GENERIC_GETTY_BAUDRATE · line 242

Quoted 8 lines
system/Config.in +5 -0
+       default ""
+       help
+         Any other flags you want to pass to gettey,
+         Refer to getty --help for details.
+
 config BR2_TARGET_GENERIC_GETTY_TERM
        string "Value to assign the TERM environment variable"
        default "vt100"

There are now a number of getty-related config options in system/Config.in, but without any structure.
When the getty port is empty, no action is taken.
What about introducing a new bool option to determine if a getty needs to be started, with suboptions for port, baudrate, term, and user-configurable options?
Something like:

config BR2_TARGET_GENERIC_GETTY
bool "Run a getty (login prompt) after boot"

config BR2_TARGET_GENERIC_GETTY_PORT
bool "tty port"
depends on BR2_TARGET_GENERIC_GETTY

choice
prompt "baudrate"
depends on BR2_TARGET_GENERIC_GETTY

[baudrate options]
endchoice

config BR2_TARGET_GENERIC_GETTY_TERM
bool "TERM environment variable"
depends on BR2_TARGET_GENERIC_GETTY

config BR2_TARGET_GENERIC_GETTY_OPTIONS
string "other options to pass to getty"
depends on BR2_TARGET_GENERIC_GETTY

This creates some structure, and hides all non-relevant options when the user does not want a getty.
In this case, system/system.mk will need a few adaptations to check the new symbol instead of for the emptiness of _PORT.

Best regards,
Thomas

Quoted 35 lines
system/system.mk +3 -3
index b4ddc3e..925f3f4 100644
@@ -5,6 +5,7 @@ TARGET_GENERIC_PASSWD_METHOD := $(call qstrip,$(BR2_TARGET_GENERIC_PASSWD_METHOD
 TARGET_GENERIC_GETTY := $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT))
 TARGET_GENERIC_GETTY_BAUDRATE := $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE))
 TARGET_GENERIC_GETTY_TERM := $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_TERM))
+TARGET_GENERIC_GETTY_OPTIONS:=$(call qstrip,$(BR2_TARGET_GENERIC_GETTY_OPTIONS))
 
 target-generic-securetty:
        grep -q '^$(TARGET_GENERIC_GETTY)$$' $(TARGET_DIR)/etc/securetty || \
@@ -29,13 +30,13 @@ target-root-passwd:
        $(SED) "s,^root:[^:]*:,root:$$TARGET_GENERIC_ROOT_PASSWD_HASH:," $(TARGET_DIR)/etc/shadow
 
 target-generic-getty-busybox:
-       $(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(TARGET_GENERIC_GETTY)::respawn:/sbin/getty -L $(TARGET_GENERIC_GETTY) $(TARGET_GENERIC_GETTY_BAUDRATE) $(TARGET_GENERIC_GETTY_TERM) #~' \
+       $(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(TARGET_GENERIC_GETTY)::respawn:/sbin/getty -L $(TARGET_GENERIC_GETTY_OPTIONS) $(TARGET_GENERIC_GETTY) $(TARGET_GENERIC_GETTY_BAUDRATE) $(TARGET_GENERIC_GETTY_TERM) #~' \
                $(TARGET_DIR)/etc/inittab
 
 # In sysvinit inittab, the "id" must not be longer than 4 bytes, so we
 # skip the "tty" part and keep only the remaining.
 target-generic-getty-sysvinit:
-       $(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(shell echo $(TARGET_GENERIC_GETTY) | tail -c+4)::respawn:/sbin/getty -L $(TARGET_GENERIC_GETTY) $(TARGET_GENERIC_GETTY_BAUDRATE) $(TARGET_GENERIC_GETTY_TERM) #~' \
+       $(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(shell echo $(TARGET_GENERIC_GETTY) | tail -c+4)::respawn:/sbin/getty -L $(TARGET_GENERIC_GETTY_OPTIONS) $(TARGET_GENERIC_GETTY) $(TARGET_GENERIC_GETTY_BAUDRATE) $(TARGET_GENERIC_GETTY_TERM) #~' \
                $(TARGET_DIR)/etc/inittab
 
 # Find commented line, if any, and remove leading '#'s
--

1.7.9.5

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

#6 lore raw

PATCH 1/1 getty: add the ability to pass options to getty

Quoted 22 lines · Thomas De Schampheleire

There are now a number of getty-related config options in system/Config.in, but without any structure.
When the getty port is empty, no action is taken.
What about introducing a new bool option to determine if a getty needs to be started, with suboptions for port, baudrate, term, and user-configurable options?
Something like:

config BR2_TARGET_GENERIC_GETTY
bool "Run a getty (login prompt) after boot"

config BR2_TARGET_GENERIC_GETTY_PORT
bool "tty port"
depends on BR2_TARGET_GENERIC_GETTY

choice
prompt "baudrate"
depends on BR2_TARGET_GENERIC_GETTY

[baudrate options]
endchoice

Quoted 7 lines

config BR2_TARGET_GENERIC_GETTY_TERM
bool "TERM environment variable"
depends on BR2_TARGET_GENERIC_GETTY

config BR2_TARGET_GENERIC_GETTY_OPTIONS
string "other options to pass to getty"
depends on BR2_TARGET_GENERIC_GETTY

Sounds like a good plan. Except that the sub-options should be wrapped
in a if...endif construct instead of repeating 'depends on'.

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F