10| linux下烧录至SD卡启动
linux下烧录uboot、linux-kernel、dtb、rootfs到SD卡启动
[假设识别u盘为设备/dev/sdb]
@author:firestaradmin 2020年4月28日19:15:33
0.清除SD卡前1024KB的数据 dd命令(可选步骤)
dd if=/dev/zero of=/dev/sdb bs=1024 count=1024if=文件名:输入文件名,默认为标准输入。即指定源文件。
/dev/zero,是一个输入设备,你可你用它来初始化文件。该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。
of=文件名:输出文件名,默认为标准输出。即指定目的文件。
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
1. 插入SD卡并分区 fdisk命令
Linux下使用fdisk命令进行分区:
fdisk /dev/sdb需要建立两个分区:
p1为fat32 用于存放linux-kernel和dtb文件(一般64MB)
p2为ext4 用于存放根文件系统(一般剩余空间都给它)
(注意,第一个分区起始扇区需要为uboot保留一定空间 所以在扇区大小为512B时,一般第一个起始扇区地址为8192即512*8192B=4MB保留给uboot)
2. 使用mkfs命令进行分区的格式化
mkfs.vfat -F 32 -n "boot" /dev/sdb1将sd卡分区1格式化为FAT32
-n “boot” 设置卷标为boot
mkfs.ext4 -F -L "rootfs" /dev/sdb2将sd卡分区2格式化为ext4
-L “rootfs” 设置卷标为rootfs
格式化前需要先取消挂载,使用umount命令
umount /dev/sdb13. 使用dd命令烧写uboot.imx到sd卡起始位置
在uboot目录下打开终端
dd if=uboot.imx of=/dev/sdb bs=1024 seek=1 conv=fsyncif=文件名:输入文件名,默认为标准输入。即指定源文件。
of=文件名:输出文件名,默认为标准输出。即指定目的文件。
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
conv=<关键字>,关键字可以有以下11种:
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
……
4. 将zImage和dtb设备树文件拷贝到第一个分区
将p1挂载到某个地方
mkdir /media/boot
mount /dev/sdb1 /media/boot/
cp zImage *.dtb /media/boot/5. 拷贝根文件系统至第二个分区
1.压缩根文件系统
cd rootfs/
tar -vcjf rootfs.tar.bz2 *2.挂载设备并解压
mkdir /media/rootfs
mount /dev/sdb2 /media/rootfs/
tar jxfm \**rootfs.tar.bz2\** -C /media/rootfs/6.同步和卸载u盘
输入sync同步数据,然后umount /run/media/sda1/去卸载一个目录,
然后用df 指令查看 sda1 这个目录已经不存在了,表明已经卸载了,U 盘可以正常拔出了!
7. 插入开发板,并修改bootcmd和bootargs启动系统进行测试
命令附录:
fdisk命令:
磁盘操作命令
语法
fdisk [必要参数][选择参数]必要参数:
-l 列出素所有分区表
-u 与”-l”搭配使用,显示分区数目
选择参数:
-s<分区编号> 指定分区
-v 版本信息
菜单操作说明
m :显示菜单和帮助信息
a :活动分区标记/引导分区
d :删除分区
l :显示分区类型
n :新建分区
p :显示分区信息
q :退出不保存
t :设置分区号
v :进行分区检查
w :保存修改
x :扩展应用,高级功能
mkfs命令:
Linux mkfs命令用于在特定的分区上建立 linux 文件系统
使用方式 :
mkfs [-V] [-t fstype] [fs-options] filesys [blocks]参数 :
device : 预备检查的硬盘分区,例如:/dev/sda1
-V : 详细显示模式
-t : 给定档案系统的型式,Linux 的预设值为 ext2
-c : 在制做档案系统前,检查该partition 是否有坏轨
-l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
block : 给定 block 的大小
实例
在 /dev/hda5 上建一个 msdos 的档案系统,同时检查是否有坏轨存在,并且将过程详细列出来 :
mkfs -V -t msdos -c /dev/hda5将sda6分区格式化为ext3格式
mfks -t ext3 /dev/sda6注意:这里的文件系统是要指定的,比如 ext3 ;reiserfs ;ext2 ;fat32 ;msdos 等。
dd命令:
Linux dd命令用于读取、转换并输出数据。
dd可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
如我们上面使用的命令
dd if=/dev/zero of=/dev/sdb bs=1024 count=1024
dd if=uboot.imx of=/dev/sdb bs=1024 seek=1 conv=fsync参数说明:
if=文件名:输入文件名,默认为标准输入。即指定源文件。
of=文件名:输出文件名,默认为标准输出。即指定目的文件。
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
conv=<关键字>,关键字可以有以下11种:
conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternate ebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swab:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
–help:显示帮助信息
–version:显示版本信息
tar命令:
1.命令格式:
tar [必要参数] [选择参数] [文件]
2.命令功能:
用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的
3.命令参数:
必要参数有如下:
-A 新增压缩文件到已存在的压缩
-B 设置区块大小
-c 建立新的压缩文件
-d 记录文件的差别
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-z 支持gzip解压文件
-j 支持bzip2解压文件
-Z 支持compress解压文件
-v 显示操作过程
-l 文件系统边界设置
-k 保留原有文件不覆盖
-m 保留文件不被覆盖
-W 确认压缩文件的正确性
可选参数如下:
-b 设置区块数目
-C 切换到指定目录
-f 指定压缩文件
–help 显示帮助信息
–version 显示版本信息
4.常见解压/压缩命令
tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
.rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!