uts: Make default hostname configurable, rather than always using "(none)"
Subsystems (2)
PATCH 1/1 uts: Make default hostname configurable, rather than always using "(none)"
The "hostname" tool falls back to setting the hostname to "localhost" if /etc/hostname does not exist. Distribution init scripts have the same fallback. However, if userspace never calls sethostname, such as when booting with init=/bin/sh, or otherwise booting a minimal system without the usual init scripts, the default hostname of "(none)" remains, unhelpfully appearing in various places such as prompts ("root@(none):~#") and logs. Furthermore, "(none)" doesn't typically resolve to anything useful.
Make the default hostname configurable. This removes the need for the standard fallback, provides a useful default for systems that never call sethostname, and makes minimal systems that much more useful with less configuration. Distributions could choose to use "localhost" here to avoid the fallback, while embedded systems may wish to use a specific target hostname.
---
Revised from my original patch that just changed the default to "localhost"; this patch makes the default configurable, and leaves the default default as "(none)".
include/linux/uts.h | 2 +- init/Kconfig | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletions(-)
include/linux/uts.h +1 -1
@@ -9,7 +9,7 @@#endif #ifndef UTS_NODENAME -#define UTS_NODENAME "(none)"/* set by sethostname() */ +#define UTS_NODENAME CONFIG_DEFAULT_HOSTNAME/* set by sethostname() */ #endif #ifndef UTS_DOMAINNAME
init/Kconfig +9 -0
@@ -204,6 +204,15 @@ config KERNEL_LZO endchoice +config DEFAULT_HOSTNAME + string "Default hostname" + default "(none)" + help + This option determines the default system hostname before userspace + calls sethostname(2). The kernel traditionally uses "(none)" here, + but you may wish to use a different default here to make a minimal + system more usable with less configuration. + config SWAP bool "Support for paging of anonymous memory (swap)" depends on MMU && BLOCK
Signature · 1 line
1.7.5.3
Quoted 9 lines · Josh Triplett
The "hostname" tool falls back to setting the hostname to "localhost" if
/etc/hostnamedoes not exist. Distribution init scripts have the same fallback. However, if userspace never calls sethostname, such as when booting with init=/bin/sh, or otherwise booting a minimal system without the usual init scripts, the default hostname of "(none)" remains, unhelpfully appearing in various places such as prompts ("root@(none):~#") and logs. Furthermore, "(none)" doesn't typically resolve to anything useful.
Ok, I'm fine with this. So Ack as far as I'm concerned.
Does this make most sense through the networking tree, or what?
Linus
David Miller
maintainerFrom: Linus Torvalds <[email protected]>
Date: Tue, 31 May 2011 20:35:37 +0900
Quoted 11 lines · Josh Triplett
Quoted 9 lines
The "hostname" tool falls back to setting the hostname to "localhost" if
/etc/hostnamedoes not exist. Distribution init scripts have the same fallback. However, if userspace never calls sethostname, such as when booting with init=/bin/sh, or otherwise booting a minimal system without the usual init scripts, the default hostname of "(none)" remains, unhelpfully appearing in various places such as prompts ("root@(none):~#") and logs. Furthermore, "(none)" doesn't typically resolve to anything useful.
Quoted 3 lines
Ok, I'm fine with this. So Ack as far as I'm concerned.
Does this make most sense through the networking tree, or what?
Linus, you can just apply this directly.
Thanks!