使用ubuntu-base制作根文件系统

news2024/11/16 5:56:46

1:ubuntu官网下载最小根文件系统:

放置到电脑的ubuntu中,

Mkdir Ubuntu_rootfs

Cd Ubuntu_rootfs

Sudo tar –zxvf Ubuntu-bash-xxxxxx.tar.gz

2:电脑的ubuntu安装qemu搭建arm模拟系统

将/usr/bin/qemu-arm-static/(64位拷贝)qemu-aachr64-static到解压的目录中的/usr/bin中

sudo apt install qemu-user-static

sudo /usr/bin/qemu-arm-static Ubuntu_rootfs/usr/bin

3:拷贝电脑ubuntu的网络联网文件

Sudo cp /etc/resolv.conf  Ubuntu_rootfs/etc/resolv.conf

如果电脑的源已经可以使用的就不用自己添加源,需要修改的话修改一下文件

Sudo vim Ubuntu_rootfs/etc/apt/source.list

4:编写挂载文件和卸载文件:

####mymount.sh
#!/bin/bash
echo "mountting..."
sudo mount -t proc /proc /home/my_linux/ubuntu_rootfs/proc
sudo mount -t sysfs /sys /home/my_linux/ubuntu_rootfs/sys
sudo mount -o bind /dev /home/my_linux/ubuntu_rootfs/dev
sudo mount -o bind /dev/pts /home/my_linux/ubuntu_rootfs/dev/pts
sudo chroot /home/my_linux/ubuntu_rootfs
####myumount.sh

#!/bin/bash
echo "umountting..."
sudo umount -f /home/my_linux/ubuntu_rootfs/dev/pts
sudo umount -f /home/my_linux/ubuntu_rootfs/dev
sudo umount /home/my_linux/ubuntu_rootfs/sys
sudo umount /home/my_linux/ubuntu_rootfs/proc

附加执行权限:

Sudo chmod 777 mymount.sh

Sudo chmod 777 myumount.sh

运行脚本挂载系统:

Source mymount.sh

6:安装ubuntu文件系统所需软件(在挂在后的文件系统中安装,指令:apt install xxx)

所需软件如下:

Make,gcc,device-tree-compiler,rsyslog,net-tool,ssh,language-pack-en-base, kmod,nano,xorg等

7:添加用户:

Passwd root

Adduser cjqzynq

为用户添加权限:打开/etc/sudoers

8: 修改终端tty打印(很重要)

操作如下:如果没搞对,会出现以下问题:

/bin/sh : cannot accese tty  turn off ….

如果修改的不对会有:

解决办法:

Tty需要根据板卡设置的串口进行设置,操作如下:ttyPS0是kernel和uboot,设备树中配置开启的终端输出串口

9:退出根文件系统制作:

Exit

运行卸载:

Source ./myumount.sh

使用tar打包ubuntu_rootfs/

然后烧录到ddr,再用ext4write,写进mmc,在进去mmc做解压,需要解压到mmcblk0p1

不能有额外多的路径:正确如下:

前期需要uboot和kernel都能识别到mmc,然后使用randisk进去系统,针对mmc做格式化和分区:使用Fdisk指令和mke2fs mmcblk0

10:启动系统(同样使用ext4write将ddr中的uimage.dtb放进mmc中)

然后就叫可以使用cmd指令和args从mmc中引导起来

setenv bootargs  "console=ttyPS0,115200 root=/dev/mmcblk0p1 rootfstype=ext4 rw rootwait "

setenv bootcmd "echo zIamge is loading ... ... && ext4load mmc 0:1 0x2000000 zImage && echo zIamge is loading ... ... && ext4load mmc 0:1 0x6a00000 system-top.dtb && echo zIamge is loading ... ... && bootz 0x2000000 - 0x6a00000"

参考链接:

搭建最小ubuntu20.04系统_ubuntu20.04最小化安装_代码撸起的博客-CSDN博客

基于ubuntu-base进行根文件系统的修改与打包_根文件系统打包_里先森的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/838604.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

zookeeper --- 基础篇

一、zookeeper简介 1.1、什么是zookeeper zookeeper官网:https://zookeeper.apache.org/ 大数据生态系统里的很多组件的命名都是某种动物或者昆虫,他是用来管 Hadoop(大象)、Hive(蜜蜂)、Pig(小 猪)的管理员。顾名思义就是管理…

openpnp - 8mm物料编带的厚度

