免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7719 | 回复: 17

[原创]自己做个迷你型linux [复制链接]

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-04-19 06:20:00
发表于 2006-04-22 17:18 |显示全部楼层
hda1----新装的RH9
hdc1----64M的硬盘,生成的小型linux就装在这个盘上,还未分区格式化。
环境:ms的虚拟机5.1版。

先重新编译内核,把不需要的全部去掉,这样模块也只有几M了。编译后生成了
内核:vmlinuz-2.4.20-8custom
initrd:initrd-2.4.20-8custom.img(这个没用到,在GRUB中使用它反而不能启动了,提示要加init内核参数。)
可加载模块:/lib/modules/2.4.20-8custom

fdisk /dev/hdc 分区,并激活,保存后退出。
mkext2fs /dev/hdc1
mkdir /mnt/hd2
mount /dev/hdc1 /mnt/hd2
mkdir /mnt/hd2/boot/grub -p
cp /boot/vmlinuz.2.4.20-8custom /mnt/hd2/boot/ -a
cp /boot/initrd.2.4.20-8custom /mnt/hd2/boot/ -a
cp /boot/grub/stage? /mnt/hd2/boot/grub/ -a
cp /boot/grub/grub.conf /mnt/hd2/boot/grub/ -a
cp /boot/grub/e2fs_stage1_5 /mnt/hd2/boot/grub/ -a
然后运行:grub
root (hdc1,0)
setup (hdc)
quit
这样,小硬盘就能启动了(不过进不了系统,内核启动完后就死了)。但是记得要配置一下grub.conf,改成:
default=1
timeout=10
title linux
        root (hd0,0)
        kernel /boot/vmlinuz-2.4.20-8custom ro root=/dev/hda1
不能够加入initrd,要不然会出错的,不清楚原因。有谁知道的可以告诉我吗?[email]cexoyq1020@163.com[/email],谢谢了。

制作文件系统
建立目录:/home,/mnt,/proc,/lib,/sbin,/bin,/root,/etc,/dev
需要的文件:/dev
/dev/console
系统控制台设备,非常重要。
/dev/fd0
第一个软驱
/dev/hda
/dev/hda[1-8]
IDE硬盘及分区
/dev/initctl
实际上是一个FIFO设备,跟init有关(切换运行级别时用于新init与原init通信)
/dev/initrd
Initial RAM disk
/dev/input
(目录)Input core(包括游戏杆、鼠标等)
/dev/kmem
内核虚拟内存
/dev/loop[0-7]
Loopback设备
/dev/mem
访问物理内存
/dev/null
NULL设备
/dev/psaux
PS/2鼠标
/dev/ptmx
UNIX98 PTY master
/dev/pts
(目录)UNIX98 PTY slaves
/dev/ptyp[0-7]
伪终端主设备(远程登录使用)
/dev/ram[0-7]
/dev/ramdisk
/dev/ram
RAM Disk设备。至少/dev/ram0是应用initrd机制所必须的。
/dev/ramdisk链接到/dev/ram0,是为了兼容老版本内核而保留的。
/dev/ram链接到/dev/ram1。
/dev/random
随机数发生器
/dev/sda
/dev/sda[1-8]
SCSI磁盘及分区设备
/dev/shm
共享内存设备
/dev/systty
指向系统tty设备的符号链接,一般是tty0。
/dev/tty
当前TTY设备
/dev/tty[0-7]
虚控制台(Virtual console)
/dev/ttyp[0-7]
伪终端从设备
/dev/ttyS0
/dev/ttyS1
串口(COM1和COM2)
/dev/urandom
速度更快、安全性较差的随机数发生器
/dev/zero
零设备,只能读0出来
需要的文件:/etc
etc/default
(目录)某个命令(比如useradd)的缺省设置(man useradd(8))
/etc/ld.so.cache
由ldconfig命令根据/etc/ld.so.conf文件产生
/etc/ld.so.conf
库文件路径配置文件,ldconfig命令根据该配置文件生成/etc/ld.so.cache
/etc/localtime
本地时间、时区设置
/etc/login.defs
全局缺省设置
/etc/fstab
文件系统列表(man fstab(5))
/etc/group
组文件(man group(5))
/etc/hosts
列出主机名和IP地址(man hosts(5))
/etc/init.d
符号链接到/etc/rc.d/init.d
/etc/initlog.conf
Initlog日志配置文件(man initlog(8))
/etc/inittab
Init配置文件(man inittab(5))
/etc/ioctl.save
该文件包含了用于单用户模式的串口和终端参数,因为这些参数是由getty设置的,
而在单用户模式时没有运行getty,所以用该文件保存参数。单用户模式对系统安全
是个威胁,我们应该禁止使用单用户模式,因此这个文件实际上并没有必要复制过
来。
/etc/issue
登录信息和标识文件(man issue(5))
/etc/modules.conf
模块的配置文件(man modules.conf(5))
/etc/mtab
已经挂载的文件系统列表(man mount(8))
/etc/nsswitch.conf
Name Service Switch的配置文件(配置名称服务数据源和查询的顺序)(man nss
witch.conf(5))
/etc/pam.d
放置PAM配置文件的目录(有关PAM请参考5.5节)
/etc/passwd
用户口令文件(man passwd(5))
/etc/profile
系统环境变量和登录配置文件
/etc/rc.d
放置启动脚本的目录
/etc/services
列出可用的网络服务及其端口(man services(5))
/etc/termcap
终端(terminal)功能数据库(man termcap(5))
另外,跟网络参数有关的文件也要一一拷贝过来。要不然就得手动配置网络参数了。

