公司借Linux证书,借鸡生蛋--巧做Linux PE系统

借鸡生蛋--巧做Linux PE系统

本篇以虚拟机为主要实验对象,实验需要提前建立好一个正常的Linux系统,还有一个新的系统(不需要安装Linux).

一、准备工作

1.添加新硬盘

使用vmware,在正常的Linux系统中添加一块新的硬盘.启动Linux系统.

2.挂载新硬盘

使用fdisk -l 发现多出来一块硬盘,(/dev/sdb).之后使用fdisk /dev/sdb给/dev/sdb创建两个主分区,(/dev/sdb1和/dev/sdb2分别为100M和200M)并使用a改变/dev/sdb1,使其称为boot.

接下来格式化后,再将/dev/sdb1挂载在/mnt/boot/,将/dev/sdb2挂载在/mnt/sysroot/.

二、制作过程

1.做Grub

grub-install --root-directory=/mnt(此处不用详细填写,系统会自动去找) /dev/sdb

cp /boot/vmli ...  /mnt/boot/

cp /boot/initrd    /mnt/boot/

cd /mnt/boot

vim grub.conf

default=0

timeout=5

title LinuxPE

root(hd0,0)

kernel /vmlinuz.. ro root=/dev/sda2 rhgb quiet

initrd /initrd-2. (此处不需要手工输入,使用.! ls /mnt/boot/读取进来文件)

2.做init进程

which init查找init

cd /mnt/sysroot/

mkdir dev tmp etc proc sys lib sbin bin usr

chmod o+wt tmp

cp /sbin/init ./sbin/

ldd /sbin/init (查看init所依赖的库)

cp /lib/libsepol.so.1 /mnt/sysroot/lib

cp /lib/libselinux.so.1 /mnt/sysroot/lib

cp /lib/ libc.so.6  /mnt/sysroot/lib

cp /lib/ libl.so.2  /mnt/sysroot/lib

cp /lib/ld-linux.so.2  /mnt/sysroot/lib

(以上所依赖的库名称不需要手工输入,可以使用脚本自动处理)

3.做bash

which bash查找bash

cp /bin/bash /mnt/sysroot/bin/

ldd /bin/bash(查找bash所依赖的库)

cp /lib/libtermcap.so.2 /mnt/sysroot/lib

4.做Inittab

cd /mnt/sysroot/etc

cp /etc/inittab ./

vim inittab

只需要 id 3 default

si::....

l3 .......这几行

可以使用.,$(d)删除掉剩余的内容

5.做rc.sysinit

mkdir /mnt/sysroot/etc/rc.d

vim /mnt/sysroot/etc/rc.d/rc.sysiniit

vim /mnt/rc.d/rc.sys

#!/bin/bash:`:

/bin/bash(主要是给用户一个shell)

chmod a+x rc.sysinit

执行sync同步,并且要多次执行

6.添加一些特殊的指令(如ls)

基本上,做完以上步骤就可以使用了,但是会发现新的系统,没有一些指令.因此,可以添加一些指令,更加便于操作,限于篇幅,仅仅演示添加ls指令.

which ls(查找ls指令)

cp /bin/ls /mt/sysroot/bin/

ldd /bin/ls (查找ls指令所依赖的库)

cd /mnt/sysroot/lib/

cp /lib/librt.so.1   ./

cp /lib/libacl.so.1   ./

cp /lib/libpthread.so.0   ./

cp /lib/libattr.so.1   ./

cp /lib/libdl.so.2    ./

Sync多次执行

三、测试过程

这样,制作就已经完成了,接下来,将Linux系统关闭或者暂停(如果不这样,会影响接下来的实验).将新的系统的硬盘替换为新添加的硬盘,然后启动系统.这样,就可以进入新的系统了.

四、其它问题

通过以上步骤,会发现步骤很繁琐,而且容易出错,因此可以考虑将制作过程使用脚本来完成.

#!/bin/bash

#####How to make an Operating System###

###step1:make the grub

grub-install --root-directory=/mnt /dev/sdb &>/root/rubbish

echo "Ok!the grub has been done!"

###step2:make the kernel

cp -f /boot/initrd-2.6.18-164.e15.img /mnt/boot/

cp -f /boot/vmlinuz-2.6.18-164.e15 /mnt/boot/

#need to make the file grub.conf

touch /mnt/boot/grub/grub.conf

echo "default=0">/mnt/boot/grub/grub.conf

echo"timeout=5">>/mnt/boot/grub/grub.conf

echo"title Linux_PE">>/mnt/boot/grub/grub.conf

echo"Kernel /vmlinuz-2.6.18-164.e15 ro root=/dev/sda2 rhgb quiet ">>/mnt/boot/grub/grub.conf

echo"initrd /initrd-2.6.18-164.e15.img">>/mnt/boot/grub/grub.conf

echo"Ok!The kerel has been done!"

###step3:make the init

cd /mnt/sysroot/

mkdir dev tmp etc proc sys lib bin sbin usr &>~/rubbish

chmod o+wt tmp

##copy the init files

cp /sbin/init /mnt/sysroot/sbin/

ldd /sbin/init|cut -d= -f1 -s >/root/tempfile

while read LINE;do

cp /lib/$LINE /mnt/sysroot/lib &>~/rubbish

done 

cp /lib/ld-linux.so2 /mnt/sysroot/lib

echo"Ok!the init has been done!"

###step4:make the bash

cp /bin/bash /mnt/sysroot/bin/

ldd /bin/bash |cut -d= -f1 -s >/root/tempfile

while read LINE;do

cp /lib/$LINE /mnt/sysroot/lib &>~/rubbish

done 

echo "Ok!The bash has been done!"

###step5:make the inittab

touch /mnt/sysroot/etc/inittab &>~/rubbish

grep "id:3"/etc/inittab >/mnt/sysroot/etc/inittab

grep "si::"/etc/inittab >>/mnt/sysroot/etc/inittab

grep "l3:"/etc/inittab >>/mnt/sysroot/etc/inittab

echo"Ok!The initatab has been done!"

###step6:make the bash

mkdir /mnt/sysroot/etc/rc.d &>~/rubbish

touch /mnt/sysroot/etc/rc.d/rc.sysinit &>~/rubbish

ehco "#!/bin/bash">/mnt/sysroot/etc/rc.d/rc.sysinit

echo "/bin/bash">>/mnt/sysroot/etc/rc.d/rc.sysinit

chmod a+x /mnt/sysroot/etc/rc.d/rc.sysinit

##sysnc serverl times

let I=1

for I in {1..10};do

sysnc

done

echo "Ok!The bash has been done!"

###step7:make the other oder:such as ls

cp /bin/ls /mnt/sysroot/bin/

ldd /bin/ls |cut -d= -f1 -s >~/tempfile

while read LINE;do

cp /lib/$LINE /mnt/sysroot/bin/ &>~/rubbish

done 

echo "alias ls=`ls --color=tty`">>/mnt/sysroot/etc/rc.d/rc.sysinit

let P=1

for P in {1..10};do

sync

done

echo "Great!Job has been finished!"

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值