文章目录 openpnp - 8mm物料编带的厚度概述笔记END openpnp - 8mm物料编带的厚度 概述 做了一个散料飞达, 回来后试了一下. 并不是所有8mm编带都能顺利插入散料飞达. 原来, 不同物料的8mm编带厚度是不一样的. 那就量一下. 笔记 参考电阻的厂家说明书(e.g. C2907561_贴片电阻…

车载总线系列——J1939三

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人…

【Java】如何判断线程池任务执行完?

文章目录 前言1.需求分析2.实现概述3.具体实现3.1 统计完成任务数3.2 FutureTask3.3 CountDownLatch和CyclicBarrier 小结 前言 论是在项目开发中,还是在面试中过程中,总会被问到或使用到并发编程来完成项目中的某个功能。 例如某个复杂的查询&#xf…

etcd

文章目录 etcd单机安装设置键值对watch操作读取键过往版本的值压缩修订版本lease租约(过期机制)授予租约撤销租约keepAlive续约获取租约信息 事务基于etcd实现分布式锁原生实现官方 concurrency 包实现 服务注册与发现Go 操作 Etcd 参考 etcd etcd 是一…

【Java】批量生成条码

批量生成PDF条码 效果图: //调用下方接口注意编码格式if(CollectionUtil.isNotEmpty(productExList)){String exportFileName URLEncoder.encode("商品条码", "UTF-8") DateUtil.format(new Date(), "yyyyMMddHHmmss");response.…

git 公钥密钥 生成与查看

1.什么是公钥 很多服务器都是需要认证的,ssh认证是其中的一种。在客户端生成公钥,把生成的公钥添加到服务器,你以后连接服务器就不用每次都输入用户名和密码了。 很多git服务器都是用ssh认证方式,你需要把你生成的公钥发送给代码仓…

【每日一题】21. 合并两个有序链表

【每日一题】21. 合并两个有序链表 21. 合并两个有序链表题目描述解题思路 21. 合并两个有序链表 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4…

中间人攻击

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、启动 Kali Linux准备 Apache 服务器使用Ettercap插件进行欺骗使用 Wireshark 捕获 Https 流量总结 前言 您可能已经熟悉中间人攻击:攻击者通过…

测试平台——项目模块模型类设计

这里写目录标题 一、项目应用1、项目包含接口:2、创建子应用3、项目模块设计a、模型类设计b、序列化器类设计c、视图类设计 4、接口模块设计a、模型类设计b、序列化器类设计c、视图类设计 5、环境模块设计6、DRF中的通用过滤6.1、设置过滤器后端 一、项目应用 1、项…

js省市区下拉框联动——前端笔记

问题: 我们常常要用到下拉框联动的功能,比如最常用的是选择地址的 省 市 区 的联动。思路: 先填充第一个下拉框,然后写一个第一个下拉框的change事件来加载第二个下拉框,再写第二个下拉框的change事件来加载第三个下…

面试总结-c++

1该吹牛逼吹牛逼。在自己能说出个所以然的情况下,该吹就吹,不吹没工作,吹了有希望。 比如 c组长,确有其事,但是挺唬人。说自己在北京定居也是侧面吹牛逼,证明自己的能力。还有媳妇在研究所。 2.对自己做过…

uniapp:图片验证码检验问题处理

图形验证码功能实现 uniapp:解决图形验证码问题及利用arraybuffer二进制转base64格式图片(后端传的图片数据形式:x00\x10JFIF\x00\x01\x02\x00…)_❆VE❆的博客-CSDN博客 UI稿: 需求:向后端请求验证码图片&…

Flask 是什么?Flask框架详解及实践指南

Flask 是一个轻量级的 Python Web 框架,它被广泛用于构建 Web 应用程序和 API。Flask 简单易用,具有灵活性和可扩展性,是许多开发者喜欢用其构建项目的原因。本文将介绍 Flask 是什么以及如何使用它来构建 Web 应用程序,同时提供一…

《Java-SE-第二十八章》之CAS

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页:KC老衲爱尼姑的博客主页 博主的github,平常所写代码皆在于此 共勉:talk is cheap, show me the code 作者是爪哇岛的新手,水平很有限&…

Cocos Creator的 Cannot read property ‘applyForce‘ of undefined报错

序: 1、博主是看了这个教程操作的时候出的bug>游戏开发 | 17节课学会如何用Cocos Creator制作3D跑酷游戏 | P9 代码控制对象移动_哔哩哔哩_bilibili 2、其实问题不是出在代码上,但是发现物体就是不平移 3、node全栈的资料》node全栈框架 正文…

【文件操作:解锁高效读写与管理技巧】

本章重点 为什么使用文件 什么是文件 文件的打开和关闭 文件的顺序读写 文件的随机读写 文本文件和二进制文件 文件读取结束的判定 文件缓冲区 1. 为什么使用文件 C语言中的变量和数据通常只在程序运行时存在于内存中,一旦程序结束,这些数据就…

LeetCode933. 最近的请求次数

题干 写一个 RecentCounter 类来计算特定时间范围内最近的请求。 请你实现 RecentCounter 类: RecentCounter() 初始化计数器,请求数为 0 。int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回…

三、PWM呼吸灯

1. 什么是呼吸灯 如下图中的蓝色LED灯,不再是亮灭交替,而是慢慢亮慢慢灭,这就是呼吸灯 生活中常见 2. 怎样实现? 答:用PWM

Android中级——RemoteView

RemoteView RemoteView的应用NotificationWidgetPendingIntent RemoteViews内部机制模拟RemoteViews RemoteView的应用 Notification 如下开启一个系统的通知栏,点击后跳转到某网页 public class MainActivity extends AppCompatActivity {private static final …