RHEL6 Tiny Linux 的制作
RHEL6 Tiny Linux 的制作
################### RHEL6 Tiny Linux #################
以Linux的启动流程来制作,预备条件:宿主机,独立硬盘(也可以用镜像文件)
第一步:分区,挂载,以下是分区脚本
#!/bin/bash
# Difined Variable
#
BootPart=500M
RootPart=2G
read -p "Input your disk that need to format: " Disk
# Partitons
(
/sbin/fdisk $Disk <<EOF
n
p
1
+$BootPart
n
p
2
+$RootPart
w
EOF
)&> /dev/null
sleep 3
mkfs.ext4 ${Disk}1 &> /dev/null
mkfs.ext4 ${Disk}2 &> /dev/null
mkdir /mnt/{boot,sysroot} &> /dev/null
mount ${Disk}1 /mnt/boot
第二步:安装GRUB及其配置文件,以下是处理脚本
#!/bin/bash
#
GrubRD=/mnt
read -p "Input your disk for installing grub: " Gbdisk
grub-install --root-directory=$GrubRD $Gbdisk
cd $GrubRD/boot/grub
cat >grub.conf <<EOF
timeout=5
default=0
title Welcome to use tiny linux(2.6.32)
root(hd0,0)
kernel /vmlinuz ro root=/dev/sda2 selinux=0
initrd /initramfs.img
EOF
#copy kernel and initrd from current system
cp /boot/vmlinuz* /$GrubRD/boot/vmlinuz
cp /boot/initramfs* /$GrubRD/boot/initramfs.img
第三步: 建立根文件系统下的相关目录以及初始化脚本
#!/bin/bash
#
read -p "input real rootfs's path for tiny linux: " Sysroot
cd ${Sysroot:-/mnt/sysroot}
mkdir -p proc sys dev etc/{init,rc.d} lib/modules lib64 bin sbin usr/{lib,lib64} var/{log,run,lock}
cat >./etc/init/rcS.conf <<EOF
start on startup
stop on runlevel
task
console output
exec /etc/rc.d/rc.sysinit
EOF
cat >./etc/rc.d/rc.sysinit <<EOF
#!/bin/bash
#
echo -e "\tWelcome to come \033[5;31mTiny Linux\033[0m"
/bin/bash
EOF
chmod +x ./etc/rc.d/rc.sysinit
第四步:拷贝要使用的程序命令到根目录
#!/bin/bash
#
DEST=/mnt/sysroot
libcp() {
LIBPATH=${1%/*}
[ ! -d $DEST$LIBPATH ] && mkdir -p $DEST$LIBPATH
[ ! -e $DEST${1} ] && cp -a $1* $DEST$LIBPATH && echo "copy lib $1 finished."
}
bincp() {
CMDPATH=${1%/*}
[ ! -d $DEST$CMDPATH ] && mkdir -p $DEST$CMDPATH
[ ! -e $DEST${1} ] && cp $1 $DEST$CMDPATH
for LIB in `ldd $1 | grep -o "/.*lib\(64\)\{0,1\}/[^.]\{1,\}"`; do
if [ "$LIB" = "/lib64/ld-linux-x86-64" ];then
LIB=`echo $LIB | grep -o "/.*lib\(64\)\{0,1\}/[^-]\{1,\}"`
fi
libcp $LIB
done
}
read -p "Your command: " CMD
until [ $CMD == 'q' ]; do
! which $CMD && echo "Wrong command" && read -p "Input again:" CMD && continue
COMMAND=` which $CMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"`
bincp $COMMAND
echo "copy $COMMAND finished."
read -p "Continue: " CMD
done
第五步:添加运行级别0 和 6 ,使系统可以正常关机重启
1. cp -a /etc/init/rc.conf .
2. 建立rc脚本
#!/bin/bash
#
#create rc script
#
Tiny_etc_dir=/mnt/sysroot/etc
[ -d ${Tiny_etc_dir}/rc.d ] || mkdir -p ${Tiny_etc_dir}/rc.d
cat >${Tiny_etc_dir}/rc.d/rc <<EOF
#!/bin/bash
#
RunLevel_Dir=/etc/rc.d/rc$1
for i in ${RunLevel_Dir}/K*;do
if [ -x $i ];then
$i stop
fi
done
for i in ${RunLevel_Dir}/S*;do
if [ -x $i ];then
$i start
fi
done
EOF
chmod +x ${Tiny_etc_dir}/rc.d/rc
3. 建立init.d目录和rcN.d目录,以及对应的动作脚本和链接。
mkdir -p /mnt/sysroot/etc/{init.d,rc0.d,rc6.d}
4. 编写halt,用作关机和重启
vim /mnt/sysroot/etc/init.d/halt
#!/bin/bash
#
case $0 in
*halt)
echo "halting the system......."
/sbin/halt -p
;;
*reboot)
echo "rebooting the system......"
/sbin/reboot
;;
*)
;;
esac
chmod +x /mnt/sysroot/etc/init.d/halt
5. 使用第四部的脚本,来移动halt、reboot命令以及依赖库
6. 将halt脚本分别链接到rc0.d和rc6.d目录下
cd rc0.d
ln -sv ../init.d/halt S01halt
cd rc6.d
ln -sv ../init.d/halt S01reboot
7. 建立/etc/passwd文件,并在其中加入root用户条目:
cat >/mnt/sysroot/etc/passwd <<EOF
root:x:0:0:root:/root:/bin/bash
EOF
8. 拷贝/etc/passwd的依赖库
cp -a /lib64/libnss_files* /mnt/sysroot/lib64/
第六步:添加登陆终端
1. 拷贝init程序处理过程中与终端有关的配置文件
cp -a /etc/init/{tty.conf,start-ttys.conf,prefdm.conf} /mnt/sysroot/etc/init/
2. 建立于登录有关的目录
mkdir /mnt/sysroot/etc/{pam.d,security,sysconfig}
3. 拷贝与登录有关的配置文件
cp /etc/pam.d/{login,system-auth} /mnt/sysroot/etc/pam.d
cp /etc/security/{limits.conf,namespace.conf} /mnt/sysroot/etc/security/
cp /etc/sysconfig/init /mnt/sysroot/etc/sysconfig
4. 建立存放与登录pam相关的功能库文件目录
mkdir /mnt/sysroot/lib64/security
5. 拷贝login中依赖的pam库文件
for i in `awk 'grep -o 'pam.*so' /etc/pam.d/login`; do cp -a /lib64/security/$i /mnt/sysroot/lib64/security/; done
6. 拷贝system-auth中依赖的pam库文件
for i in `awk '$3 ~ "so$" {print $3}' /etc/pam.d/system-auth `; do cp -a /lib64/security/$i /mnt/sysroot/lib64/security/; done
7. cp -a /lib64/libnsl* /mnt/sysroot/lib64
8. grep ^root /etc/shadow >> /mnt/sysroot/etc/shadow
9. egrep '^(passwd|shadow)' /etc/nsswitch.conf >>/mnt/sysroot/etc/nsswitch.conf(注:没有nsswitch.conf也可以)
10. 使用第四步脚本,拷贝login命令及其库文件。
11. 修改rc.sysinit文件,如下:
#!/bin/bash
#
# set hostname
. /etc/sysconfig/network
[ -z "$HOSTNAME" -o "$HOSTNAME" == "(none)" ] && HOSTNAME=tiny.linux
/bin/hostname $HOSTNAME
#remount rootfs
mount -n -o remount,rw /
echo -e "\tWelcome to come \033[5;31mTiny Linux\033[0m"
#/bin/bash
12. 使用第四步脚本,拷贝mount和hostname命令及其库文件。
第七步:添加单用户模式
1. 建立运行级别"1"的目录
mkdir /mnt/sysroot/etc/rc.d/rc1.d
2. 拷贝宿主机的/etc/rc.d/init.d/single
cp /etc/rc.d/init.d/single /mnt/sysroot/etc/rc.d/init.d
cp /etc/rc.d/rc1.d/S99single /mnt/sysroot/etc/rc.d/rc1.d
3. cd /mnt/sysroot/etc/rc.d/rc1.d && ln -sv ../init.d/tserver K33tserver
4. 拷贝单用户配置文件(被init程序使用的)
cp /etc/init/rcS-sulogin.conf /mnt/sysroot/etc/init/
5. 使用第四步脚本,拷贝rcS-sulogin.conf文件中出现的命令及其库文件。
转载于:https://blog.51cto.com/noican/1656581
RHEL6 Tiny Linux 的制作相关推荐
- 最小的Linux系统制作过程详解
http://club.topsage.com/thread-890315-1-1.html 一,什么是BabyLinux 二,为什么要做这样一个linux 三,什么人适合读这篇文档 四,应该具备的知 ...
- linux 程序输出 logo,Linux下制作logo并显示到开发板上
我用的是OK6410开发板,自带的两个内核(2.6.32和3.0.1都测试通过) 首先讲一下制作logo的方法: Linux Logo制作工具 : LogoMaker.tgz 4.7MB http:/ ...
- bazel 链接第三方动态库_C语言学习篇(31)——linux中制作动态链接库
引言 前面我们讲解了什么是函数库(函数库就是一些事先写好的函数集合),函数库有什么作用(可以打包我们的编写的源代码,供他人使用,同时源码不可见,保护了自己的知识产权)以及函数库有2种提供方式:静态链接 ...
- Windows的启动u盘linux,如何在linux下制作一个windows的可启动u盘?
如何在linux下制作一个windows的可启动u盘? 情景是这样的,有一个windows10的iso,现在想通过U盘安装,要求即支持UEFI(启动引导器),又支持Legacy(启动引导器),因为有一 ...
- linux php后门,Linux_一个初级的linux后门制作方法,众所周知,Linux的文件权限如: - phpStudy...
一个初级的linux后门制作方法 众所周知,Linux的文件权限如: 777;666等,其实只要在相应的文件上加上UID的权限,就可以用到加权限人的身份去运行这个文件.所以我们只需要将bash复制出来 ...
- linux .bin文件处理,linux下制作.bin文件方法简介
linux 下制作二进制 .bin 的文件 制做方法是使用cat 命令将执行脚本和打包文件同事放到一个.bin的文件里 这样安装的时候只要使用一个包,直接执行该包即可安装完毕,简单方便. 例:制作安装 ...
- 如何制作linux系统硬盘,手把手带你自制Linux系统之二 简易Linux的制作
手把手带你自制Linux系统之二 简易Linux的制作 本文利用CentOS5.5自带内核制作一个可以正常启动的Mini Linux. 打开上一篇准备工作中创建的CentOS虚拟机,为另一台虚拟机Mi ...
- linux添加后门方法,超初级的linux后门制作方法
超初级的linux后门制作方法 更新时间:2006年10月24日 00:00:00 作者: 众所周知,Linux的文件权限如: 777:666等,其实只要在相应的文件上加上UID的权限,就可以用到 ...
- linux字符界面播放vcd,在Linux中制作VCD
在Linux中制作VCD 发布时间:2006-03-25 01:04:08来源:红联作者:zz123 ---- 也许您还在使用Windows的原因之一是Windows强大的多媒体支持能力,例如制作个性 ...
最新文章
- Linux驱动技术(一) _内存申请
- 基于MATLAB的数字图像K-L变换,基于DCT变换的图像编码方法研究
- LAMP--Apache 禁止指定 user_agent
- HDOJ1216 Assistance Required 打表
- 【收藏】HDFS的Java API使用
- DDoS攻击愈演愈烈,反射攻击举足轻重
- whether logo retrieval will block the application
- 处理JAX-RS中的自定义异常类型
- 项目管理工具strber
- ThinkPhp知识大全(非常详细)
- 2021移动游戏生命周期研究玩家洞察报告
- 小议如何跳出魔改网络结构的火坑
- HDU 1011 Starship Troopers 树形+背包dp
- 浅析ReentrantLock重入锁
- jquery访问css类,jQuery - 获取并设置 CSS 类
- android 定时器 坑,Android 记录一个使用AlarmManager的坑。
- LeetCode动态规划系列教程(上)
- fatal error: openssl/sha.h: No such file or directory
- linux怎样使用小米线刷工具,在linux上怎么样线刷小米手机
- 有向图(3.基于十字链表的c++实现)
热门文章
- 给力的网络 有道的性能——802.11n与WLAN
- SpringMVC4 + Spring + MyBatis3 【转】
- FastDFS介绍与安装配置
- Linux/Unix操作系统目录结构的来历
- RHEL5安装无线网卡驱动
- 见证激情燃烧的汤姆·彼得斯(Tom Peters)
- Fragment 和 FragmentActivity的使用(二)
- gtk_widget_modify_bg的用法
- 不懂圣杯布局?5种方式包教包会
- 《Kotlin进化之路》之【第二章:揭开Kotlin的基础面纱】(二)