zedboard 配置一个带NFS文件系统的内核和开机自动挂载sd卡

本文档详细记录了在zedboard上配置带有NFS文件系统的内核以及开机自动挂载SD卡的过程。首先介绍了交叉编译工具的安装,然后是u-boot和内核的编译,特别强调了内核中开启NFS支持的步骤。接着讲解了根文件系统的制作和修改,包括如何实现开机自动挂载SD卡。最后提到了qt的编译和opencv的编译安装(未完成)。整个过程充满挑战,但最终成功实现了目标。

一路上看着n多遍的官方文档和各路大神的文档,总算编译成功,把心酸记录一下,为以后自己的使用方便

先把官方文档挂上

http://www.wiki.xilinx.com/U-boot

http://www.wiki.xilinx.com/Build+kernel

http://www.wiki.xilinx.com/Build+and+Modify+a+Rootfs

http://www.wiki.xilinx.com/Build+Device+Tree+Blob

环境为Ubuntu12.04

目标版 zedboard

 

目前system.bit文件尚未编译,用的是官方的版本。

 

目录

、交叉编译工具的安装

2uboot的编译

3NFS内核的编译

4、根文件系统的制作和修改

6qt的编译

7opencv的编译安装

、交叉编译工具的安装

首先安装交叉编译工具,xilinx-arm-gcc/g++

由于官方目前把工具撤了,换成了其他的东西,装那个肯定行,不过还是习惯直接安装

 https://secure.xilinx.com/webreg/login.do?oamProtectedResource=wh%3Dwww.xilinx.com%20wu%3D%2Fmember%2Fmentor_codebench%2Farm-2010.09-62-arm-xilinxa9-linux-gnueabi.bin%20wo%3D1%20rh%3Dhttp%3A%2F%2Fwww.xilinx.com%20ru%3D%252Fmember%252Fmentor_codebench%252Farm-2010.09-62-arm-xilinxa9-linux-gnueabi.bin

安装时会提示会提示需要bash,而Ubuntu为了提高速度,默认把shell改成了dash,那么需要先改回来(如果在centos下则不需要那么麻烦)

 

sudodpkg-reconfigure dash

然后选择否

sudo./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin

好了,接下来是一个图形安装界面,肯定很熟悉啦

安装完之后,设置环境变量吧

当前用户在~/.bashrc下。但是后面的安装需要权限,所以会造成很多问题

我就是栽在这里很多时间啊

那么直接修改 /etc/profile

sudo vi/etc/profile

在最后添加上

exportPATH=/path/to/cross/compiler/bin:$PATH  # 前面 为你的安装路径

exportCROSS_COMPILE=arm-xilinx-linux-gnueabi-

重新启动机器,再试试 arm-按下tab键会不会自动补全?

然后写一个hello world ,编译放到板子里面运行,ok

交叉编译工具的安装到此结束

 

2uboot的编译

u-boot用来引导linux内核,这个没什么好说的,

不过我遇到过一个问题,机器id不匹配,这不是重点,我竟然没有找到他在哪里传递的参数。。。。。

1下载u-boot源码

https://github.com/Digilent/u-boot-digilent

 

啃爹的是里面没有saveenv这个命令,搞得我每次都要手动输入一次。

u-boot-xlnx-master/include/configs/zynq-commom.h

下面有一些描述zedboard的参数

u-bootinclude/configs/zynq_common.h文件中决定了内核、文件系统和设备树编译后的文件名。如Kernel_image决定了u-boot引导zImage还是uImage

 

make zynq_zed_config

 

make -j4                                                                    (多线程编译更快)

 

mv u-boot u-boot.elf                       (后面制作boot.bin需要)

 

 

至此,u-boot编译结束

 

3NFS内核的编译

我们自己编译内核有那么几个原因,

第一别人的始终不是自己的,自己编译的才是自己的

最重要的是,竟然不支持NFS,不可忍

