1 * <lisp>(setq Title "自己制作usb上的linux系统")</lisp>
2 - 作者: [[stoneszone.net][石磊]]
11 $mkdir /usr/local/embase/
19 - 编译busybox为静态连接,编译静态会报错,要修改发出警报的makefile和其中一个文件,关掉警报。
20 - 选择Installation Options下 Don't use /usr,否则会安装到宿主机上
29 完成后会在busybox目录下生成_install目录。
35 $cd /usr/local/embase/rootfs
36 $mkdir etc usr var tmp proc home root lib
43 $cp -R busybox/_install/* /usr/local/embase/rootfs
50 $cp -R/dev /usr/local/embase/rootfs
53 也可以用mknod手工建立,如创建/dev/console,字符设备c, 主设备号5,次1
61 **** 3.4.1 /etc/init.d 目录
64 $cp -R busybox-1.00/examples/bootflopyp/etc/init.d /usr/local/embase/rootfs/etc/
67 **** 3.4.2 /etc/busybox.conf 为空文件
72 /dev/fd0 / ext2 defaults 0 0
73 none /proc proc defaults 0 0
74 /dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0
75 /dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
84 **** 3.4.5 /etc/inittab
85 拷贝busybox的示范inittab指etc
93 **** 3.4.7 /etc/motd mtab
95 **** 3.4.8 /etc/passwd
98 root::0:0:root:/root:/bin/ash
101 **** 3.4.9 /etc/profile
103 <source lang="shell">
104 # /etc/profile: system-wide .profile file for the Bourne shells
107 export PS1="[\u@\h \w]\$"
116 **** 3.4.10 /etc/resolv.conf(可选)
118 <source lang="shell">
119 nameserver 202.96.209.5
120 nameserver 202.96.209.6
123 **** 3.4.11 /etc/shadow 和 /etc/shadow-
124 口令文件,其中的计算后口令字串从本机拷贝。
127 <source lang="shell">
128 root:$1$$adltAB9Sr/MSKqylIvSJT/:12705:0:99999:7:::
133 <source lang="shell">
134 root:$1$DWU.tenP$B7ANiXoGoiZMwJR6Ih8810:12705:0:99999:7:::
137 **** 3.4.12 /etc/init.d/rcS 启动后第一个执行脚本(inittab中配置)
140 <source lang="shell">
142 mount -o remount,rw /
151 echo -en "\t\tWelcom to \\033[0;32mEmbase NAS\\033[0;39m\n"
152 echo -en "\\033[0;36m\n"
154 echo -en "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\t\t\n"
155 echo -en "+ Embase NAS V 0.1 \t\t\n"
156 echo -en "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\t\t\n"
157 echo -en "\\033[0;39m\n"
164 *** 4.1 拷宿主机/boot/下grub目录的stage1 stage2 e2fs_stage1_5 menu.list 至/usr/local/embase/boot/grub/
167 为了等待usb设备,mount根文件系统,需要重新创建/boot/initrd.img-2.6.15-1-486 文件。
168 用于加载内核初始化时相应模块的ramdisk。
170 -修改/etc/mkinitrd/mkinitrd.conf DELAY=20
171 -修改/etc/mkinitrd/modules 添加 启动需要加载的用于usb的modules
173 <source lang="shell">
180 <source lang="shell">
181 $mkinitrd -o initrd.img-2.6.15-1-486 2.6.15-1-486 #与ls /lib/modules返回的内核版本号一致
182 $cp initrd.img-2.6.15-1-486 /usr/local/emabse/boot/
187 <source lang="shell">
189 root (hd0,0) #hd0代表第几个硬盘,从0开始,指示grub的stage1,stage2 文件位于那个分区
190 kernel /boot/vmlinuz root=/dev/sda1 #指示到那里去寻找内核,以及根文件系统的分区
191 initrd /boot/initrd #启动ramdisk加载内核模块和等待usb文件系统
196 内核加载的module位于/lib/modules下。与所编译的内核一一对应。
199 <source lang="shell">
200 $cp /boot/vmlinuz-2.6.15-1-486 /usr/local/embase/booot
203 *** 5.2 拷贝modules至/lib/modules
204 <source lang="shell">
205 $cp -rf /lib/modules /usr/local/embase/rootfs/lib/
209 <source lang="shell">
210 $cd /usr/local/embase/boot
211 $ln -s vmlinuz-2.6.15-1-486 vmlinuz
215 <source lang="shell">
222 <source lang="shell">
223 $mkfs.ext2 -m0 /dev/sda0
224 $mount /dev/sda0 /mnt
229 <source lang="shell">
230 $cp -rf /usr/local/embase/rootfs/* /mnt
231 $cp -rf /usr/local/embase/boot /mnt
238 <source lang="shell">
240 >root (hd1,0) #寻找grub的stage1,stage2安装分区,hd1代表第二块硬盘,如果宿主机为hda,则sda为第二块硬盘,0为第一个分区。
241 >setup (hd1) #安装grub至第二块硬盘
248 <source lang="shell">
249 $cp /usr/sbin/lighttpd /usr/local/embase/rootfs/usr/sbin
250 $cp -rf /etc/lighttpd /usr/local/embase/rootfs/etc/
251 $cp -rf /usr/lib/lighttpd/ /usr/local/embase/rootfs/usr/lib
252 $cp -rf /usr/share/lighttpd/ /usr/local/embase/rootfs/usr/share/