fed*_*ora 13 fedora ubuntu hostname
几年来我一直使用 Linux 作为我的主要系统,特别是 Fedora,我总是看到我的主机名设置为“localhost”,除了当我连接到某些网络并且它成为我的 IP 时。今天我经历了以下行为,但我无法理解。
我在笔记本电脑的另一个分区上设置了 Ubuntu 安装,在 Ubuntu 安装期间设置了计算机名称/主机名。但是,当我重新启动回 Fedora 时,Fedora 已将我的主机名更新为我在 Ubuntu 安装中设置的名称。
我一直认为主机名是配置并存储在发行版安装的分区上的,确实在 Fedora 上 /etc/hostname 的内容仍然是“localhost.localdomain”,但运行该hostname命令会显示新的主机名。两个安装共享一个 efi 引导分区,但在其他方面是离散的。我想知道 Fedora 安装从哪里以及为什么读取新主机名?
ein*_*onm 11
该hostname程序执行了一个 uname 系统调用,从运行中可以看出:
strace hostname
...
uname({sysname="Linux", nodename="my.hostname.com", ...}) = 0
...
Run Code Online (Sandbox Code Playgroud)
从uname syscall 手册页,它说系统调用从内核中检索以下结构:
struct utsname {
char sysname[]; /* Operating system name (e.g., "Linux") */
char nodename[]; /* Name within "some implementation-defined
network" */
char release[]; /* Operating system release (e.g., "2.6.28") */
char version[]; /* Operating system version */
char machine[]; /* Hardware identifier */
#ifdef _GNU_SOURCE
char domainname[]; /* NIS or YP domain name */
#endif
};
Run Code Online (Sandbox Code Playgroud)
所以域名来自 NIS/YP 系统,如果我们相信评论。因此,很有可能,您的网络上可能有一个 NIS / YP 服务正在向您回传由 ubuntu 操作系统设置的名称。
在 Linux 系统上有两个独立的(!)主机名概念。
内核认为本地主机名(由 gethostname/uname 和 sethostname 系统调用处理)独立于任何网络连接——如果您构建的内核不具备 TCP/IP 网络能力,这些机制仍然存在。
有一个或多个主机名实际上连接到主机拥有的 TCP/IP(或其他网络堆栈 - 并非世界上所有的网络都是 IP!)地址,这些地址在用户空间由解析器库函数(部分libc),它将根据您在适当的配置文件(/etc/nsswitch.conf、/etc /host.conf 等...)。
| 归档时间: |
|
| 查看次数: |
2627 次 |
| 最近记录: |