当前位置: 首页 > news >正文

wordpress博客站模板传奇世界网页版游戏

wordpress博客站模板,传奇世界网页版游戏,wordpress wpzoom,网站建设费用要分摊多长时间文章目录 1、AB分区镜像制作2、uboot修改3、镜像启动 在上一篇 Qemu开发ARM篇-5、buildroot制作根文件系统并挂载启动中#xff0c;我们通过buildroot制作了根文件系统#xff0c;并通过 SD卡的形式将其挂载到设备并成功进行了启动#xff0c;但上一章中#xff0c;我们的… 文章目录 1、AB分区镜像制作2、uboot修改3、镜像启动 在上一篇 Qemu开发ARM篇-5、buildroot制作根文件系统并挂载启动中我们通过buildroot制作了根文件系统并通过 SD卡的形式将其挂载到设备并成功进行了启动但上一章中我们的做法非常简单粗暴并且没有进行分区在本章中我们将对对 SD镜像进行分区并制作 AB分区的镜像。 1、AB分区镜像制作 uboot环境变量镜像制作 1、在工程目录新建etc文件并在里面新建uboot_env.txt文件,该文件用来描述所使用的环境变量后续我们将会将其制作为uboot_env的环境变量镜像并将其写入emmc(SD)分区中uboot将从这里面去读取环境变量。 mkdir etc cd etc touch uboot_env.txt并在uboot_env.txt中输入如下内容 bootcmdmmc read 0x60003000 0x3800 0x10000;mmc read 0x60500000 0x1800 0x400;bootm 0x60003000 - 0x60500000 bootargsroot/dev/mmcblk0p9 init/usr/sbin/init consolettyAMA0上面参数以及地址什么意思别急我们先将整个镜像制作出来在来说明上述参数含义因为上面的参数都是根据我们制作的镜像进行计算的. 2、在script目录使用touch make_AB_img.sh chmod 777 make_AB_img.sh命令创建AB分区镜像制作脚本并在制作脚本输入如下内容 #!/bin/bash ROOT_PATH$(pwd) OUT_PATH$ROOT_PATH/out/ab_img if [ -e $OUT_PATH ] thenrm -rf $OUT_PATH fi mkdir $OUT_PATH -p cd $OUT_PATH # 磁盘总大小为8G dd if/dev/zero ofvexpress_ab.img bs1M count8192 # msic part 512K sgdisk -n 0:0:512k -c 0:misc vexpress_ab.img # ubootenv part 512K 环境变量存放位置 sgdisk -n 0:0:512k -c 0:ubootenv vexpress_ab.img # dtb_a 512k 设备树 sgdisk -n 0:0:512k -c 0:dtb_a vexpress_ab.img # dtb_b 512k 设备树 sgdisk -n 0:0:512k -c 0:dtb_b vexpress_ab.img # vbmeta_a part 512K 安全校验 sgdisk -n 0:0:512k -c 0:vbmeta_a vexpress_ab.img # vbmeta_b part 512K sgdisk -n 0:0:512k -c 0:vbmeta_b vexpress_ab.img # boot_a partition 32M kernel分区 sgdisk -n 0:0:32M -c 0:boot_a vexpress_ab.img # boot_b partition 32M kernel分区 sgdisk -n 0:0:32M -c 0:boot_b vexpress_ab.img # rootfs_a partition 512M sgdisk -n 0:0:512M -c 0:rootfs_a vexpress_ab.img # rootfs_b partition 512M sgdisk -n 0:0:512M -c 0:rootfs_b vexpress_ab.img # userdata partition 剩余所有大小分配给userdata分区 sgdisk -n 0:0:0 -c 0:userdata vexpress_ab.imgsync # 显示分区信息 sgdisk -p vexpress_ab.img# 读取分区信息并挂载到回环设备 LOOPDEVlosetup -f echo $LOOPDEV sudo losetup $LOOPDEV vexpress_ab.img sudo partprobe $LOOPDEV sudo losetup -l ls -l $LOOPDEV*# 将userdata格式化为ext4格式 # sudo mkfs.ext4 ${LOOPDEV}p9 # sudo mkfs.ext4 ${LOOPDEV}p10 sudo mkfs.ext4 ${LOOPDEV}p11# 拷贝rootfs、kernel mkdir tem_file cp $ROOT_PATH/out/kernel-arm/arch/arm/boot/uImage tem_file/kernel cp $ROOT_PATH/out/kernel-arm/arch/arm/boot/dts/vexpress-v2p-ca9.dtb tem_file/vexpress-v2p-ca9.dtb cp $ROOT_PATH/out/rootfs-arm/images/rootfs.ext4 tem_file/rootfs.ext4 # 制作环境变量 mkenvimage -s 524288 -o tem_file/env.img $ROOT_PATH/etc/uboot_env.txt# 将对应分区数据写入对应分区 sudo dd iftem_file/env.img of${LOOPDEV}p2 convnotrunc sudo dd iftem_file/kernel of${LOOPDEV}p7 convnotrunc sudo dd iftem_file/vexpress-v2p-ca9.dtb of${LOOPDEV}p3 convnotrunc sudo dd iftem_file/rootfs.ext4 of${LOOPDEV}p9 convnotrunc# rootfs是ext4格式为了能让磁盘空间占满这里我们进行resize sudo resize2fs -f ${LOOPDEV}p9# 可以使用下面挂载copy的方式进行rootfs的创建这里我们采用上面的dd方式 # # 创建临时挂载目录用来像分区中copy数据 # mkdir tem_rootfs_a # mkdir tem_userdata # # 挂载rootfs_a和userdata分区 # sudo mount -t ext4 ${LOOPDEV}p7 ./tem_rootfs_a -o loop # sudo mount -t ext4 ${LOOPDEV}p9 ./tem_userdata -o loop # sudo cp -rf rootfs-arm/* ./tem_rootfs_a # sudo umount ./tem_rootfs_a # sudo umount ./tem_userdata# 取消回环设备 sudo losetup -d $LOOPDEV # rmdir ./tem_rootfs_a ./tem_userdata 上面其他命令对应都在代码中进行了相应的注释这里不在过多的阐述我们来解释一下上面 mkenvimage -s 524288 -o tem_file/env.img $ROOT_PATH/etc/uboot_env.txt这条制作uboot镜像的命令的含义 其中-s用来指定制作的uboot环境变量分区的大小env.img因为我们在进行分区划分的时候划分的为512k(sgdisk -n 0:0:512k -c 0:ubootenv vexpress_ab.img),512k512*1024524288字节因此在这里我们制作的uboot环境变量的大小也为512k。 注意上面镜像中未包含uboot这是因为我们qemu需要重uboot启动需要手动指定uboot镜像因此在AB分区中我们不制作uboot镜像另外vbmeta用作安全的目前我们还未使用到因此这里暂做保留。 然后运行./script/make_AB_img.sh 制作AB分区镜像。 运行完成之后会在out/ab_img/目录下生vexpress_ab.img镜像文件。 使用sgdisk查看镜像文件 可以看到和我们制作时候指定镜像大小是一致的。 3、uboot_env.txt中环境变量的含义 现在我们已经将镜像制作出来了现在我们就可以来深究一下上面uboot_env.txt中环境变量的含义了为什么这么设置以及为什么要设置为这些值。 首先是boot_cmd:我们设置的值为bootcmdmmc read 0x60003000 0x3800 0x10000;mmc read 0x60500000 0x1800 0x400;bootm 0x60003000 - 0x60500000 在uboot运行时候会自动运行bootcmd的值命令进行内核启动我们在bootcmd中也就是设置启动参数。 mmc read 0x60003000 0x3800 0x10000 解释 这条命令的意思是从emmc的0x3800块地址处读取0x10000块数据到0x60003000内存中。这里其实就是读取kernel的镜像为什么呢 使用sgdisk -p 命令可以看到制作分区情况也就是在上面图中我们可以看到boot_a的起始块地址为14336注意这是块地址每块是512字节而我们mmc read命令中需要的就是块地址因此我们这里在使用mmc read读取地址就是14336将其转换为16进制就是0x3800, 从上图分区情况我们还可以知道boot_a分区大小为32M321024k321024102433554432字节321024*1024/51265,536块转换为16进制为0x1 0000块所以上面最后一个参数为0x1 0000。 至于为什么将kernel内容读到内存0x60003000这个地址出这是因为我们在编译kernel的时候指定了其链接地址为0x60003000,忘记了的可以参考之前的文章Qemu开发ARM篇-4、kernel交叉编译运行演示 mmc read 0x60500000 0x1800 0x400 解释 这条命令意思和上面kernel差不多这里就快速过一下 dtb_a起始块地址:61440x1800 dtb_a分区大小512k5121024字节5121024/512块1024块0x400块 0x60500000 这里不将kernel覆盖掉的地址理论都可以这里设置为0x60500000 bootm 0x60003000 - 0x60500000 解释 这条命令是启动kernel的标准命令前面是内核的地址后面的dtb的地址都是上面我们进行指定的。 然后是boot_args:bootargsroot/dev/mmcblk0p9 init/usr/sbin/init consolettyAMA0 bootargs的参数会传递给内核用于挂载根文件系统以及指定系统初始化程序这里根文件系统位于/dev/mmcblk0p9分区初始化程序选择/usr/sbin/init,这个其实就是systemd我们在制作根文件系统选择的如果忘记的可以参考之前的文章Qemu开发ARM篇-5、buildroot制作根文件系统并挂载启动 2、uboot修改 因为我们将环境变量设置在了分区2因此我们需要对uboot进行配置告诉uboot在哪里去获取环境变量 运行我们之前编译uboot的脚本./script/build_uboot.sh进入到图形配置界面 1、找到环境变量配置选项 选项配置如下 取消掉in flash选项选中in mmc选项然后修改环境变量偏移为0x200000,这是因为我们环境变量起始块地址为4096块40965122,097,152字节0x200000,因此偏移为0x200000 环境变量size设置为0x80000这是因为我们环境变量大小为512k5121024524,288字节0x80000因此大小为0x80000 下面分区设备以及分区号都填0因为我们上面偏移都是从0开始计算的。 设置好之后保持配置为了不用每次都进行配置我们将该配置进行保存并替换原配置文件这样我们就不用每次都进行配置了使用如下命令保存该配置 cp ./src/uboot/u-boot-2022.07-rc3/configs/vexpress_ca9x4_defconfig ./src/uboot/u-boot-2022.07-rc3/configs/vexpress_ca9x4_defconfig_bak cp ./out/u-boot-arm/.config ./src/uboot/u-boot-2022.07-rc3/configs/vexpress_ca9x4_defconfig这样我们下次再编译的时候就会使用我们刚刚配置的配置了。 3、镜像启动 1、uboot信息确认 编译完新的uboot以及制作完分区镜像之后我们在script目录使用touch run_uboot_with_img.sh chmod 777 run_uboot_with_img.sh命令创建启动脚本并在启动脚本输入如下内容 #!/bin/bash qemu-system-arm -M vexpress-a9 -m 512M -kernel ~/project/qemu/out/u-boot-arm/u-boot -nographic -no-reboot -sd out/ab_img/vexpress_ab.img然后运行./script/run_uboot_with_img.sh启动uboot: 启动是按下回车先看看uboot内部情况。 可以看到环境变量加载成功使用printenv查看一下环境变量是不是我们刚才设置的 了可以看到环境变量和我们上面设置的一致在看看其他内容。 在uboot中使用mmcinfo查看磁盘情况 可以看到容量为8G和我们制作大小一致使用mmc part查看分区情况 可以看到分区信息也和我们指定的一致 使用ls mmc 0:9查看rootfs_a内容情况 可以看到里面内容正是我们制作的根文件系统。 2、启动 当上面一切都正常后使用run bootcmd启动内核看能否正常进入系统 可以看到已经成功启动了内核并成功挂载了根文件系统并进入了系统。 下一次uboot启动时不要按回车uboot就会自动运行bootcmd命令并启动内核进入系统。
http://www.hkea.cn/news/14351262/

