嵌入式环境搭建
编译一个uboot:
先打补丁:patch -p1 < ../uboot1.1.6"补丁文件名称"
make 100ask24x0... 配置
make 生成.bin文件 烧到开发板即可
注意:编译uboot时在目录下的/tools文件下面有一些mkimage可执行文件,将之拷到服务器的/user/bin目录下面,这在后面编译Linux系统生成uImage有用
先打补丁:patch -p1 < ../uboot1.1.6"补丁文件名称"
make 100ask24x0... 配置
make 生成.bin文件 烧到开发板即可
注意:编译uboot时在目录下的/tools文件下面有一些mkimage可执行文件,将之拷到服务器的/user/bin目录下面,这在后面编译Linux系统生成uImage有用
nfs 0x30000000 192.168.1.106:/work/nfs_root/uImage_nolcd //使用网络挂载新的Linux系统,这里是没有lcd驱动的Linux
然后bootm 0x30000000启动Linux系统
mount -t nfs -o nolock,vers=2 192.168.1.106:/work/nfs_root/first_fs /mnt //挂载网络文件系统
编译busybox,加压,make menuconfig(会报错,需要修改Makefile405行和1242行)对功能的增添后保存,make,make CONFIG_PREFIX=/work/nfs_root/first_fs install(选择需要安装的文件夹,
不要直接安装,会破坏pc及系统)
不要直接安装,会破坏pc及系统)
然后,创建mkdir dev,sudo mknod console c 5 1(创建设备号),sudo mknod null c 1 3
mkdir etc,vi inittab 加入以下console::askfirst:-/bin/sh
然后进入cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib,创建mkdir /work/nfs_root/second_fs/lib,拷贝库
最后就是最小根文件系统bin dev etc lib linuxrc sbin usr
最后就是最小根文件系统bin dev etc lib linuxrc sbin usr
下面制作映像文件可以烧到开发板:
tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2
cd Development_util_ok
cd yaffs2/
cd utils/
make
sudo cp mkyaffs2image /usr/local/bin/
加上可执行属性sudo chmod +x /usr/local/bin/mkyaffs2image
最后编译成镜像文件mkyaffs2image second_fs second_fs.yaffs2
下一步完善第一个根文件系统:
手工挂载法:在单板文件系统里面 mkdir proc,mount -t proc none /proc ,就可以执行ps命令
非手工加载,需要在服务器上编辑文件系统为镜像文件前,mkdir proc,vi etc/inittab,mkdir etc/init.d,vi etc/init.d/rcS后加入’mount -t proc none /proc‘,sudo chmod +x etc/init.d/rcS(可执行)
如果需要其他命令都可以这样的形式加上,也可以vi etc/init.d/rcS后mount -a,然后vi etc/fstab,加入'proc /proc proc defaults 0 0'
制作好了后再生成uimage文件
继续完善:
udev:自动创建/dev/设备节点
mdev:busybox里面的, mkdir sys,vi etc/init.d/rcS,
加入 2 mount -a
3 mkdir /dev/pts
4 mount -t devpts /dev/pts
5 echo /sbin/mdev > /proc/sys/kernel/hotplug
6 mdev -s
vi etc/fstab:
加入 1 #device mount-point type options dump fsck order
2 proc /proc proc defaults 0 0
3 sysfs /sys sysfs defaults 0 0
4 tmpfs /dev tmpfs defaults 0 0
重新生成.yaffs2
jffs2文件系统,如书的17章;;如果.yaffs2和.jffs2文件系统不能启动,需要设置启动类型:et bootargs noinitrd root=/dev/mtdblock3 rootfstype=yaffs init=/linuxrc console=ttySAC0,115200
tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2
cd Development_util_ok
cd yaffs2/
cd utils/
make
sudo cp mkyaffs2image /usr/local/bin/
加上可执行属性sudo chmod +x /usr/local/bin/mkyaffs2image
最后编译成镜像文件mkyaffs2image second_fs second_fs.yaffs2
下一步完善第一个根文件系统:
手工挂载法:在单板文件系统里面 mkdir proc,mount -t proc none /proc ,就可以执行ps命令
非手工加载,需要在服务器上编辑文件系统为镜像文件前,mkdir proc,vi etc/inittab,mkdir etc/init.d,vi etc/init.d/rcS后加入’mount -t proc none /proc‘,sudo chmod +x etc/init.d/rcS(可执行)
如果需要其他命令都可以这样的形式加上,也可以vi etc/init.d/rcS后mount -a,然后vi etc/fstab,加入'proc /proc proc defaults 0 0'
制作好了后再生成uimage文件
继续完善:
udev:自动创建/dev/设备节点
mdev:busybox里面的, mkdir sys,vi etc/init.d/rcS,
加入 2 mount -a
3 mkdir /dev/pts
4 mount -t devpts /dev/pts
5 echo /sbin/mdev > /proc/sys/kernel/hotplug
6 mdev -s
vi etc/fstab:
加入 1 #device mount-point type options dump fsck order
2 proc /proc proc defaults 0 0
3 sysfs /sys sysfs defaults 0 0
4 tmpfs /dev tmpfs defaults 0 0
重新生成.yaffs2
jffs2文件系统,如书的17章;;如果.yaffs2和.jffs2文件系统不能启动,需要设置启动类型:et bootargs noinitrd root=/dev/mtdblock3 rootfstype=yaffs init=/linuxrc console=ttySAC0,115200
busybox文件就是ls,cp,cd等命令的组合
查看进程:ps
cat /proc/mounts查看当前挂载了那些根文件系统
删除单板里面的文件系统命令:nand erase root
查看进程:ps
cat /proc/mounts查看当前挂载了那些根文件系统
删除单板里面的文件系统命令:nand erase root
服务器允许挂接NFS服务
sudo vi /etc/exports
加入以下类容:/work/nfs_root/second_fs *(rw,sync,no_root_squash)
重启 sudo /etc/init.d/nfs-kernel-server restart
sudo vi /etc/exports
加入以下类容:/work/nfs_root/second_fs *(rw,sync,no_root_squash)
重启 sudo /etc/init.d/nfs-kernel-server restart
//下面是在bootloader上设置启动自动挂载NFS文件系统
set bootargs noinitrd root=/dev/mtdblock3 rootfstype=yaffs init=/linuxrc console=ttySAC0,115200 单板自带的文件系统启动
再启动后需要mkdir mnt
然后,需要挂载网络根文件系统mount -t nfs -o nolock 192.168.1.106(服务器ip):/work/nfs_root/first_fs(网络根文件系统的目录) /mnt
然后再进入/mnt,就是网络根文件系统的文件
单板自动从网络根文件系统启动
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.106:/work/nfs_root/first_fs ip=192.168.1.100:192.168.1.102:192.168.1.99:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.106:/work/nfs_root/second_fs ip=192.168.1.100:192.168.1.102:192.168.1.99:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200
set bootargs noinitrd root=/dev/mtdblock3 rootfstype=yaffs init=/linuxrc console=ttySAC0,115200 单板自带的文件系统启动
再启动后需要mkdir mnt
然后,需要挂载网络根文件系统mount -t nfs -o nolock 192.168.1.106(服务器ip):/work/nfs_root/first_fs(网络根文件系统的目录) /mnt
然后再进入/mnt,就是网络根文件系统的文件
单板自动从网络根文件系统启动
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.106:/work/nfs_root/first_fs ip=192.168.1.100:192.168.1.102:192.168.1.99:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.106:/work/nfs_root/second_fs ip=192.168.1.100:192.168.1.102:192.168.1.99:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200

浙公网安备 33010602011771号