redhat 5 系列 diy mini linux 之二

简介:

本文接上篇,假设mini linux挂载在宿主机的/mnt/boot和/mnt/sysroot下,本文的一些脚本都是简化的,只求达到我们的目的,linux的工作流程比想象中复杂的多


现在我们有一个可用的mini linux,让我们对它进行一些扩展

  1. 重新挂载根文件系统为读写

    首先给minlinux提供个fstab配置文件,内容如下:

    wKiom1eLJ8_RsolJAACDw4M-VWo164.png-wh_50

    在rc.sysinit里面添加mount -o remount,rw /

    如果此时mini linux 的etc目录下没有mstab文件,则使用 mount -o -n remount,rw /命令,否则报错


2.设定主机名

    <1>移植hostname命令,并给mini linux 提供个配置文件

    echo "HOSTNAME=mylinux" > /mnt/sysroot/etc/sysconfig/network

    <2>在rc.sysinit中添加以下内容


echo -e "set up HOSTNAME..."

if [ -f /etc/sysconfig/network ]; then

    . /etc/sysconfig/network

fi

if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then

    HOSTNAME=localhost

fi

hostname  $HOSTNAME


3.关机和重启

    首先编辑级别服务脚本,(linux关机重启halt、reboot等命令会跳到对应启动级别去执行服务脚本)必须在对应级别下执行关机重启命令,否则无法执行成功。   这里还需要用到一个内建命令exec,bash执行某个命令的时候,会fork一个子进程去执行,使用exec命令后,直接替换父进程去执行。简单地讲,不用exec时候,halt 关机的子进程结束后,bash这个父进程不会自己结束,不能完全关机。

    脚本内容如下:

    

[root@test sysroot]# cat etc/rc.d/init.d/halt 

#!/bin/bash

case $0  in

*halt)

COMMAND="halt -p";;

*reboot)

COMMAND="reboot";;

*)

esac

exec $COMMAND


创建软连接:

 ln /mnt/sysroot/etc/rc.d/init.d/halt   /mnt/sysroot/etc/rc0.d/K99halt  -sv

 ln /mnt/sysroot/etc/rc.d/init.d/halt   /mnt/sysroot/etc/rc6.d/K99reboot  -sv


编辑etc/rc.d/下的rc和配置文件inittab

rc 内容如下:

#!/bin/bash

RUNLEVEL=$1

for i  in /etc/rc${RUNLEVEL}.d/K*

do

$i stop;

done


for i  in /etc/rc${RUNLEVEL}.d/S*

do

$i start;

done


inittab追加下面几行:

l0:0:wait:/etc/rc.d/rc 0

l3:3:wait:/etc/rc.d/rc 3

l6:6:wait:/etc/rc.d/rc 6

    服务脚本和rc都要授予执行权限,到这里就可以在mini linux中使用init 0和init 6关机重启了。


4.各级别服务脚本

    服务脚本格式参考linux启动流程篇。


5.启动终端

    这里系统默认的mingetty不能只指定bash,它会一直调用login程序,而且也依赖/bin/sh,所以这里采用agetty替代。

    移植agetty,并在inittab里面追加以下两行:    

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

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

    -n 要与-l 一起用,-n指不使用用户名登陆,-l指使用的shell 38400指的是屏幕显示速率可以用

stty -F /dev/console speed得出


6.定义function函数

    这里只定义两个函数,为的是使开机流程看起来更像centos,内容如下:


success(){

STRING=$1

OK="[ \033[32m  ok \033[0m  ]"

ALL=`stty -F /dev/console size|awk '{print $2}'`

SPA=$[$ALL-${#STRING}-${#OK}]

echo -n "$STRING"

for i  in `seq 1 $SPA`

do

echo  -n " " 

done

echo  -e  "$OK"

}


failed(){

STRING=$1

FAILED="[\033[31m failed \033[0m]"

ALL=`stty -F /dev/console size|awk '{print $2}'`

SPA=$[$ALL-${#STRING}-${#FAILED}]

echo -n "$STRING"

for i  in `seq 1 $SPA`

do

echo  -n " " 

done

echo  -e  "$FAILED"

}

err_check(){

if [ $? -eq 0 ];then

success $1

else

failed $1

fi

}


修改rc.sysinit如下:

#!/bin/bash

. /etc/init.d/functions

echo "remount  /  ..."

mount -o remount,rw  /

err_check "remount  / ..."

echo -e "set up HOSTNAME..."

if [ -f /etc/sysconfig/network ]; then

    . /etc/sysconfig/network

fi

if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then

    HOSTNAME=localhost

fi

hostname  $HOSTNAME

err_check "set up HOSTNAME..."

echo -e "Welcome to \033[31m linzb\033[0m's mini linux"


效果如下图:

wKioL1eMp8GT2MFkAAAm3CPokHc369.png-wh_50


6. 给mini linux配置网络功能

    首先要装载网卡驱动模块,因为实在虚拟机操作的,网卡类型为pcnet32,pcnet32又依赖于mii模块(可以用modinfo pcnet32查看),所以要装载两个模块

    编辑/mnt/sysroot/etc/sysconfig/network-scripts/ifcfg-eth0 文件内容如下:


DEVICE=eth0

BOOTPROTO=static

HWADDR=00:0C:29:5B:58:99

ONBOOT=yes

IPADDR=192.168.2.224

GATEWAY=192.168.2.1

NETMASK=255.255.255.0


    编辑启动脚本/mnt/sysroot/etc/init.d/network,内容如下:


#!/bin/bash

#chkconfig:3 20 79

#description:network config

#

. /etc/init.d/functions

. /etc/sysconfig/network-scripts/ifcfg-eth0

LOCK_FILE=/var/lock/subsys/network

start(){

echo "starting  network  config ... "

touch $LOCK_FILE

insmod  /lib/modules/mii.ko

insmod  /lib/modules/pcnet32.ko

ifconfig $DEVICE $IPADDR  netmask $NETMASK up

route add default gw $GATEWAY

err_check "network starting.."

}

stop(){

echo "stopping network ...."

rm  $LOCK_FILE

modprobe -r pcnet32.ko

modprobe -r mii.ko

err_check "network stopping.."

}

status(){

if [ -f $LOCK_FILE ] ;then

echo  "network working ..."

else

echo  "network stopped.."

fi

}

case $1 in

start)

start ;;

stop)

stop ;;

restart)

stop

start;;

status)

