当前位置:网站首页>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目录下执行
边栏推荐
- Restore backup data on GCS with br
- Mysql-数据丢失,分析binlog日志文件
- 【刷题记录】2. 两数相加
- The most complete deployment of mongodb in history
- Create commonly used shortcut icons at the top of the ad interface (menu bar)
- Implementation of binary search tree
- 见到小叶栀子
- Class constant pool and runtime constant pool
- 硬件开发笔记(十): 硬件开发基本流程,制作一个USB转RS232的模块(九):创建CH340G/MAX232封装库sop-16并关联原理图元器件
- Allow public connections to local Ruby on Rails Development Server
猜你喜欢
随机推荐
How to detect whether the MySQL code runs deadlock +binlog view
超越Postman,新一代国产调试工具Apifox,用起来够优雅
Mysql-数据丢失,分析binlog日志文件
【开发软件】 tilipa开发者软件
史上最全MongoDB之部署篇
Learn how to use js to merge two objects into one object assign()
One of oscp tools: dirsearch usage Encyclopedia
ABAP Dynamic Inner table Group cycle
Food Chem|深度学习根据成分声明准确预测食品类别和营养成分
Redis source code learning (31), dictionary learning, dict.c (1)
Restore backup data on GCS with tidb lightning
cuda编程
Collection of idea gradle Lombok errors
2022 middle school Youth Cup mathematical modeling question B fertility policy research ideas under the background of open three children
vim —- 自己主动的按钮indent该命令「建议收藏」
[leetcode]Spiral Matrix II
True Global Ventures新成立的1.46亿美元后续基金关账,其中普通合伙人认缴6,200万美元以对后期阶段的Web3赢家进行投资
使用 TiDB Lightning 恢复 GCS 上的备份数据
The most complete learning rate adjustment strategy in history LR_ scheduler
The most complete deployment of mongodb in history