ubuntu 14.04 基于x86处理器,构建嵌入式linux
2019-07-13 04:26发布
生成海报
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被挂载,制作成功。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