当前位置:网站首页>NanopiNEO使用开发过程记录
NanopiNEO使用开发过程记录
2022-07-06 21:42:00 【火红色祥云】
NanopiNEO学习笔记
体验过程
通过Ubuntu烧写官方提供的.img镜像文件
首先通过
df -h
查看SD的挂载情况然后通过
umount /dev/sdx
卸载所有SD的挂载项(x更换为对应的1-2-3)最后通过指令烧写镜像文件
sudo if=xxxx.img of=/dev/sdc bs=4M
配置无线网卡
运行
ifconfig -a
如果有wlan0则表示网卡可用修改文件
sudo vim /etc/wpa_supplicant/wap_suoolicant.conf
network{ ssid = "QQ" PSK="qwertyuiop789" }
保存退出
ifdown wlan0
关闭网卡ifup wlan0
开启网卡
通过
ssh [email protected]
实现SSH登录
uboot
编译uboot
首先安装好编译器,准备好编译环境
uboot编译的源代码一定要从Ubuntu上通过git下载,不要在Windows上通过git下载,然后通过FTP传到Ubuntu中,这样编译会出错
编译之后通过
dd if=u-boot-sunxi-with-spl.bin of=/dev/sdc bs=1024 seek=8
下载到SD卡,然后插上SD卡,通过SD卡启动uboot
修改uboot的变量参数,uboot启动内核,原本是通过
uboot.src
这个脚本文件启动的,这个脚本文件的内容可以在Linux启动成功后,在boot
这个文件夹中找到查看内容修改启动内核的方式
原本:
bootcmd=fatload mmc 0:1 ${scriptaddr} boot.scr; source ${scriptaddr}
通过boot.src脚本启动,启动的参数好像也在脚本文件中
修改:
bootcmd=fatload mmc 0:1 42000000 zImage;fatload mmc 0:1 43000000 sun8i-h3-nanopi-neo.dtb;bootz 42000000 - 43000000
通过bootz启动
修改启动参数
原本:
Kernel command line: console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2
rootfstypxt4 rw rootwait fsck.repair=yes panic=10 fbcon=map:0 data=/dev/mmcblk0p3 snd-soc-core.pmdown_time00000修改为:
bootargs=console=ttyS0,115200 root=/dev/mmcblk1p2 rootwait rw
修改之后出现了一个
a job is running for dev-mmcblk0p1.device 1min30s
的问题,未解决
Linux内核
编译Linux内核
首先编译下Linux内核,这样启动的时候通过查看编译的日期就知道是不是自己的内核了
编译之前先安装编译器,配置好编译环境
sudo apt-get install u-boot-tools
cd linux
touch .scmversion
make sunxi_defconfig ARCH=arm CROSS_COMPILE=arm-linux-
编译内核
make zImage ARCH=arm CROSS_COMPILE=arm-linux-
编译设备树
make dtbs ARCH=arm CROSS_COMPILE=arm-linux-
编译完成,zImage 和 设备树文件就准备好了
更换原img文件中的内核文件和设备树文件
与更换原img文件中的根文件系统基本一样,只是将
/dev/sdc2
更换为内核文件和设备树文件存放的区域/dev/sdc1
更换的文件为
arch/arm/boot/zImage
和arch/arm/boot/dtb/sun8i-h3-nanopi-neo.dtb
根文件系统
更换原img文件中的根文件系统
准备一个已经编译好的跟文件系统(此处用的已经通过buildroot编译好的跟文件系统)
插入烧写好原img文件的SD卡
卸载根文件的分区(此处是/dev/sdc2)
sudo umount /dev/sdc2
将/dev/sdc2挂载到临时分区/mnt
sudo mount /dev/sdc2 /mnt
将原来的根文件系统全部删除
进入根文件系统中
cd /mnt
删除所有文件
sudo rm ./* -rf
注意:要用sudo,不然有的文件没有权限删除
别删错路径了,错了自己看着吧。。。。
将编译的根文件系统放入挂载的临时分区/mnt中
sudo cp Lib_rootfa.tar /mnt
将根文件系统解压
sudo tar xfv Lib_rootfa.tar
将根文件系统的压缩包删除
sudo rm Lib_rootfa.tar
同步下文件
sync
卸载根文件系统的临时挂载区
首先命令窗口要退出
/mnt
路径,不然你在使用如何卸载直接进入系统根目录
cd
卸载
sudo umount /dev/sdc2
大功告成,插卡,重启
学习过程总结
更换img中的文件总结
- 现在都是通过将SD卡取下来然后通过挂载到临时区来更换不同分区的文件,那么能否通过网络来更新文件呢?大概率是可以的吧,还没掌握,后续继续更新
使用体验总结
将SD卡插入电脑,通过
df -h
查看SD卡盘区的分配情况/dev/sdc1 40M 12M 29M 30% /media/lux/boot /dev/sdc2 1.2G 1.1G 67M 95% /media/lux/rootfs /dev/sdc3 14G 572M 13G 5% /media/lux/userdata
/media/lux/boot
中存放的是设备树文件和Linux的zImage镜像文件/media/lux/rootfs
中存放的是根文件系统/media/lux/userdata
中存放的是超级用户的根文件
uboot启动内容的东西放在哪?
zImage镜像和设备树的烧写方式是
cp arch/arm/boot/zImage /media/lux/boot
cp arch/arm/boot/dts/sun8i-h3-nanopi-neo.dtb /media/lux/boot
这些文件存在
/media/lux/boot
中根文件系统的烧写方式是
make modules_install INSTALL_MOD_PATH=/media/lux/rootfs ARCH=arm CROSS_COMPILE=arm-linux-
uboot的烧写方式是
dd if=uboot.bin of=/dev/sdc bs=1024 seek=8
所以uboot是在分区0里面吗?也就是
/dev/sdc0
?
创建系统镜像文件.img
创建一个.img文件
dd if=/dev/zero of=sys.img bs=1024 conut=300
.img的文件大小=bs*count
挂载.img文件
sudo mount -o loop sys.img /mnt
loop挂载到/dev/loopX分区,X的值系统会自动调整
使用
df -h
查看会看到挂载一个/dev/loopX 283M 2.1M 262M 1% /mnt
的选项卸载是要执行
sudo umount /mnt
将要制作的文件放入挂载的目录中
/mnt
sudo cp /home/lux/files/* /mnt -avrf
修复并调整文件大小
e2fsck -p -f sys.img
resize2fs -M sys.img
格式化.img文件(*,记录,选做)
sudo mkfs -t ext4 sys.img
会把sys.img格式化为存放ext4格式的文件
开发过程中使用的命令
查询空闲loop设备
sudo losetup -f
挂载.img镜像文件
sudo losetup /dev/loop21 sys.img
查询文件系统格式
lsblk -f
新建一个500M大小的.img文件.img
dd if=/dev/zero of=sys.img bs=1M count=500
将镜像文件挂载2到loop设备上
sudo losetup /dev/loop21 sys.img
创建分区
sudo fdisk /dev/loop21
将多分区的.img文件与loop关联
sudo kpartx -av sys.img
查看关联的loop分区
ls /dev/mapper/
格式化分区
sudo mkfs.vfat /dev/mapper/loopXp1
sudo mkfs.ext4 /dev/mapper/loopXp2
sudo mkfs.ext4 /dev/mapper/loopXp3
sudo mkfs.ext4 /dev/mapper/loopXp4
挂载分区
sudo mount /dev/mapper/loopXp1 /mnt
在分区中放入文件
cd /mnt
cp xxx /mnt
卸载分区
sudo umount /dev/mapper/loopXp1
卸载的指令不要在 /mnt目录下执行
边栏推荐
- Redis source code learning (31), dictionary learning, dict.c (1)
- 使用Thread类和Runnable接口实现多线程的区别
- Restore backup data on GCS with br
- 5年自动化测试,终于进字节跳动了,年薪30w其实也并非触不可及
- 【OA】Excel 文档生成器: Openpyxl 模块
- The most complete security certification of mongodb in history
- OSCP工具之一: dirsearch用法大全
- 【编码字体系列】OpenDyslexic字体
- SSM+jsp实现仓库管理系统,界面那叫一个优雅
- One of oscp tools: dirsearch usage Encyclopedia
猜你喜欢
随机推荐
Unity3D在一建筑GL材料可以改变颜色和显示样本
Imitate Tengu eating the moon with Avatar
[record of question brushing] 2 Add two numbers
史上最全MongoDB之部署篇
Use facet to record operation log
Triple half circle progress bar, you can use it directly
機器人(自動化)課程的持續學習-2022-
Arduino droplet detection
Food Chem | in depth learning accurately predicts food categories and nutritional components based on ingredient statements
Some common software related
PHP implements lottery according to probability
Hangzhou Electric 3711 binary number
2022中青杯数学建模B题开放三孩背景下的生育政策研究思路
三重半圆环进度条,直接拿去就能用
Implementation steps of docker deploying mysql8
Restore backup data on GCS with br
史上最全MongoDB之初识篇
什么是 CGI,什么是 IIS,什么是VPS「建议收藏」
Termux set up the computer to connect to the mobile phone. (knock the command quickly), mobile phone termux port 8022
The most complete security certification of mongodb in history