ubuntu 14.04 基于x86处理器,构建嵌入式linux

来源:互联网 发布:java 验证日期格式 编辑:程序博客网 时间:2024/05/17 02:59
           1 硬件

           普通的PC,x86架构处理器,4G内存;

           usb 一个4G,主要用它作为启动LILO和放置根文件系统压缩包。


           2 准备工作

           下载安装ubuntu14.04server版本,并安装内核编译环境(注意:1,安装时需要配置网卡,2,安装时/boot需要10G)。

           使用/boot目录下config文件编译内核,运行正常。

           修改内核中参数,支持ram启动,修改ramdisk大小为1G。重新编译内核,并启动成功。


           3.制作根文件系统压缩文件ram30.img.gz

             在/mnt目录下创建目录rd(运行mkdir /mnt/rd);

             在/dev/ram0创建文件系统(运行mke2fs -m 0 /dev/ram0 );

             挂载上/dev/ram0(运行mount /dev/ram0 /mnt/rd)

             就可以象对普通硬盘一样对它进行操作了。

             用命令df -h | grep ram0查看出ramdisk大小。

             建立目录/mnt/minlinux,在此目录下创建文件系统。

             比对系统目录,创立目录bin,放如ls、mv、grep、chown、chmod、chgrp、ln、rm等;

             比对系统目录,创立目录sbin,sbin下是系统启动过程通常需要的命令,如bash、e2fsck、mke2fs、fdisk、insmod、rmmod、depmod、modprobe、lsmod、shutdown、reboot、login、init、getty、mount、umount、等;

             比对系统目录,创立目录usr/bin,放置Apache应用程序http和其他一些特殊工具。

             比对系统目录,创立lib和lib64。通过对可执行文件执行 ldd filename查找复制对应可执行文件需要的动态链接库放入lib和lib64.
             比对系统目录,创建目录etc和dev下的设备文件需要的都必须要有,它们都是和可执行文件对应的,因为许多可执行文件执行时,一般是
打开设备,根据配置文件来运行。

             比对系统目录,创建特殊的目录proc。

             此时minlinux构建完毕。

             重启计算机后,执行下列操作:
            dd if=/dev/zero of=/dev/ram0 bs=1k count=1032088 

            mke2fs –m 0 /dev/ram0 1032088 在ramdisk上建立ext2文件系统;

            mount /dev/ram0 /mnt/rd 将已格式化的ramdisk挂载至目录/mnt/rd;
            cp –rf /mnt/minlinux/* /mnt/rd 将文件结构拷贝至ramdisk。

            修改/mnt/rd/etc/fstab.

            将原本通过uuid方式定义的/映射修改为/dev/ram0 绑定到/.并加入none /proc proc defaults 0 0。

            执行df查看1024-blocks一栏中/dev/ram0的数值,假定为ramsize.

            卸载/dev/ram0;
            将ramdisk写成映象文件,运行dd if=/dev/ram0 of=ram30.img bs=1k count=ramsize
压缩,产生一个压缩的映象文件ram30.img.gz,

              运行gzip –9v ram30.img

           4.制作initr.d.img

            mke2fs –m 0 /dev/ram0 2048 在ramdisk上建立ext2文件系统;

            mount /dev/ram0 /mnt/rd 将已格式化的ramdisk挂载至目录/mnt/rd;

            在/dev/ram0中建立映像需要的目录和文件。创建目录bin、dev、etc、lib、mnt和可执行脚本文件linuxrc,linuxrc的内容为:
            #!/bin/bash
            mount –o –ro /dev/sdb4/ /mnt # 以只读方式将u盘挂载在/mnt下
            zcat /mnt/boot/ram30.img.gz > /dev/ram0 # 将根文件系统映像解压至ram
            umount /dev/sdb4 # 卸载u盘

            根据linuxrc中命令,填充bin,etc,lib等目录内容。其中etc目录下内容为ld.so.conf.通过以下方法获得:

            cp -rf /etc/ld.so.conf /mnt/rd/etc

            mkdir /mnt/rd/etc/ld.so.conf.d

            cp -rf /etc/ld.so.conf.d/* /mnt/rd/etc/ld.so.conf.d/

            执行ldconfig –r /mnt/rd

            执行df查看1024-blocks一栏中/dev/ram0的数值,假定为ramsize.

            卸载/dev/ram0
            拷贝/dev/ram0成映像文件 dd if=/dev/ram0 of=initrd.img bs=1k count=ramsize
            运行gzip -9v initrd.img
   


           5.制作usb启动盘

            参照ubuntu下格式化分区u盘中的介绍,在usb上创建分区1和分区2,格式均为83(Linux)。

            mkfs -t ext3 /dev/sdb1

            mount /dev/sdb1 /mnt/usb 

          向usb中拷入配置好的grub以及镜像。修改启动参数,变uuid为/dev/sdb之类的表示方式。然后启动。

                重新启动计算机,登陆后运行mount,我们看到如下两项:


                /dev/ram on / ext2 (rw)


                none on /proc type proc (rw)


                这显示只有ramdisk被挂载,制作成功。


0 0