介绍关于初学linux的一些经历和学习方面的

源代码在线查看: 启动软盘的制作.txt

软件大小: 192 K
上传用户: xuhuizi
关键词: linux 方面
下载地址: 免注册下载 普通下载 VIP

相关代码

				启动软盘的制作
				
				 
				
				
				本文仅提供最简单的启动盘制作方案,仅供参考。
				主要分为三大步:
				一、制作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。
				
				
				有错误的地方希望大家指出,有好文章希望大家分享。
				 
							

相关资源