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][email protected][/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 就可以啟動了。很是奇怪。
請教高手指點。
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 就可以啟動了。很是奇怪。
請教高手指點。