题外:自制小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 15:18
下一篇 2017-04-04 18:44

相关推荐

  • HAProxy初探及简单案例_Net21_第二周

    前言 随着互联网业务的迅猛发展,大型电商平台和门户网站对系统的可用性和可靠性的要求越来越高,高可用集群、负载均衡集群成为一种热门的系统架构解决方案。在众多的负载均衡解决方案中,有基于硬件的负载均衡设备,例如F5、Big-IP等,也有基于软件的负载均衡产品,如LVS、Nginx以及本文介绍的HAProxy等。在软件的负载均衡产品中,又分为两种实现方式,分别是基…

    Linux干货 2016-07-22
  • 马哥网络教育班21期+第一周博客作业

    1、描述计算机的组成及其功能。   硬件:     CPU(运算器、控制器、一缓存(L1)、二级缓存(L2)):       运算器主要用来进行算数运算以及逻辑运算。       控制器主要是用来协调       一级缓存和二级缓存主要是用…

    Linux干货 2016-07-12
  • 2、文件通配符,文件创建、复制等操作

    1:bash特性之状态返回值 变量$?,用于保存命令执行成功与否的状态,0表示成功,1-255表示失败,以命令ls为例: 执行成功 [root@localhost ~]# ls /usr/     bin  etc  games &nbsp…

    Linux干货 2016-09-19
  • 开篇

    test 新人报道

    Linux干货 2016-10-28
  • root用户密码破解

    方法一:进入单用户模式破解root密码 (1)编辑grub菜单(选定要编辑的title,而后使用e命令) (2)在选定的kernel后附加 1,s,S或single都可以 (3)在kernel所在行键入"b"命令即可进入单用户模式 (4)运行passwd命令修改root用户密码 并重启 (5)输入密码即可登录 方法二:进入救援模…

    Linux干货 2016-09-15