制作口袋U盘Linux
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
制作口袋U盘Linux
系统的组成: MBR(grub) ---> 内核+应用程序
系统的启动流程:
开机-->Bois--->硬件自检---> int 19中断,读取MBR(grub第一阶段的引导代码)----> 加载内核,包括内核镜像vmlinuz,初始化内存盘initrd.img--->产生第一个进程 init ---> 读取/etc/inittab,得到系统的运行级别---> init 运行 /etc/rc.d/rc.sysinit,对系统进行初始化(生成硬件设备文件/dev/*,读取fstab对各个分区进行挂载)--->根据运行级别运行对应的服务脚本 /etc/rc.d/rcX.d---->运行rc.local
/---> gdm
--> login
\---> 文本模式
制作的基本步骤包含: MBR , 拷贝内核 ,裁减应用程序 ,手工编写fstab
具体步骤:
1、制定分区方案,进行分区
sdb1 / ext3 500M <---grub的配置文件,内核等放在/boot
sdb2 vfat 剩余空间
dd if=/dev/zero of=/dev/sdb bs=1k count=512
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 127 492094 83 Linux
/dev/sdb2 128 1018 3452625 b W95 FAT32
格式化
2、挂载sdb1并且安装第一个软件包filesystem
rpm -ivh --root=/mnt/usb --nodeps filesystem-2.4.0-2.i386.rpm
3、安装需要的软件包
[精简功能]
bash <--shell
coreutils <--核心的常用命令ls
util-linux <--系统管理命令mount,kill,mkfs
SysVinit <--系统关机,级别管理命令 init reboot
procps <--进程管理命令ps free
portmap
vim-enhanced <--文本编辑工具
setup <--许多配置文件的来源/etc/passwd
shadow-utils <-- useradd
passwd <-- passwd
可选:
net-tools <--网络命令ifconfig
openssh-clients <---ssh客户端
gpm <---文本模式下鼠标工具
tar <--打包压缩
elinks <--文本模式下的浏览器
nfs-utils
# yum install -y --installroot=/mnt/usb bash coreutils util-linux SysVinit procps portmap vim-enhanced setup shadow-utils passwd
如果发现某个包漏了没安装,怎么去补装?
# vim /mnt/usb/etc/yum.repos.d/rhel-debuginfo.repo
[Server]
name=Server
baseurl=file:///share/rhel_source/Server
enabled=1
gpgcheck=0
# yum install ....
4、把usb存储驱动添加到自定义initrd.img中
mkinitrd --with usb_storage /mnt/usb/boot/initrd.img `uname -r`
<---initrd.img会有一个小报错 ?
1015 cp /mnt/usb/boot/initrd.img /tmp/test/initrd.img.gz
1016 gunzip /tmp/test/initrd.img.gz
1020 cpio -i --make-directories < /tmp/test/initrd.img
1022 rm -f /tmp/test/initrd.img
1024 vim init
echo "Loading usb-storage.ko module" <--把重复的5行删除
insmod /lib/usb-storage.ko
echo Waiting for driver initialization.
stabilized /proc/bus/usb/devices
echo Waiting for driver initialization.
1026 find . | cpio -c -o > /tmp/initrd.img
1028 gzip -9 /tmp/initrd.img
1029 mv /tmp/initrd.img.gz /mnt/usb/boot/initrd.img
5、拷贝内核以及对应内核涉及
到驱动模块
cp /boot/vmlinuz-2.6.18-128.el5 /mnt/usb/boot/vmlinuz
cp -r /lib/modules/2.6.18-128.el5/ /mnt/usb/lib/modules/
6、安装grub,并且编写grub配置文件,而且把grub第一阶段的代码安装到MBR
# rpm -ivh --root=/mnt/usb/ --nodeps --force --nopre --nopost grub-0.97-13.2.i386.rpm
# vim /mnt/usb/boot/grub/grub.conf
default=0
timeout=8
title My USB Linux
root (hd0,0)
kernel /boot/vmlinuz ro root=/dev/sdb1
initrd /boot/initrd.img
# grub-install --root-directory=/mnt/usb --recheck /dev/sdb
grep: /mnt/usb/boot/grub/device.map: 没有那个文件或目录
mv: 无法 stat “/mnt/usb/boot/grub/device.map”: 没有那个文件或目录
Probing devices to guess BIOS drives. This may take a long time.
Installation finished. No error reported. <---看到这个就代表成功
This is the contents of the device map /mnt/usb/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/sdb
修改/mnt/usb/boot/grub/device.map
(hd0) /dev/sdb
7、编写fstab
/dev/sdb1 / ext3 defaults,noatime 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
8、拷贝bash配置文件到root家目录
# cp /etc/skel/.bash* /mnt/usb/root/
帐号登录以及帐号密码
# chroot /mnt/usb/
[root@dns /]# passwd root
Changing password for user root.
passwd: Authentication token manipulation error
# pwconv 《--首先生成shadow文件
[root@dns /]# passwd root
Changing password for user root.
New UNIX password:
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
9、删除一些多余文件
[root@dns 06]# rm -rf /mnt/usb/usr/share/doc/
[root@dns 06]# rm -rf /mnt/usb/usr/share/games
10、配置网络
# vim /mnt/usb/etc/modprobe.conf
alias eth1 8139too
/etc/sysconfig/network
/etc/sysconfig/network-script/ifcfg-eth?
/etc/hosts
/etc/resolv.conf
所有步骤完毕之后sync