Linux使用大全.rar
源代码在线查看: 启动软盘的制作.txt
启动软盘的制作
本文仅提供最简单的启动盘制作方案,仅供参考。
主要分为三大步:
一、制作root文件系统
二、编译内核
三、整合启动盘。
开始制作boot/root盘:
一、制作root文件系统:
1、vi /etc/lilo.conf, 加入一行 ramdisk=4096 (创建虚拟磁盘)
2、mke2fs -m 0 -N 2000 /dev/ram0
(给虚拟磁盘创建文件系统,如果用其他设备,把/dev/ram0用对应的设备名替换即可。)
3、mount -t ext2 /dev/ram0 /mnt (挂接ramdisk到 /mnt目录)。
4、在 /mnt 即ramdisk上创建如下目录:
dev -- 设备文件目录
proc -- proc文件系统必须的目录
etc -- 设置文件
sbin -- 系统命令文件
bin -- 基本的二进制文件
lib -- 共享库文件
mnt -- 其他文件系统的挂接点
usr -- 应用程序文件
5、拷贝设备文件:
cp -dpR /dev/fd[01]* /mnt/dev
cp -dpR /dev/tty[0-6] /mnt/dev
cp -dpR /dev/console /mnt/dev
cp -dpR /dev/kmem /mnt/dev
cp -dpR /dev/mem /mnt/dev
cp -dpR /dev/null /mnt/dev
cp -dpR /dev/ram0 /mnt/dev
cp -dpR /dev/hd* /mnt/dev
6、拷贝配置文件:
cp -R /etc/fstab /mnt/etc/fstab
cp -R /etc/rc /mnt/etc/fstab
cp -R /etc/inittab /mnt/etc/inittab
cp -R /etc/gettydefs /mnt/etc/gettydefs
cp -R /etc/group /mnt/etc/group
cp -R /etc/issue /mnt/etc/issue
cp -R /etc/nsswitch.conf /mnt/etc/nsswitch.conf
cp -R /etc/passwd /mnt/etc/passwd
cp -R /etc/profile /mnt/etc/profile
cp -R /etc/shells /mnt/etc/shells
cp -R /etc/termcap /mnt/etc/termcap
cp -R /etc/pam.d/other /mnt/etc/pam.d/other
其中/mnt/etc/fstab的内容为:
#!/bin/sh
/bin/mount -av
/bin/hostname myhost
/mnt/etc/fstab的内容为:
/dev/ram0 / ext2 defaults
/dev/fd0 / ext2 defaults
/proc /proc proc defaults
/mnt/etc/inittab的内容为:
id:2:initdefault:
si::sysinit:/etc/rc
1:2345:respawn:/sbin/mingetty tty1
2:23:respawn:/sbin/mingetty tty2
/mnt/etc/pam.d/other的内容为:
OTHER auth optional /lib/security/pam_permit.so
OTHER account optional /lib/security/pam_permit.so
OTHER password optional /lib/security/pam_permit.so
OTHER session optional /lib/security/pam_permit.so
/mnt/etc/nsswitch.conf的内容为:
passwd: files
shadow: files
group: files
hosts: files
services: files
networks: files
protocols: files
rpc: files
ethers: files
netmasks: files
bootparams: files
automount: files
aliases: files
netgroup: files
publickey: files
7、拷贝基本命令文件:
cp -R /bin/ash /mnt/bin/ash
(创建连接ln -s /mnt/bin/ash /mnt/bin/sh)
cp -R /bin/login /mnt/etc/login
cp -R /bin/hostname /mnt/bin/hostname
cp -R /bin/mount /mnt/etc/mount
cp -R /bin/ls /mnt/bin/ls
cp -R /bin/ln /mnt/etc/ln
cp -R /bin/cat /mnt/bin/cat
cp -R /bin/umount /mnt/etc/umount
cp -R /bin/more /mnt/bin/more
cp -R /bin/ps /mnt/etc/ps
cp -R /bin/pwd /mnt/bin/pwd
cp -R /bin/grep /mnt/bin/grep
8、拷贝常用系统命令文件:
cp -R /sbin/init /mnt/sbin/init
(创建连接ln -s /mnt/sbin/init /mnt/sbin/telinit)
cp -R /sbin/halt /mnt/sbin/halt
(创建连接ln -s /mnt/sbin/halt /mnt/sbin/reboot)
cp -R /sbin/shutdown /mnt/sbin/shutdown
cp -R /bin/mingetty /mnt/bin/mingetty
9、拷贝库文件:
objcopy --strip-all /lib/ld–2.0.7.so /mnt/lib/ld–2.0.7.so(注:ld–2.0.7.so中
的2.0.7为版本号,不同版本版本号不同。可以通过ldd命令来查看所需要的库文件,例如ldd /sbin/login)
创建连接(ln -s /mnt/lib/ld–2.0.7.so /mnt/lib/ld–linux.so.2 )ld–linux.so.2 >ld–2.0.7.so
objcopy --strip-all /lib/libc–2.0.7.so /mnt/lib/libc–2.0.7.so
创建连接libc.so.6 –> libc–2.0.7.so
objcopy --strip-all /lib/libcom_err.so.2.0 /mnt/lib/libcom_err.so.2.0
创建连接libcom_err.so.2 –> libcom_err.so.2.0
objcopy --strip-all /lib/libcrypt–2.0.7.so /mnt/lib/libcrypt–2.0.7.so
创建连接libcrypt.so.1 –> libcrypt–2.0.7.so
objcopy --strip-all /lib/libdl–2.0.7.so /mnt/lib/libdl–2.0.7.so
创建连接libdl.so.2 –> libdl–2.0.7.so
objcopy --strip-all /lib/libnss_files–2.0.7.so /mnt/lib/libnss_files–2.0.7.so
创建连接libnss_files.so.1 –> libnss_files–2.0.7.so
objcopy --strip-all /lib/libpam.so.0.64 /mnt/lib/libpam.so.0.64
创建连接libpam.so.0 –> libpam.so.0.64
objcopy --strip-all /lib/security/pam_permit.so /mnt/lib/security/pam_permit.so
10、创建其他相关文件或目录
mkdir -p /mnt/var/{log,run}
touch /mnt/var/run/utmp
11、在/etc目录下生成ld.so.cache
ldconfig -r /mnt
12、创建root用户的主目录,并拷贝必须的用户配置文件。
13、卸载ramdisk文件系统:umount /mnt
14、压缩已经创建好的root文件系统为一个镜象文件:
dd if=/dev/ram0 bs=1k | gzip -v9 > /root/rootfs.gz
二、编译内核并压缩为zImage文件……,把它拷贝到/boot下……(略)。敝人的内核大小
为398kb。
三、整合软盘:
1、创建LILO的配置文件,其内容如下:
boot =/dev/fd0
install =/boot/boot.b
map =/boot/map
read-write
backup =/dev/null
compact
image = KERNEL
label = Bootdisk
root =/dev/fd0
并保存为/etc/bdlilo.conf。
2、用ls -s /boot/zImage文件的大小(占用多少块,我的为398块)。
3、 插入一张新软盘,执行如下命令:mke2fs -N 24 -m 0 /dev/fd0 KERNEL_BLOCKS
(其中KERNEL_BLOCKS=398+50=448),即mke2fs -N 24 -m 0 /dev/fd0 448
本部是在软盘上创建文件系统
4、准备启动文件:
挂接上软盘到/mnt目录 mount /dev/fd0 /mnt
并删除lost+found目录 rm -rf /mnt/lost+found
创建boot、dev目录 mkdir /mnt/{boot,dev}
拷贝设备文件到软盘 cp -R /dev/{null,fd0} /mnt/dev
拷贝启动必须文件 cp /boot/boot.b /mnt/boot
cp /boot/map /mnt/boot
拷贝lilo配置文件到软盘 cp /etc/bdlilo.conf /mnt
拷贝内核文件到软盘 cp /boot/zImage /mnt
5、往软盘上写入引导信息:lilo -v -C bdlilo.conf -r /mnt
6、往软盘写入root文件系统镜像文件:
dd if=rootfs.gz of=/dev/fd0 bs=1k seek=KERNEL_BLOCKS
(KERNEL_BLOCKS在此处为488)
到此为止我们的启动软盘已经做好,但功能比较简单,如需要其他的功能,只需要考入对
应的文件即可。
本文主要参考LINUX-HOWTO中的bootdisk-howto。
有错误的地方希望大家指出,有好文章希望大家分享。