题外:自制小linux

自制小linux 系统

制作环境的概述

首先你的有VMware的虚拟机软件,其次安装了centos6/centos7linux系统

而且你需要写一个复制相关命令以及依赖库文件的的脚本(主要是为了省时间,脚本写法会在后面备注)
准备好以上环境,便可以制作一个小linux系统了,具体步骤如下

1)  在虚拟机设置中,在原有基础上在挂载一个20G大小的硬盘

2)  开机启动原有linux系统,我们可以简称原系统为“SL”

3)  使用如下命令:

echo “- – -” > /sys/class/scsi_host/host2/scan 可以识别之前安装好的小硬盘,利用lsblk查看,确认设备已经识别

4)  对该硬盘进行分区

fdisk  /dev/sdb

分为两个区

/dev/sda1—à/boot

/dev/sda2–à/

加载文件系统统一为ext4

Mkfs.ext4  /dev/sda1

Mkfs.ext4
/dev/sda

5)  挂载 boot

mkdir /mnt/boot

mount /dev/sdb1 /mnt/boot

6)  安装grub

grub-install –root-directory=/mnt /dev/sdb

7)  恢复内核和initramfs文件

cp /boot/vmlinuz-2.6.32-642.el6.x86_64  /mnt/boot/

cp
/boot/initramfs-2.6.32-642.el6.x86_64.img 
/mnt/boot

8)  建立grub.conf:

vim /mnt/boot/grub.conf

default=0

timeout=3

title customlinux

root (h0,0)

kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2  selinux=0 init=/bin/bash

initrd /initramfs-2.6.32-642.el6.x86_64.img

9) 创建一级目录

         mkdir
/mnt/sysroot

mount 
/dev/sdb2   /mnt/sysroot

mkdir–pv /mnt/sysroot/{etc,lib,lib64,bin,sbin,tmp,var,usr,sys,proc
,opt,home,root,boot,dev,mnt,media}

 

9)  复制bash和所需命令及相关库文件

ls,cat, vim,reboot,hostname等等~这里用之前提到的脚本即可快速实现

这有一个不错的脚本大家可以参考一下,虽然有些复杂,但是主要借鉴前面的判断语句的写法。

Vim copycmd .sh

#!/bin/bash

TargetDir=/mnt/sysroot

[ ! -d
$TargetDir ] && mkdir -p $TargetDir

#定义函数

CopyLib(){

 

for Lib in `ldd $1 | egrep -o
“/[^[:space:]]+”`

do

           LibDirName=`dirname $Lib`

           [ ! -d $TargetDir/$LibDirName ]
&& mkdir -p $TargetDir/$LibDirName

           [ ! -f $TargetDir/$Lib ] &&
cp $Lib $TargetDir/$LibDirName

done

return 0

 

}

#定义函数

CopyCmd(){

 

CmdDirName=`dirname $1`

[ ! -d $TargetDir/$CmdDirName ] &&
mkdir -p $TargetDir/$CmdDirName

[ ! -f $TargetDir/$CmdDirName ] && cp
$1 $TargetDir/$CmdDirName

return 0

}

 

read -p
“Please input a comand: ” Cmd

while
true

do

 

[[ $Cmd =~ ^[Qq]$|^[Qq][Uu][Ii][Tt]$ ]]
&& exit

[[ $Cmd =~ ^[Ee]$|^[Ee][Xx][Ii][Tt]$ ]]
&& exit

if which $Cmd &>/dev/null

then

           CmdPath=`which $Cmd`

           if [ -f $TargetDir/$CmdPath ]

           then

                    echo -e “\e[31mTarget
command\e[0m \e[1;31m$Cmd\e[0m \e[31mis exist!\e[0m”

                    read -p “Please input a
comand [quit|exist]:” Cmd

                    continue

           fi

           else

                    echo -e “\e[31mSource
command\e[0m \e[1;31m$Cmd\e[0m \e[31mis exist!\e[0m”

                    read -p “Please input a
comand [quit|exist]:” Cmd

                    continue

           fi

                   

           CopyCmd $CmdPath && CopyLib
$CmdPath && echo -e “\e[1;32m$Cmd\e[0m \e[32mis copy
successed!\e[0m”

           [ $? -ne 0 ] && echo -e
“\e[1;31m$Cmd\e[0m \e[32mis copy failured!\e[0m”

           read -p “Please input a comand
again [quit|exist]: ” Cmd

 

done

 

考完后,关闭系统,新建虚拟机,将之前的20G小硬盘去掉,放入新建虚拟机中,即可安全启动(改该系统未考虑网络的问题,需要网络,首先需要安装网络模块 ,也可全路径拷贝网络模块,在复制相关网络管理命令和依赖库文件,即可具备网络功能)

如此,自制小linu大功告成,

题外:自制小linux

 

话说玩玩就好,有时间追加全自主编译安装的linux,能够更加深入的了解linux,详细可以参考LFS6.2中文版

原创文章,作者:oranix,如若转载,请注明出处:http://www.178linux.com/72528

(0)
oranixoranix
上一篇 2017-04-04
下一篇 2017-04-04

相关推荐

  • ansible的入门使用手册

    ansible1

    2018-01-15
  • keepalived——高可用集群

    HA Cluster 集群类型:LB、HA、HP 系统可用性的公式:A=MTBF/(MTBF+MTTR) (0,1) 几个9: 99%, …, 99.999%     建议使用3个9的系统可用性 如何降低MTTR:冗余(redundant) active/passive active –>…

    Linux干货 2016-11-01
  • MariaDB之MHA配置

    工作拓扑 一、MHA简明:     MHA(Master HA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了    automating master failover 功能。MHA在监控到master节点故障时,会提升其中    拥有最新数据的…

    2017-01-01
  • N25第三周总结

    linux   bassic The third week of blogging 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。  ~]# who | cut -d' ' -f1 | uniqr…

    Linux干货 2016-12-17
  • lamp部署及编译安装

    lamp 资源类型: 静态资源:原始形式与响应给客户端的结果一致; 动态资源:原始形式通常为程序文件(为某种编程语言开发),需要运行后将生成的结果展示给客户端;如果请求的资源不存在那么结果就会重定向至指定的文件中 客户端技术:javascript 服务端技术:php, jsp, … CGI:Common Gateway Interfa…

    Linux干货 2016-10-19
  • 一个不想被打断腿的人的学习宣言

    听说不晒学习宣言的会被某人打断腿,忍了好几天,思考了好几天,想了想,还是腿比较重要。废话就不多说了。上图~~!  生命中总要去经历一些,好让自己在老的时候回忆起来,不至于说:“哎,怎么就没有去拼一下呢!”

    Linux干货 2016-10-27