需要的文件:/lib
用“ldd 命令名称”   来取得命令所需要的LIB库,然后拷贝过来(要建立相应的目录)。

/bin和/sbin:根据自己的需要拷贝相应的文件。我把iptables,tc等拷贝过去。

需要的文件:/lib/modules
整个拷贝重新编译内核后的整个"2.4.20-8custom"目录,因为经过了裁剪,所以我的只有5M,不大可以完全使用。这个很重要,网络的驱动,
iptables,tc等都靠它了。

下载busybox并编译安装。[url]http://www.busybox.net/downloads[/url]
下载最新版的busybox-1.1.2.tar.bz2到/root
解压后进入busybox-1.1.2
make menuconfig        -----选自己需要的命令,也可以从源RH9中拷贝,不过那样就要拷LIB,麻烦。记得要选静态编译,还有init.
make
makeinstall
完成后在目录下生成“_install”目录,把所有目录及文件拷贝到小硬盘中。

重新配置/etc/inittab,/etc/fstab,/etc/rc.d/rc.sysinit
/etc/inittab
::sysinit:/etc/rc.d/rc.sysinit
::askfirst:-/bin/sh
tty2::askfirst:-/bin/sh
tty3::askfirst:-/bin/sh
tty4::askfirst:-/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a

/etc/fstab
proc        /proc        proc        defaults        0 0

/etc/rc.d/rc.sysinit
#!/bin/sh
mount -a
添加自己的启动脚本。

然后关机,在虚拟机中把小硬盘设置成第一个硬盘,也就是(hd0,0)
就可以看到你的mini-linux在跑了。

问题:
做出来的系统每次启动后,网卡驱动是加载了(因为我编译在内核中),但是用"ifconfig eth0"却看不到它的配置信息,可能是未配置,
而所有的配置文件/etc/都已经拷贝了。只能用"ifconfig eth0 10.0.0.103"配置一下才能使用网络。

在grub中不能使用initrd参数。出错提示要加init内核参数,而加了init参数也不行。去掉initrd 就可以启动了。很是奇怪。
请教高手指点.

[[i] 本帖最后由 cexoyq 于 2006-4-22 17:22 编辑 [/i]]

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-04-19 06:20:00
发表于 2006-04-22 17:19 |显示全部楼层
还有一个问题就是,制成的小系统的文件系统变成了只读的,
用VI时提示只读,不可写入.
请教高手指点.

论坛徽章:
0
发表于 2006-04-22 20:30 |显示全部楼层
我想应该有两种方法吧!
一:使用wq!强行写入退出是可以的
二:你可修改用户的权限,你只要给当前用户写的权限就好了,
我想给权限方法太多了;随便一种就行!

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-04-19 06:20:00
发表于 2006-04-22 22:44 |显示全部楼层
原帖由 lnnulinux 于 2006-4-22 20:30 发表
我想应该有两种方法吧!
一:使用wq!强行写入退出是可以的
二:你可修改用户的权限,你只要给当前用户写的权限就好了,
我想给权限方法太多了;随便一种就行!


不是强行写入的问题.
文件系统是只读的.

论坛徽章:
0
发表于 2006-04-22 23:45 |显示全部楼层
我也刚做了一个小系统,不过是用linuxsir里youbest的方法,文件只读的问题试试把

kernel /boot/vmlinuz-2.4.20-8custom ro root=/dev/hda1
改成
kernel /boot/vmlinuz-2.4.20-8custom  root=/dev/hda1 rw

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-04-19 06:20:00
发表于 2006-04-22 23:58 |显示全部楼层
"我也刚做了一个小系统,不过是用linuxsir里youbest的方法,文件只读的问题试试把

kernel /boot/vmlinuz-2.4.20-8custom ro root=/dev/hda1
改成
kernel /boot/vmlinuz-2.4.20-8custom  root=/dev/hda1 rw "

我去试哈.谢谢.
在kernel中,"ro"表示的是什么意思?为什么你的没有此语句?

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-04-19 06:20:00
发表于 2006-04-23 00:00 |显示全部楼层
我也刚做了一个小系统,不过是用linuxsir里youbest的方法,文件只读的问题试试把

可不可以公布下链接?

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-04-19 06:20:00
发表于 2006-04-23 00:01 |显示全部楼层
kernel /boot/vmlinuz-2.4.20-8custom ro root=/dev/hda1 rw
可用.谢谢了.
但是为什么要加"rw"呢?有没有资料介绍?

论坛徽章:
0
发表于 2006-04-23 06:32 |显示全部楼层
rw readwrite
ro readonly

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-04-19 06:20:00
发表于 2006-04-23 09:16 |显示全部楼层
哇.........谢谢斑猪......
努力.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP