继续小Linux的话题,完善小Linux的功能
1、实现单用户模式:
# cd /mnt/sysroot/bin
# ln -sv bash sh
# vim etc/inittab
添加一行:
l1:1:wait:/sbin/init -t1 S
# sync 让新写入的数据同步到磁盘上
每次在宿主机上写入新数据时,多同步几次为好
挂起宿主机,启动目标主机,进入单用户模式:
2、添加主机名
# cd /mnt/sysroot
# mkdir etc/sysconfig
# vim etc/sysconfig/network
添加:
NETWORKING=yes
HOSTNAME=www.magedu.com
# vim etc/rc.d/rc.sysinit
添加如下行:
echo -e "Set the hostname..."
[ -r /etc/sysconfig/network ] && source /etc/sysconfig/network
[ -z $HOSTNAME ] && /bin/hostname localhost || /bin/hostname $HOSTNAME
# chmod go=--- root/ -R
3、添加环境变量和PS1
# vim etc/profile
添加如下行:
PS1='[\u@\h \W]\$'
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PS1 PATH
4、定义umask
# vim etc/bashrc
添加:
# /etc/bashrc
if [ $UID -gt 99 ] && [ `id -gn` -eq `id -un` ]; then
umask 002
else
umask 022
fi
在目标主机上新建文件a,查看权限:
目标主机中的vim编辑器可能会依赖下面这个文件,所以复制过去还是比较好的:
# cp /etc/vimrc /mnt/sysroot/etc/
5、使linux挂载根文件系统和激活交换分区
# vim /mnt/sysroot/etc/rc.d/rc.sysinit
添加如下行:
echo -e "Remount the root filesystem..."
mount -n -o remount,rw /dev/sda3 /
echo -e "Activating the swap filesystem..."
swapon /dev/sda2
6、提供/etc/fstab文件,挂载额外文件系统;
# vim etc/rc.d/rc.sysinit
添加如下行:
echo -e "Mounting the rest filesystem..."
mount -n -a
7、实现开机自动挂载:
# vim etc/fstab
/dev/sda3 / ext3 defaults 0 0
/dev/sda1 /boot ext3 defaults 0 0
/dev/sda2 swap swap defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
后面两个也要挂载上
8、提供/etc/sysctl.conf,设置内核参数;
# cd /mnt/sysroot
# vim etc/sysctl.conf
编辑如下行:
# /etc/sysctl.conf
net.ipv4.ip_forward = 1
# vim etc/rc.d/rc.sysinit
编辑如下行:
echo "Set the kernel parameters..."
sysctl -p -q
9、提供Nginx服务
先在宿主机上安装nginx:
添加系统用户和组:
#groupadd -r nginx
#useradd -r -g nginx -s /sbin/nologin -M nginx
将用户和组复制到目标主机的磁盘上:
#tail -1 /etc/passwd >> /mnt/sysroot/etc/passwd
#tail -1 /etc/group >> /mnt/sysroot/etc/group
#tail -1 /etc/shadow >> /mnt/sysroot/etc/shadow
# yum groupinstall "Development Libraries" "Development Tools"
# yum install gcc openssl-devel pcre-devel zlib-devel
下载nginx,编译安装:
# tar xvf nginx-1.0.4.tar.gz
# cd nginx-1.0.4
#./configure \
--prefix=/usr \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/tmp/nginx/client/ \
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi
#make
#make install
创建一些nginx需要的目录:
# cd /mnt/sysroot
# mkdir -p etc/nginx/
# mkdir -pv var/{log/nginx,run/nginx,lock,tmp/nginx{client,fcgi,proxy,uwsgi,scgi}}
开始执行脚本,再复制一些所需的命令:
# bash bcp.sh
A Command: nginx
A Command: netstat
A Command: ps
A Command: route
复制nginx的文件到目标主机上:
cp /etc/nginx/* /mnt/sysroot/etc/nginx
挂起宿主机,开启目标主机,给目标主机配置IP和网关:
开启nginx服务:
在浏览器中成功访问Web,nginx移植成功:
注:在宿主机上写入新数据后,不要急着挂起宿主机,开启目标主机,这样的话,会导致数据同步不上磁盘,所以,要有耐心,多sync几次,多等待一会再挂起宿主机,可以减少很多错误。
另外,做完一部分时,若快照,必须保证宿主机添加的磁盘与目标主机的磁盘名字保持一致,否则,会导致数据写不进磁盘。不做快照,虽然做错了不容易恢复,但我还是建议不要快照,这样便不会那么麻烦,或许还会省去不少功夫。