diy产品可以用linux系统吗,手把手带你自制Linux系统之二简易Linux的制作 -电脑资料...

手把手带你自制Linux系统之二 简易Linux的制作

开始前需要完成一些准备工件,详见:手把手带你自制Linux系统之一 准备工作

本文利用CentOS5.5自带内核制作一个可以正常启动的Mini Linux,

打开上一篇准备工作中创建的CentOS虚拟机,为另一台虚拟机MiniLinux添加最小Linux所需要的文件系统。

1. 创建分区

为准备好的Minilinux磁盘创建两个主分区,大小分别为20M和512M。

使用fdisk命令创建分区详细过程:fdisk /dev/hda

创建第一个20M分区依次输入:n --> p --> 1 -->--> +20M

这几个输入代表的意思分别为:

n: add a new partition

p: primary partition

1: Partition number (1-4)

: Enter键,选择起始柱面,First cylinder (1-44384, default 1)

+20M: 选择结柱面,可以是使用+size表示希望创建的磁盘大小,Last cylinder or +size or +sizeM or +sizeK (1-44384, default 44384):

创建第二个512M分区依次输入:n --> p --> 2 -->--> +512M

保存分区表退出w

w: write table to disk and exit

保存后,让操作系统重新读取分区表partprobe /dev/hda

2. 格式化分区

格式化两个分区为etx3格式mke2fs -j /dev/hda1mke2fs -j /dev/hda2

3. 挂载分区

/mnt下创建两个目录,分别用来挂载/dev/hda1/和/dev/hda2/mkdir /mnt/{boot,sysroot}mount /dev/hda1 /mnt/boot/mount /dev/hda2 /mnt/sysroot/

4. 添加Linux内核文件

拷贝/boot/目录下CentOS自带内核cp /boot/vmlinuz-2.6.18-194.el5 /mnt/boot/vmlinuz

5. 添加initrd文件

拷贝/boot/目录下initrd文件cp /boot/initrd-2.6.18-194.el5.img /mnt/boot/initrd.img

6. 安装grub

使用grub-install 命令安装grub-install --root-directory=/mnt /dev/hda

编辑grub配置文件vi /mnt/boot/grub/grub.conf

内容为:default=0timeout=5title MiniLinux (2.6.18-194.el5) root (hd0,0) kernel /vmlinuz root=/dev/hda2 initrd /initrd.img

7. 添加init和bash

创建根文件系统目录结构cd /mnt/sysrootmkdir proc dev lib bin sbin home root etc/rc.d usr/{lib,bin,sbin} var/{log,run,lock} tmp mnt sys -pv

复制init和bashcp /sbin/init /mnt/sysroot/sbin/cp /bin/bash /mnt/sysroot/bin/

查看init依赖的库文件[root@localhost sysroot]# ldd /sbin/init linux-gate.so.1 => (0x00d7d000) libsepol.so.1 => /lib/libsepol.so.1 (0x00531000) libselinux.so.1 => /lib/libselinux.so.1 (0x00579000) libc.so.6 => /lib/libc.so.6 (0x00380000) libdl.so.2 => /lib/libdl.so.2 (0x004c8000) /lib/ld-linux.so.2 (0x0035d000)

复制这几个依赖的库文件cp /lib/libsepol.so.1 lib/cp /lib/libselinux.so.1 lib/cp /lib/libc.so.6 lib/cp /lib/libdl.so.2 lib/cp /lib/ld-linux.so.2 lib/

查看bash依赖的库文件[root@localhost sysroot]# ldd /bin/bash linux-gate.so.1 => (0x0071d000) libtermcap.so.2 => /lib/libtermcap.so.2 (0x033a8000) libdl.so.2 => /lib/libdl.so.2 (0x004c8000) libc.so.6 => /lib/libc.so.6 (0x00380000) /lib/ld-linux.so.2 (0x0035d000)

复制这几个依赖的库文件cp /lib/libtermcap.so.2 lib/cp /lib/libdl.so.2 lib/cp /lib/libc.so.6 lib/cp /lib/ld-linux.so.2 lib/

使用chroot测试一下,如果可以正常切换,出现bash提示符,说明上面的步骤没有问题chroot /mnt/sysroot/

8. 编辑init配置文件vi /mnt/sysroot/etc/inittab

添加内容:id:3:initdefault:si::sysinit:/etc/rc.d/rc.sysinit

定义系统默认启动级别为3,系统初始化时运行/etc/rc.d/rc.sysinit,手把手带你自制Linux系统之二简易Linux的制作》(https://www.unjs.com)。

inittab文件格式可以man 5 inittab查看,也可以参考这里

9. 编辑rc.sysinit文件vi /mnt/sysroot/etc/rc.d/rc.sysinit

内容为:#!/bin/bash#echo -e "\t Welcome to \033[31mMy MiniLinux\033[0m."/bin/bash

为rc.sysinit添加可执行权限chmod +x /mnt/sysroot/etc/rc.d/rc.sysinit

10. 同步对文件系统的修改到磁盘sync

11. 验证MiniLinux

将正在使用的CentOS虚拟机挂起,打开虚拟机中的MiniLinux。

首先,会看到grub选择界面

系统启动后会运行bash,进入bash命令提示符后,说明系统可以正常启动

至此,一个可以正常启动的linux就算完成了。但是这个系统除了bash没有其他命令,甚至连关机和重启命令都没有。今后将会逐步对这个mini linux进行完善,添加上你想要的功能,最终定制一个你需要的linux。

附录

如果开启MiniLinux后提示启动失败,如图所示

那么就检查一下MiniLinux虚拟机的硬盘是否连接在 IDE 0:0节点

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值