uboot实践:uboot引导内核相关笔记
前言
其实,就是一边工作,一边写的笔记。
一 将需要的文件通过scp命令发送发板子
语法如下:
scp file_name user_name@192.168.0.250:/home/root/
含义:将scp文件传送到192.168.0.25地址的/home/root/目录。
二 普通根文件系统的启动
从fat分区启动的bootcmd和bootargs
setenv bootcmd 'mmc dev 1 1; fatload mmc 1:1 80800000 zimage;fatload mmc 1:1 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb;;bootz 80800000 - 83000000;'
bootargs的值需要强调的是,中间不需要分号“;”间隔。添加了分号可能会报错。
setenv bootargs ' console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw;'
从ext4分区启动的bootcmd和bootargs
setenv bootcmd 'mmc dev 1 2;ext4load mmc 1:2 80800000 /home/root/zImage;ext4load mmc 1:2 83000000 /home/root/imx6ull-14x14-emmc-7-1024x600-c.dtb;;bootz 80800000 - 83000000;'
bootargs的值不用改,
setenv bootargs ' console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw;'
遍历/home/root/中的文件
ext4ls mmc 1:2 /home/root
=ext4ls mmc 1:2 /home/root
<DIR> 4096 .
<DIR> 4096 ..
<DIR> 4096 test
<DIR> 4096 bin28612 capture
<DIR> 4096 driver110 .Xauthority
<DIR> 4096 shell51 .profile3759 .bash_history
<DIR> 4096 .ssh
<DIR> 4096 bin_backup8192 boot_env.bin38351 imx6ull-14x14-emmc-7-1024x600-c.dtb379904 u-boot-imx6ull-14x14-ddr512-emmc.imx6497848 zImage
=>
在根文件系统中挂载fat分区
详细步骤如下所示:
1 创建一个挂载点/myfat
mkdir myfat
2 使用mount命令挂载,注意-t 选项的参数时vfat,不是ext2 和 ext4
mount -t vfat /dev/mmcblk1p1 /myfat/
3 遍历挂载点
ls /myfat/
如果能够成功看到里面的文件列表,说明挂载成功了。
然后就可以向其中写入文件了。
将需要的文件复制到myfat文件夹中。
4 卸载挂载点
umount /myfat/
5 将挂载命令放到一个脚本mount.sh中:
mkdir /myfat -p
mount -t vfat /dev/mmcblk1p1 /myfat
6 将卸载命令放到另一个脚本umount.sh中
umount /myfat
三 使用ramdisk根文件系统
从fat分区启动zImage
设置bootcmd
setenv bootcmd 'mmc dev 1 1;fatload mmc 1:1 80800000 zImage;fatload mmc 1:1 82000000 imx6ull-14x14-emmc-7-1024x600-c.dtb;mmc dev 1 2;ext4load mmc 1:2 83000000 /home/root/ramdisk.img;bootz 80800000 83000000:04000000 82000000;'
设置bootargs
setenv bootargs 'console=ttymxc0,115200 root=/dev/ram0 rootfstype=ext2 rootwait rw'
从ext4分区启动zImage
设置bootcmd
setenv bootcmd 'mmc dev 1 2;ext4load mmc 1:2 80800000 /home/root/zImage;ext4load mmc 1:2 82000000 /home/root/imx6ull-14x14-emmc-7-1024x600-c.dtb;ext4load mmc 1:2 83000000 /home/root/ramdisk.img;;bootz 80800000 83000000:04000000 82000000;'
设置bootargs
setenv bootargs 'console=ttymxc0,115200 root=/dev/ram0 rootfstype=ext2 rootwait rw'
打印bootcmd
=> printenv bootcmd
bootcmd=mmc dev 1 2;ext4load mmc 1:2 80800000 /home/root/zImage;ext4load mmc 1:2 82000000 /home/root/imx6ull-14x14-emmc-7-1024x600-c.dtb;ext4load mmc 1:2 83000000 /home/root/ramdisk.img;;bootz 80800000 83000000:04000000 82000000;
=>
打印bootargs
=> printenv bootargs
bootargs=console=ttymxc0,115200 root=/dev/ram0 rootfstype=ext2 rootwait rw
=>
四 nfs挂载根文件系统
进入uboot,设置ip地址
setenv ipaddr 192.168.5.25
设置服务器的ip地址。
setenv serverip 192.168.5.6
设置bootargs
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.5.6:/home/lkmao/nfsroot/buildrootfs,proto=tcp rw ip=192.168.5.25:192.168.5.6:192.168.5.1:255.255.255.0:::'
tymxc0改成自己的串口名字,这里的192.168.5.25是板子的ip地址,192.168.5.6是ubuntu主机的ip地址,/home/lkmao/nfsroot/buildrootfs是根文件系统在ubuntu主机中的目录。照着改过来就行了,其他不用变。
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.5.6:/home/lkmao/nfsroot/buildrootfs,proto=tcp rw ip=192.168.5.25:192.168.5.6:192.168.5.1:255.255.255.0:::'
另一种IP的配置,
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.0.11:/home/lkmao/nfsroot/buildrootfs,proto=tcp rw ip=192.168.0.3:192.168.0.11:192.168.0.1:255.255.255.0:::'
设置bootcmd
setenv bootcmd 'mmc dev 1 1; fatload mmc 1:1 80800000 zimage;fatload mmc 1:1 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb;;bootz 80800000 - 83000000;'
记得保存
saveenv
从Tftp加载内核、设备树、ramdisk.img
64M版本
setenv bootcmd 'tftp 80800000 zImage;tftp 82000000 emmc.dtb;tftp 83000000 ramdisk.img;bootz 80800000 83000000:04000000 82000000;'
32M版本
setenv bootcmd 'tftp 80800000 zImage;tftp 82000000 emmc.dtb;tftp 83000000 ramdisk.img;bootz 80800000 83000000:02000000 82000000;'
setenv bootargs 'console=ttymxc0,115200 root=/dev/ram0 rootfstype=ext2 rootwait rw'
不使用ramdisk
setenv bootcmd 'tftp 80800000 zImage;tftp 83000000 emmc.dtb; bootz 80800000 - 83000000;'
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.0.11:/home/lkmao/nfsroot/buildrootfs,proto=tcp rw ip=192.168.0.3:192.168.0.11:192.168.0.1:255.255.255.0:::'
从根文件系统加载全部
因为特别需要,所以需要这么干。
setenv bootcmd 'mmc dev 1 2;ext4load mmc 1:2 80800000 /zImage;ext4load mmc 1:2 82000000 /emmc.dtb;ext4load mmc 1:2 83000000 /ramdisk.img;;bootz 80800000 83000000:04000000 82000000;'
setenv bootargs 'console=ttymxc0,115200 root=/dev/ram0 rootfstype=ext2 rootwait rw'
五 删除密码
直接在/etc/passwd文件和shadow文件删密码可以吗?可以,但是删除以后,ssh就登录不上了。所以还是要老老实实的使用passwd命令来将密码重置为空。
就是提示输入密码的时候,直接按回车键,这样密码就为空了。
# passwd root
Changing password for root
New password:
Bad password: too short
Retype password:
passwd: password for root changed by root
#
删除用户
deluser lkmao
删除组
delgroup lkmao
其他杂项
两个重要的环境变量
LD_LIBRARY_PATH 和PATH
PS1的配置方式
在/etc/profile文件中:
export PATH="/bin:/sbin:/usr/bin:/usr/sbin"if [ "$PS1" ]; thenif [ "`id -u`" -eq 0 ]; then
# export PS1='# 'export PS1='\u@\h:\w# 'else
# export PS1='$ 'export PS1='\u@\h:\w$ 'fi
fiexport PAGER='/bin/more'
export EDITOR='/bin/vi'# Source configuration files from /etc/profile.d
for i in /etc/profile.d/*.sh ; doif [ -r "$i" ]; then. $ifi
done
unset i
如果当前的用户的id是0,就执行export PS1='\u@\h:\w# ',root用户的id是0,普通用户的id大于1000,普通用户执行export PS1='\u@\h:\w# '。
umask.sh文件
其中的内容默认是
umask 022
新建一个文件a:
root@host:/etc/profile.d# touch a
root@host:/etc/profile.d# ls -ls
total 40 -rw-r--r-- 1 root root 0 Sep 7 2022 a
新建文件的属性是644,也就是说umask的计算方式如下
新建文件属性+umsak = 666
就是644 + 022 = 666;
如果想新建文件属性是664,那就将umask设置为002,实验一下:
修改文件/etc/profile.d/umask.sh将其中的内容改为umask 002,
root@host:/etc/profile.d# touch b
root@host:/etc/profile.d# ls -ls
total 40 -rw-rw-r-- 1 root root 0 Sep 7 2022 b
果然新建的文件属性变为660了。
在开发板通过nfs挂载ubuntu的目录
# mount -t nfs -o nolock 192.168.0.11:/home/lkmao/nfsroot/server /server
总结
一些总结。
uboot实践:uboot引导内核相关笔记相关推荐
- u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统
http://www.linuxidc.com/Linux/2012-09/70510.htm 来源:Linux社区 作者:赵春江 uboot最主要的功能就是能够引导内核启动.本文就介绍如何实现该 ...
- U-BOOT下使用bootm引导内核方法
U-BOOT下使用bootm引导内核方法 注: u-boot 使用的是打上: http://www.hhcn.com/cgi-bin/topic.cgi?forum=3&topic=651 ...
- tiny4412 uboot 2020.10版本移植(四)——uboot修改支持sd卡、eMMC引导内核及其他一些杂项设置
本文在<tiny4412 uboot 2020.10版本移植(三)--uboot初步启动> 的基础上继续向tiny4412 uboot 2020.10版添加功能. 主要有三块内容:1. D ...
- Exynos4412 Uboot 移植(四)—— Uboot引导内核过程分析
bootloader 要想启动内核,可以直接跳到内核的第一个指令处,即内核的起始地址,这样便可以完成内核的启动工作了.但是要想启动内核还需要满足一些条件,如下所示: 1.cpu 寄存器设置 * R ...
- u-boot移植随笔:解决引导内核遇到undefined instruction的错误
前天解决了内核不能引导的问题了.在网上搜索了一些资料,才有点明白这个是怎么回事. 不能引导内核时提示的信息各种各样.像ERROR: can't get kernel image!.Bad Magic ...
- mini2440 uboot使用nfs方式引导内核,文件系统
mini2440 uboot使用nfs方式引导内核,文件系统 成于坚持,败于止步 看了一段时间的u-boot了,到今天才真正完全实现u-boot引导内核和文件系统,顺利开机,在此记录完整过程 1.首先 ...
- 2012-Linux-18(使U-BOOT能正确引导LINUX for 1_20 error,but...)-1
1.为了能使得U-BOOT正确引导linux内核.必须传递合适的参数给内核. 修改include/configs/zj2410.h如下: -- -- /************************ ...
- BeagleBoneBlack的U-Boot是如何引导系统的
2014-8-27 10:45:11 BeagleBoneBlack U-Boot 是如何引导系统的 连接到开发板 通过串口连接BeagleBone Black,参见Beagleboard:Termi ...
- uboot加载linux内核加载那些内容,几个地址参数及uboot加载启动内核过程的理解
关于uBoot和Linux内核中几个地址参数及uboot加载启动内核过程的理解 uboot一般使用mkimage工具先制作一个启动映象文件来引导识别内核的,uboot源代码的tools/目录下有mki ...
最新文章
- m_Orchestrate learning system---十三、thinkphp的验证器支持多语言么
- Qt 不再使用 LGPLv2.1 授权
- vue引入包mysql_vue中import引入文件和使用的方式总结
- python templates_python templates在哪
- webpack 4.0 配置文件 webpack.config.js文件的放置位置
- [转载] New Concept English 1——Lesson 7 Are you a teacher?
- MFC空间几何变换之图像平移、镜像、旋转、缩放
- 如何用python计算levenshteindistance_Levenshtein计算相似度距离
- 互联网大厂“抢填”高考志愿
- outlook 表格使用技巧
- 编译原理--运行时存储组织(自己看)
- 跨页面实现多选(转)
- Android—Gradle教程(九)完结篇
- 《东周列国志》第七十回 杀三兄楚平王即位 劫齐鲁晋昭公寻盟
- 多拨软件测试,虚拟机下多拨与OP下多拨测试
- Qt QPainter::end: Painter ended whith 2 saced states
- html5泡泡龙游戏开发随笔
- 深圳云计算培训:新手学习云计算的规划
- 支付宝618红包怎么领?怎么用?
- 博客论坛系统数据库之表的设计
热门文章
- 彩色星球与阿里云签署合作备忘录;京东科技和软通动力达成战略合作 | 全球TMT...
- The Pilots Brothers' refrigerator DFS+枚举
- 重构笔记——提炼函数
- 校验时间段是否与已有时间段存在交叉算法
- (-ent -ant -ment)recipe and recipient
- 网络蛋白质组学在计算机中应用,蛋白质组学及其相关技术在运动人体科学中的应用...
- blos设置具体解释
- java 连接 Pi数据库——piapi方式
- 潘多拉开发板——emwin5.44裸机移植记录(ST7789驱动)
- hive正则表达式regexp_extract