挂载SD文件系统的过程取决于使用的操作系统。以下是在不同操作系统中挂载SD的基本步骤方法。 ### Linux系统中挂载SDLinux系统中,挂载SD通常涉及以下步骤: 1. **检测SD设备**:插入SD后,可以使用 `lsblk` 或 `dmesg` 命令来识别系统分配给SD的设备名,例如 `/dev/mmcblk0` 或 `/dev/sdb`。 2. **创建挂载点**:选择一个目录作为挂载点,或者创建一个新的目录。例如: ```bash mkdir /mnt/sdcard ``` 3. **挂载SD**:使用 `mount` 命令将SD挂载到指定的目录。假设SD文件系统是FAT32,并且设备名为 `/dev/mmcblk0p1`,则可以执行: ```bash sudo mount -t vfat /dev/mmcblk0p1 /mnt/sdcard ``` 4. **验证挂载**:使用 `df -h` 或 `ls /mnt/sdcard` 命令确认SD是否已成功挂载。 5. **卸载SD**:在拔出SD之前,应先卸载以避免数据丢失或损坏: ```bash sudo umount /mnt/sdcard ``` 如果希望在每次启动时自动挂载SD,可以在 `/etc/fstab` 文件中添加相应的条目。推荐使用UUID来标识设备,因为设备名称可能会变化。可以通过 `blkid` 命令获取SD的UUID,并将其添加到 `/etc/fstab` 中,例如: ```bash UUID=1234-5678 /mnt/sdcard vfat defaults 0 0 ``` ### Windows系统中挂载SD 在Windows系统中,挂载SD通常更加简单: 1. **插入SD**:将SD插入计算机的SD器。 2. **自动分配驱动器号**:Windows会自动检测SD并为其分配一个驱动器号,通常会在资源管理器中显示。 3. **访问SD**:打开“我的电脑”或资源管理器,直接访问新分配的驱动器号即可。 4. **安全移除硬件**:在拔出SD之前,应通过任务栏右下角的“安全移除硬件”图标来确保安全卸载。 ### 使用循环设备挂载.img镜像文件 如果需要在Linux系统中挂载一个SD的 `.img` 镜像文件,可以使用循环设备(loop device)。具体步骤如下: 1. **查找可用的循环设备**:使用 `losetup -a` 命令查看当前正在使用的循环设备。 2. **关联镜像文件与循环设备**:使用 `losetup` 命令将 `.img` 镜像文件与一个循环设备关联。例如,假设镜像文件名为 `sdcard.img`,并且 `/dev/loop0` 是可用的,可以执行: ```bash sudo losetup /dev/loop0 sdcard.img ``` 3. **挂载镜像文件**:使用 `mount` 命令挂载镜像文件。假设镜像文件中的分区是FAT32格式,则可以执行: ```bash sudo mount /dev/loop0 /mnt/sdcard ``` 4. **卸载镜像文件**:完成操作后,需要先卸载再解除循环设备的绑定: ```bash sudo umount /mnt/sdcard sudo losetup -d /dev/loop0 ``` ### ZedBoard配置NFS文件系统内核开机自动挂载SD 对于ZedBoard这样的嵌入式平台,挂载SD的过程可能涉及到内核配置启动参数的设置。通常情况下,SD的第一个分区用于存放内核设备树文件,而第二个分区用于存放根文件系统。在创建Linaro的SD镜像时,会提示创建两个分区。第一个分区通常是FAT文件系统,用于存放内核、设备树 `BOOT.bin` 等文件;第二个分区则是用于存放Linaro文件系统的 ext4 文件系统。在内核启动参数中,可以通过 `root=/dev/mmcblk0p2` 指定根文件系统的位置[^3]。 ### Armbian系统中挂载SD 在Armbian系统中,为了确保系统在每次启动时都能正确识别SD,建议使用UUID而不是设备名称(如 `/dev/mmcblk1p1`)。可以使用 `blkid` 命令查找SD的UUID,并将其添加到 `/etc/fstab` 文件中,以便实现自动挂载。例如: ```bash sudo blkid ``` 这将列出所有块设备及其UUID。找到SD的UUID后,编辑 `/etc/fstab` 文件并添加相应的条目[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值