Skip to the content.

1.配置主机名

可以发现,在之前的rc.sysinit中设置了主机名,并且配置了IP地址。但是这两个参数 经常需要修改,不能每次要改动就来修改启动脚本,万一改错了,系统不能启动就麻烦了。

[root@centos501 sysroot]# cat etc/rc.d/rc.sysinit
#!/bin/bash
echo -e "\t Welcome to Mylinux..."

/bin/hostname localhost

echo -e "initializing network device..."
/sbin/insmod /lib/modules/e1000.ko
/sbin/ifconfig eth0 10.10.1.208/24
/sbin/ifconfig lo 127.0.0.1/8

/bin/bash

因此,可以将主机名这个参数弄到外面的一个配置文件中,比如/etc/sysconfig/network这个 配置文件中。

[root@centos501 sysroot]# mkdir etc/sysconfig
[root@centos501 sysroot]# vim etc/sysconfig/network
[root@centos501 sysroot]# cat etc/sysconfig/network
HOSTNAME=mylinux

修改一下rc.sysinit配置文件

[root@centos501 ~]# cd /mylinux/sysroot/
[root@centos501 sysroot]# vim etc/rc.d/rc.sysinit
[root@centos501 sysroot]# cat etc/rc.d/rc.sysinit
#!/bin/bash
echo -e "\t Welcome to Mylinux..."

[ -f /etc/sysconfig/network ]&& . /etc/sysconfig/network
[ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ] && HOSTNAME=localhost
/bin/hostname $HOSTNAME

echo -e "initializing network device..."
/sbin/insmod /lib/modules/e1000.ko
/sbin/ifconfig eth0 10.10.1.208/24
/sbin/ifconfig lo 127.0.0.1/8

/bin/bash
[root@centos501 sysroot]#

主要过程就是获取配置文件的变量,如果没有HOSNAME变量或者为none的话就赋值localhost。

[ -f /etc/sysconfig/network ]&& . /etc/sysconfig/network
[ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ] && HOSTNAME=localhost
/bin/hostname $HOSTNAME

测试一下:

这下理解为啥永久修改主机名的时候需要修改/etc/sysconfig/network这个配置文件了。

2.TTY

在centos中可以使用Ctl+Alt+Fn来切换到一个新的终端中,但是每次必须要重新输入一次 用户名和密码。

而且,一般就只有F1~F6,F7就没了,可能centos设计者认为6个已经足够了,其实个人觉得 有两个就差不多啦,哈哈。

[root@centos501 sysroot]# cat /etc/inittab
...
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
...

这几行决定的,不信删几行试试。

整两行到我们自己的新系统中

[root@centos501 sysroot]# vim etc/inittab
[root@centos501 sysroot]# cat etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2

# 新系统中还没有mingetty
[root@centos501 sysroot]# cpcommand.sh
Your command: mingetty
copy /sbin/mingetty finished.
Continue: q
# 需要把rc.sysinit中的/bin/bash去掉,否则直接跳到bash中了,不执行mingetty。
[root@centos501 sysroot]# vim etc/rc.d/rc.sysinit
[root@centos501 sysroot]# cat etc/rc.d/rc.sysinit
#!/bin/bash
echo -e "\t Welcome to Mylinux..."

[ -f /etc/sysconfig/network ]&& . /etc/sysconfig/network
[ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ] && HOSTNAME=localhost
/bin/hostname $HOSTNAME

echo -e "initializing network device..."
/sbin/insmod /lib/modules/e1000.ko
/sbin/ifconfig eth0 10.10.1.208/24
/sbin/ifconfig lo 127.0.0.1/8

#/bin/bash
[root@centos501 sysroot]#

测试一下:出现登陆提示符,并且只有F1和F2能切换。

我们的系统还么有用户管理相关的内容,因此,这样以后没法玩了。调整一下, 使用agetty可以不用用户名和密码。

[root@centos501 sysroot]# cpcommand.sh
Your command: agetty
copy /sbin/agetty finished.
Continue: q
[root@centos501 sysroot]# vim etc/inittab
[root@centos501 sysroot]# cat etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

1:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty1
2:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty2

测试一下:

参考