status;;

*)

echo "Usage: $0 [start|stop|status|restart]";;

esac


    chmod +x给network执行权限,并用chkconfig创建启动级别软连接(这个要chroot 到/mnt/sysroot再执行,自己手动会有错),最终效果如下:

    wKioL1eN8zDwzHpiAABFPiG92dc756.png-wh_50

注:

    如果启动过程包device no found 看看是否有挂载网卡,这个network脚本是stop不了的,模块无法卸载会报modprobe: FATAL: Could not load /lib/modules/2.6.8.custem/modules.deb的错,把modprobe -r改成rmmod命令后成功解决














本文转自biao007h51CTO博客,原文链接:http://blog.51cto.com/linzb/1827840 ,如需转载请自行联系原作者




相关文章
|
1月前
|
安全 Linux 网络安全
如何在 VM 虚拟机中安装 Red Hat Enterprise Linux 9.3 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Red Hat Enterprise Linux 9.3 操作系统保姆级教程(附链接)
94 0
|
17天前
|
Linux 网络安全
linux免密登录报错 Bad owner or permissions on /etc/ssh/ssh_config.d/05-redhat.conf
linux免密登录报错 Bad owner or permissions on /etc/ssh/ssh_config.d/05-redhat.conf
25 1
|
7月前
|
Linux 网络安全 Windows
linux/redhat系-006基础命令,包管理,
全程以企业正式的服务器为标准使用
66 0
|
架构师 中间件 Linux
Red Hat Enterprise Linux 8/7/6/5/4 合集下载地址
Red Hat Enterprise Linux 8/7/6/5/4 合集下载地址
|
6月前
|
网络协议 关系型数据库 MySQL
Red Hat enterprise linux 5 -mysql安装步骤
Red Hat enterprise linux 5 -mysql安装步骤
|
7月前
|
编解码 Java Linux
linux【redhat&ubuntu】下ffmpeg-3.1安装编译及视频转码
这篇是几年前整理的老文章了,当时在调研流视频推送及播放相关技术,并在项目中应用,使用到ffmpeg,所以整理了这篇文章,但并未发布。最近又有相关的技术需求,所以整理出来,作为一个新的开始。
174 0
|
8月前
|
关系型数据库 Linux 数据库
百度搜索:蓝易云【Redhat Linux9上安装DB2【详解】】
注意事项: - 安装过程中需要注意所选的软件包版本和系统依赖。 - 在创建 DB2 用户和组时,可以使用自己的用户名和组名,但需要与后续操作一致。 - 在配置环境变量时,需要注意所填写的路径是否正确,否则会导致启动 DB2 失败。 - 在启动 DB2 时,需要以 DB2 用户身份进行操作,否则会提示权限不足。
73 0
|
Linux
Why does my Red Hat Enterprise Linux (RHEL) system swap despite of having free RAM?
Why does my Red Hat Enterprise Linux (RHEL) system swap despite of having free RAM? Swapping in a linux system happens under two conditions. 1) Anonymous mapped memory. 2) Oversized workload abusing memory overcommit. In our problem, only point 1 is valid. So, we will discuss that here.
68 0
|
监控 算法 安全
Red Hat Enterprise Linux (RHEL) 9 更新了哪些新特性?
Red Hat Enterprise Linux (RHEL) 9 更新了哪些新特性?
|
存储 缓存 Linux
【Linux】【RedHat】下载 安装 注册
【Linux】【RedHat】下载 安装 注册
532 0