制作微型linux主机,打造个人专属的微型Linux--具体实现篇

本文详细介绍了如何从头开始打造个人专属的微型Linux系统。通过分区、格式化、挂载、安装bootloader(grub)、移植系统必备程序、内核及initrd的移植等步骤,一步步构建一个精简版的Linux环境。文章以CentOS6.2 minimal为基础,展示了如何创建init配置文件、系统初始化脚本,并移植了bash和一些基础命令,最终形成一个能运行基本命令的微型Linux系统。
摘要由CSDN通过智能技术生成

打造个人专属的微型Linux--具体实现篇

[日期:2012-07-09]

来源:Linux社区

作者:lustlost

[字体:大 中 小]

分区完成后进行格式化,命令如下

[root@localhost ~]# partprobe /dev/sdb

[root@localhost ~]# mkfs.ext2 /dev/sdb1

[root@localhost ~]# mkfs.ext3 /dev/sdb2

[root@localhost ~]# mkswap /dev/sdb3

step3:

在宿主机上挂在boot分区和根分区

[root@localhost ~]# mkdir /mnt/{boot,sysroot} –p

[root@localhost mnt]# mount /dev/sdb1 /mnt/boot/

[root@localhost mnt]# mount /dev/sdb2 /mnt/sysroot/

下面会将宿主系统的内核,程序等需要的文件移植到这2个目录

step4:

安装bootloader,这里用比较常用的grub作为引导程序

[root@localhost mnt]# grub-install --root-directory=/mnt /dev/sdb #这里指定root目录时,会自动搜寻此目录下的boot目录,此命令就直接将grub全部安装完成,包括第一段的MBR和第二段放置在boot目录下的grub程序

Probing devices to guess BIOS drives. This may take a long time.

Installation finished. No error reported.

This is the contents of the device map /mnt/boot/grub/device.map.

Check if this is correct or not. If any of the lines is incorrect,

fix it and re-run the script `grub-install'.

(fd0)    /dev/fd0

(hd0)    /dev/sda

(hd1)    /dev/sdb

安装好grub后,等放置好内核后再回来配置grub

step5:

在根目录下移植系统必须的一些基本的程序

首先创建根目录下所必须的目录

[root@localhost sysroot]# mkdir -p root home proc sys dev etc/rc.d bin sbin lib var tmp opt boot misc mnt media usr

然后先移植init这个系统父进程,这个进程的配置文件为/etc/inittab,加载配置文件后会执行/etc/rc.d/rc.sysinit这个系统初始化脚本来对系统进行一系列的操作

注意移植的时候要移植到相对应的目录

[root@localhost sysroot]# cp /sbin/init /mnt/sysroot/sbin/

除了主程序,还要移植相应的库文件,init所依赖的库文件可以使用ldd命令来查看

[root@localhost sysroot]# ldd /sbin/init

linux-gate.so.1 =>  (0x00ca5000)

libnih.so.1 => /lib/libnih.so.1 (0x00514000)

libnih-dbus.so.1 => /lib/libnih-dbus.so.1 (0x00a1e000)

libdbus-1.so.3 => /lib/libdbus-1.so.3 (0x006a9000)

libpthread.so.0 => /lib/libpthread.so.0 (0x00d92000)

librt.so.1 => /lib/librt.so.1 (0x0020e000)

libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x005e1000)

libc.so.6 => /lib/libc.so.6 (0x00217000)

/lib/ld-linux.so.2 (0x0080c000)

查询到所需的库文件后,将这些库文件移植到对应的目录。

[root@localhost sysroot]# cp /lib/libnih.so.1 /lib/libnih-dbus.so.1 /lib/libdbus-1.so.3 /lib/libpthread.so.0 /lib/librt.so.1 /lib/libgcc_s.so.1 /lib/libc.so.6 /mnt/sysroot/lib/

用同样的方法再移植bash

[root@localhost sysroot]# cp /bin/bash /mnt/sysroot/bin/

[root@localhost bin]# ln -s bash sh #不要忘了为bash创建链接文件

[root@localhost sysroot]# ldd /bin/bash

linux-gate.so.1 =>  (0x004c4000)

libtinfo.so.5 => /lib/libtinfo.so.5 (0x00e05000)

libdl.so.2 => /lib/libdl.so.2 (0x00c1d000)

libc.so.6 => /lib/libc.so.6 (0x00110000)

/lib/ld-linux.so.2 (0x00954000)

[root@localhost sysroot]# cp /lib/libtinfo.so.5 /lib/libdl.so.2 /lib/ld-linux.so.2 /mnt/sysroot/lib/

/lib/libc.so.6这个库文件是init和bash都需要使用到的,之前移植init时已经cp过去了,这次就不用重复cp了

其它需要用到的程序都可以使用这种方法进行移植,这里只提供了最基本的bash,其它程序可以按照自己的需要进行移植

这里我再移植了一个ls命令,步骤这里就不再罗列出了,等制作好后登录到这个微型linux后,出了bash内置的命令外,我将只能在bash下使用ls命令

之前移植了init后,还没有创建init的配置文件,接下来就先创建init配置文件inittab

[root@localhost bin]# vim /mnt/sysroot/etc/inittab

写入下面2行

id:3:initdefault:

si::sysinit:/etc/rc.d/rc.sysinit

表示默认启动的运行级别为3,和系统开机时初始化脚本的位置

创建系统初始化脚本

[root@localhost bin]# vim /mnt/sysroot/etc/rc.d/rc.sysinit

#!/bin/bash

#

echo -e "\t hello world ,welcome to the mini linux by lustlost"

/bin/bash

[root@localhost bin]# chmod +x /mnt/sysroot/etc/rc.d/rc.sysinit #不要忘了给脚本加上执行权限

step6:

[root@localhost dev]# yum groupinstall "Development Libraries" -y

[root@localhost dev]# yum groupinstall "Development Tools" -y

好了,程序都移植好了,下面就可以移植内核和initrd了

我们直接使用宿主机上的内核(之前忘了说了,宿主机是最新的CentOS6.2 minimal版本,使用的是内核版本是2.6.32-220.el6.i686)

[root@localhost ~]# cp /boot/vmlinuz-2.6.18-308.el5 /mnt/boot/vmlinuz #内核的移植很简单,直接cp就行了

接下来要移植引导内核的initrd.img了。如果宿主机和要移植的微型linux的分区不一样的话,解包initrd编辑一下里面的init修改这一行

mkrootdev -t ext3 -o defaults,ro /dev/sda2

确保这一行指定的根文件系统是对应的,然后重新打包

[root@localhost ~]# zcat /boot/initrd-2.6.18-164.el5.img | cpio –id #解包命令

[root@localhost tmp]# find . | cpio -o -H newc --quiet | gzip > /mnt/boot/initrd.gz #重新打包命令

然后继续移植。。。我这里宿主机和微型linux分区是一样的,所以就重新打包演示了

[root@localhost tmp]# cp /boot/initrd-2.6.18-308.el5.img /mnt/boot/initrd.img0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值