自己制作usb上的linux系统

1 创建工作环境


00001:   $mkdir /usr/local/embase/
00002:   $cd /usr/local/embase
00003:   $mkdir rootfs               #根文件
00004:   $mkdir boot                 #引导所需文件

2 编译busybox

下载并解压缩进入配置解界面,


00001:   $cd busybox
00002:   $make menuconfig
00003:   $make
00004:   $make install

完成后会在busybox目录下生成_install目录。

3 创建根文件系统

3.1 创建目录结构


00001:   $cd /usr/local/embase/rootfs
00002:   $mkdir etc usr var tmp proc home root lib

3.2 安装busybox


00001:   $cp -R busybox/_install/* /usr/local/embase/rootfs

3.3 建立设备文件

直接拷贝宿主机的/dev目录


00001:   $cp -R/dev /usr/local/embase/rootfs

也可以用mknod手工建立,如创建/dev/console,字符设备c, 主设备号5,次1


00001:   $mknod console c 5 1

3.4 配置/etc

3.4.1 /etc/init.d 目录

直接拷贝busybox的启动目录。


00001:   $cp -R busybox-1.00/examples/bootflopyp/etc/init.d /usr/local/embase/rootfs/etc/
3.4.2 /etc/busybox.conf 为空文件
3.4.3 /etc/fstab

00001:   /dev/fd0   /            ext2          defaults 0 0
00002:   none       /proc        proc          defaults 0 0
00003:   /dev/cdrom /mnt/cdrom   udf,iso9660   noauto,owner,kudzu,ro 0 0
00004:   /dev/fd0    /mnt/floppy auto          noauto,owner,kudzu 0 0
3.4.4 /etc/group

00001:    root:x:0:root
3.4.5 /etc/inittab

拷贝busybox的示范inittab指etc

3.4.6 /etc/issue

00001:   Embase NAS 0.1
3.4.7 /etc/motd mtab
3.4.8 /etc/passwd

00001:   root::0:0:root:/root:/bin/ash
3.4.9 /etc/profile

00001:   # /etc/profile: system-wide .profile file for the Bourne shells
00002:   echo
00003:   echo
00004:   export PS1="[\u@\h \w]\$"
00005:   echo "Done"
00006:   alias ll='ls -l'
00007:   alias du='du -h'
00008:   alias df='df -h'
00009:   alias rm='rm -i'
00010:   echo
3.4.10 /etc/resolv.conf(可选)

00001:   nameserver 202.96.209.5
00002:   nameserver 202.96.209.6
3.4.11 /etc/shadow 和 /etc/shadow-

口令文件,其中的计算后口令字串从本机拷贝。 shadow


00001:   root:$1$$adltAB9Sr/MSKqylIvSJT/:12705:0:99999:7:::

shadow-


00001:   root:$1$DWU.tenP$B7ANiXoGoiZMwJR6Ih8810:12705:0:99999:7:::
3.4.12 /etc/init.d/rcS 启动后第一个执行脚本(inittab中配置)

确保有可执行权限,且内容为:


00001:   #! /bin/sh
00002:   mount -o remount,rw /
00003: 
00004: 
00005:   /bin/mount -a
00006:   >/etc/mtab
00007: echo
00008: echo
00009: echo
00010: echo
00011: echo -en "\t\tWelcom to \\033[0;32mEmbase NAS\\033[0;39m\n"
00012: echo -en "\\033[0;36m\n"
00013: echo
00014: echo -en "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\t\t\n"
00015: echo -en "+ Embase NAS V 0.1 \t\t\n"
00016: echo -en "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\t\t\n"
00017: echo -en "\\033[0;39m\n"
00018: hostname BabyLinux

4 创建boot目录

4.1 拷宿主机/boot/下grub目录的stage1 stage2 e2fs_stage1_5 menu.list 至/usr/local/embase/boot/grub/

4.2 创建initrd

为了等待usb设备,mount根文件系统,需要重新创建/boot/initrd.img-2.6.15-1-486 文件。 用于加载内核初始化时相应模块的ramdisk。


00001:      ehci_hcd
00002:      uhci_hcd
00003:      ohci_hcd
00004:      usb-storage
00005:     


00001:     $mkinitrd -o initrd.img-2.6.15-1-486 2.6.15-1-486  #与ls /lib/modules返回的内核版本号一致
00002:     $cp initrd.img-2.6.15-1-486 /usr/local/emabse/boot/
00003:    

4.3 编辑menu.list


00001:  title embase
00002:  root (hd0,0)                                 #hd0代表第几个硬盘,从0开始,指示grub的stage1,stage2 文件位于那个分区
00003:  kernel /boot/vmlinuz root=/dev/sda1   #指示到那里去寻找内核,以及根文件系统的分区
00004:  initrd /boot/initrd                   #启动ramdisk加载内核模块和等待usb文件系统

5 编译安装内核

内核加载的module位于/lib/modules下。与所编译的内核一一对应。

5.1 拷贝内核至 /boot


00001:     $cp /boot/vmlinuz-2.6.15-1-486      /usr/local/embase/booot
00002:     

5.2 拷贝modules至/lib/modules


00001:     $cp -rf /lib/modules /usr/local/embase/rootfs/lib/
00002:     

5.3 创建vmlinuz连接


00001:     $cd /usr/local/embase/boot
00002:     $ln -s vmlinuz-2.6.15-1-486 vmlinuz
00003:     

6 创建目标安装盘分区


00001:   $fdisk /dev/sda

7 创建文件系统


00001:   $mkfs.ext2 -m0 /dev/sda0
00002:   $mount /dev/sda0 /mnt

8 拷贝所有到目标安装盘


00001:   $cp -rf /usr/local/embase/rootfs/* /mnt
00002:   $cp -rf /usr/local/embase/boot     /mnt

9 安装grub至目标盘

suse安装有问题,到debian安装。


00001:  $grub
00002:  >root (hd1,0)     #寻找grub的stage1,stage2安装分区,hd1代表第二块硬盘,如果宿主机为hda,则sda为第二块硬盘,0为第一个分区。
00003:  >setup (hd1)      #安装grub至第二块硬盘

10 安装应用软件

10.1 lighttpd


00001:  $cp /usr/sbin/lighttpd /usr/local/embase/rootfs/usr/sbin
00002:  $cp -rf /etc/lighttpd /usr/local/embase/rootfs/etc/
00003:  $cp -rf /usr/lib/lighttpd/ /usr/local/embase/rootfs/usr/lib
00004:  $cp -rf /usr/share/lighttpd/ /usr/local/embase/rootfs/usr/share/
Valid XHTML 1.0 :: Valid CSS :: Made with Emacs-Muse