【根文件系统 】开发板通过nfs挂载ubuntu上的根文件系统
在此基础上制作可用的根文件系统:https://www.cnblogs.com/hengqiu/p/15908597.html
1.ubuntu搭建nfs服务器
sudo apt-get install nfs-kernel-server rpcbind
sudo apt-get install nfs-common
编辑 /etc/exports文件,添加
/root/porting_x210/rootfs/rootfs *(rw,sync,no_root_squash,no_subtree_check)
chmod 777 -R /root/porting_x210/rootfs/rootfs
touch linuxrc
sudo exportfs -r //更新
sudo showmount localhost -e //显示
出现
Export list for localhost:
/root/porting_x210/rootfs/rootfs *
即搭建成功,且目录设置如上
2.开发板内核编译前通过menuconfig设置支持nfs启动方式
配置网络部分,主要是使能CONFIG_IP_PNP以在2中能够看到Root file system on NFS选项
Networking support
Networking options
TCP/IP networking
IP: kernel level autoconfiguration
[*] IP: DHCP support
[*] IP: BOOTP support
配置开启nfs服务
File systems --->
Network File Systems --->
<*> NFS client support
[*] NFS client support for NFS version 3 [*] NFS client support for the NFSv3 ACL protocol extension
[*] NFS client support for NFS version 4 (EXPERIMENTAL)
[*] NFS client support for NFSv4.1 (DEVELOPER ONLY)
[*] Root file system on NFS
编译得到zImage镜像下载到板子
3.uboot环境变量设置
bootargs=root=/dev/nfs nfsroot=192.168.1.30:/root/porting_x210/rootfs/rootfs ip=192.168.1.20:192.168.1.30:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200
bootcmd=movi read kernel 0x30008000; bootm 0x30008000
设置时
setenv bootargs root=/dev/nfs nfsroot=192.168.1.30:/root/porting_x210/rootfs/rootfs ip=192.168.1.10:192.168.1.30:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200
4.开机测试开发板能否搭载nfs上的根文件系统
5.ubuntu上根文件系统完善
搭建好最简单的根文件系统后,需要对其进行完善。大致思路是通过busybox在主文件夹下添加各种文件和文件夹
(1)下载busybox https://busybox.net/downloads/ ,下载1.24.1的版本解压
(2)配置busybox 修改makefile
ARCH = arm
CROSS_COMPILE =arm-linux-
(3)安装到根文件系统主文件夹
先设置目标文件夹,make menuconfig ->busyboxseting->Install ...,粘贴目标文件夹
(4)make ,make install,此时根文件目录下最重要的文件夹已经产生
(5)开机观察现象,一直刷屏不能进入,进一步完善
(6)添加一个典型的inittab到/etc文件夹下,再次开机,已经可以进入到控制台
(7)添加fstab文件,init.d文件夹和和rcS文件,sysconfig文件夹和HOSTNAME文件,复制ubuntu的passwd和shadow文件到/etc文件夹下
在根目录下新建sys等文件夹作为挂载点,对文件系统进行完善
(8)最终开发板可以运行该文件系统
(9)拷贝动态链接库
即拷贝
/usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/lib 中的内容到根文件系统的lib目录下
(10)制作镜像以备烧录
dd if=/dev/zero of=rootfs.ext2 bs=1024 count=10240
losetup /dev/loop1 rootfs.ext2
mke2fs -m 0 /dev/loop1 10240
mount -t ext2 /dev/loop1 ./ext2_rootfs/
(2)向./rootfs中复制内容,用cp ../rootfs/* ./ -rf
(3)umount /dev/loop1
losetup -d /dev/loop1
(4)完成后得到的rootfs.ext2就是我们做好的rootfs镜像。拿去烧录即可。
【根文件系统 】开发板通过nfs挂载ubuntu上的根文件系统的更多相关文章
- 把Linux目录挂载到开发板、设置开发板从NFS启动、取消开发板从NFS启动
声明:文中"PC虚拟机Linux"是指在PC上安装了虚拟机,然后在虚拟机中装的Linux. 关于NFS的详细介绍可参考:http://www.cnblogs.com/nufangr ...
- iTOP-6818开发板设置NFS共享目录的实现
NFS 共享目录的制作过程.主要分为两个步骤:1.搭建 NFS 服务器2.配置内核. NFS 是 Network FileSystem 的缩写,是由 SUN 公司研制的 UNIX 表示层协议(pres ...
- tiny4412 busybox制作根文件系统rootfs nfs 挂载 ubuntu 14.04
http://blog.csdn.net/liudijiang/article/details/50555429(转) 首先得要有制作好的uboot和linux内核镜像zImage,先烧录到sd卡里, ...
- uboot通过NFS挂载ubuntu根文件系统
由于工作需要,在做app开发或系统移植时,经常需要编辑系统后重新烧写异常麻烦.通过NFS挂载根文件系统就不需要每次更改系统后再进行编译和烧写,等开发完成后一次烧写即可完成. 一.准备材料 可以根据自己 ...
- 【分享】4412开发板POP烧写ubuntu出错,如何挂载emmc分区解决方法
本文转自:http://bbs.topeetboard.com 平台:4412精英版系统:ubuntu系统 按照教程烧写ubuntu文件系统,TF卡和EMMC分区都完成(总之之前的操作试了几遍都是没问 ...
- debian下为arm开发板创建基于debian或emdebian的根文件系统
Debian系统本身包含对arm的支持,其包含的软件包最多,但是最终的文件系统要大一些. emdebian 是一个非常好用的嵌入式linux操作系统,其基于debian的特点对于熟悉debian系统的 ...
- 【转载】4412开发板、PC、ubuntu通过网线连接
今天看到使用TFTP方式,开发板直接从ubuntu下载程序,不需要一直通过烧写文件系统下载,我试了一下,虚拟机.开发板.pc三者老是互相ping不通.纠结了很久终于解决了. 写下这个小笔记,供大家参考 ...
- ARM开发板搭建NFS网络文件共享方法
前边 已经提到过吧vmare的IP改成了静态IP,对于上网来说,这个是个麻烦的事.现在重新配置Vmware的IP VMware-Edit-Virtual network editor 选择PC机的无线 ...
- [分享] IMX6嵌入式开发板linux QT挂载U盘及TF卡
本文转自迅为开发板:http://www.topeetboard.com 开发平台:iMX6开发板 linux QT 系统下挂载 u 盘如下图所示,qt 启动之后,在超级终端中使用命令“mknod / ...
- 一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_200 时光荏苒,过隙白驹,即将进入2022年,著名敏捷开发语言Python也放出了3.10最终版,本次我们来展示一下在不同的系统和 ...
随机推荐
- 企业级GitLab在Docker部署使用
一.部署gitlab 这里使用的是Centos8,安装Docker环境 ,这里不说了,参考:https://www.cnblogs.com/wei325/p/15139701.html gitlab有 ...
- Thymeleaf的内置对象、SpringBoot整合Thymeleaf和JDBC
Thymeleaf的对象 Thymeleaf是直接支持访问Servlet web的原生资源,HttpServletRequest HttpServletResponse HttpSession Ser ...
- NETAPP硬盘更换
netapp硬盘新增 一.找到坏盘,插上新盘# 1.登陆到想要点亮的硬盘相对应的控制器上,并进去高级模式. priv set advanced 2.利用disk show -v 查看想要点亮的硬盘名字 ...
- JZOJ 2020.08.03【NOIP提高组】模拟 &&【NOIP2015模拟11.5】
总结 又是一日爆炸 \(T1\) 不出所料报 \(0\) 了?! 题目 \(T1\) JZOJ 4315. Prime 暴力就好了?! 考场根本没想暴力 赛后发现暴力跑得贼快 只需二分一下组数的上界 ...
- React Native学习笔记----React Native简介与环境安装
React Native 的基础是React, 是在 web 端非常流行的开源 UI 框架.要想掌握 React Native,先了解 React 框架本身是非常有帮助的. 一.什么是React Na ...
- EF Corexxxxnstance with the same key value for {'Id'} is already being tracked.
AsNoTracki或者全局禁用 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { // ...
- 微信小程序扫码
前言:微信小程序-->调用摄像头,扫描二维码/条形码,并获取信息,一连串操作,只需要调用微信小程序提供的 wx.scanCode API. 一.生成测试二维码 随便网上找个二维码生成器. 二.实 ...
- 学习操作系统P3 多处理器编程:从入门到放弃 (线程库;现代处理器和宽松内存模型)
啊 啊 啊 啊 操作系统会自动把线程放置在不同的处理器上 可以用top观察CPU使用率 啊 啊 啊 啊 a 甚至连一个简单的求和程序都做不对 a 汇编语言中的 lock: CPU的特性,通过总线加锁, ...
- django搭建简易blog
目录 下载安装django 创建一个django项目 创建一个django应用 models.py urls.py views.py admin.py 配置应用到项目下 路由设置urls.py set ...
- S-HR类加载器的区别
S-HR的addon和sp下的jar包是由不同的类加载器来加载的: 1.如果/root/kingdee/eas/server/lib/sp的包的路径引用的是/root/kingdee/eas/serv ...