linux系统下剪切文件,Linux系统裁剪(2)之Linux系统裁剪

37475013_201702071641270202207520.jpg

1.这里使用交叉编译的思想,我在Redhat6.4上添加一个硬盘,将该硬盘分区以及安装好MBR之后,再将其挂载到另一个新建的虚拟机上,注意该虚拟机在创建时我只使用了这一个处理好的硬盘。

2.怎么添加新硬盘就不赘述了,现在默认以及添加好了,下面要执行的步骤是分区、格式化、挂载、安装grub、创建“根分区”、挂载至新系统。

3.给sdd(我的虚拟机有四块硬盘,这个是第四块)硬盘分区,然后格式化,我划分了两个分区,一个100M用于boot分区,一个1G用来模拟根分区,如下:

90892644_1

分区以后,查看一下,应该如下所示:

90892644_2

4.格式化硬盘

90892644_3

5.在宿主机上创建两个目录,用于挂载这两个分区。分别是/mnt/boot和/mnt/sysroot

90892644_4

6.为精剪的小系统创建根目录下的相关文件,这里我使用一个简单的for命令去创建。

90892644_5

7.复制内核文件意见所需的基本设备驱动文件

90892644_6

8.安装移植shell程序,这里我使用马哥(马永亮)提供的一个移植脚本bincp.sh,非常好用。其实移植一个命令只需要将该命令以及该命令的的库文件移植过去就可以了,命令ldd。

#!/bin/bash

#

target=/mnt/sysroot

clearCmd() {

if which $cmd &> /dev/null; then

cmdPath=`which --skip-alias $cmd`

else

echo "No such command"

return 5

fi

}

cmdCopy() {

cmdDir=`dirname $1`

[ -d ${target}${cmdDir} ] || mkdir -p ${target}${cmdDir}

[ -f ${target}${1} ] || cp $1 ${target}${cmdDir}

}

libCopy() {

for lib in `ldd $1 | grep -o "/[^[:space:]]\{1,\}"`; do

libDir=`dirname $lib`

[ -d ${target}${libDir} ] || mkdir -p ${target}${libDir}

[ -f ${target}${lib} ] || cp $lib ${target}${libDir}

done

}

while true; do

read -p "Enter a command: " cmd

if [ "$cmd" == 'quit' ] ;then

echo "quit"

exit 0

fi

clearCmd $cmd

[ $? -eq 5 ] && continue

cmdCopy $cmdPath

libCopy $cmdPath

done

这里至少要移植一个bash命令,其余的用到的话可以来移植,为了后面还要添加网卡模块,因此我在这里移植了一下几个命令:bash,ls,cat,ifconfig,insmod,rmmod,route,ping等命令。

90892644_7

9.安装grub(安装方法前面目录有详细步骤和说明)

90892644_8

10.创建grub.conf文件,具体步骤和说明复习之前的章节,vi /mnt/boot/grub/grub.conf,内容如下:

90892644_9

我们给引导文件创建了一个名字:New Minimal Linux OS Powered by Redhat6.4,这样方便我们查看,另外需要注意的一点,当内核装载进内存,并且展开驱动设备的“文件系统”,会以只读方式(ro)挂载根分区,然后进行系统初始化流程,默认会去找./sbin/init,但是我们这里使用一个shell脚本来替代,即可进入系统。只不过这里需要指定init参数,并且一定要在该行的最后,如果系统都没有挂载好,有怎么能找到/bin/bash这个可执行文件呢。将宿主机挂起,然后创建一个新的虚拟机,使用这块硬盘,然后启动如下:

90892644_10

90892644_11

现在可以成功进入系统了,而且启动速度特别快,也就3秒左右。后面来说下加入网卡模块,然后让这个小型的linux系统可以上网。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值