相关文章:

  • 用织梦系统怎么做网站做网站 不是计算机专业
  • 如何做一个网站推广自己的产品网站不提交表单
  • 网站开发前后端配比在线设计logo图片
  • 有电脑网站怎样建手机项目概述
  • 网站建设到本地品牌网站建设工作室
  • 自己做产品网站济南网络科技有限公司
  • 登封网站制作网站建设网站更换空间后排名消失 首页被k
  • 网站备案管局中国域名根服务器
  • 织梦 网站模板分类目录网站做谷歌联盟
  • 订阅号栏目里做微网站建筑工程网上联合报审
  • 莆田市荔城区建设局网站flashfxp 网站
  • ui作品集 网站怎么做网站建设与维护下载
  • 自己做了一个网站如何将图床作为wordpress的插件
  • 如何做网站alexa排名佛山网站快速排名提升
  • 做系统网站提醒有风险北京ui设计app制作公司
  • 车网站建设策划sae网站备案
  • 最好的响应式网站淘宝 网站开发 退货
  • 网站cms系统排名wordpress install.php 空白
  • 一个阿里云怎么做两个网站吗商业网站建设定位
  • 那里做网站好十大暴利小型加工厂
  • 老板让做公司网站设计海外购物网站大全
  • 长春网站建设加q479185700网站建设的主要功能及定位
  • 网站title 在哪里设置建电子商务网站需要多少钱
  • 网站建设怎么外包好中小企业网上申报系统
  • 企业注册百家号可以做网站吗嵌入式开发工程师
  • 典当网站九江网站建设优化
  • 漯河市源汇区建设局网站11月70款国产网络游戏获批
  • 企业网站如何进行定位wordpress 加速会
  • 网站页面太多怎么做网站地图吉林省高等级公路建设局死人网站
  • 广东智能网站建设配件店面设计薪酬