前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >借助buildroot高效Linux调试环境

借助buildroot高效Linux调试环境

作者头像
用户4700054
发布于 2023-02-26 06:35:33
发布于 2023-02-26 06:35:33
67200
代码可运行
举报
运行总次数:0
代码可运行

下载buildroot

  • buildroot可以根据自己需求构建自己的内核,目前准备的内核是为了调试zfs.因此需要一个微内核,然后采用qemu-kv+gdb方式进行调试.后续也想着怎么把lustre环境搞到里面了。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@ubuntu /mnt/buildroot-2022.02.4]$ sudo apt install dwarves  libelf-dev[root@ubuntu ~]$ wget https://buildroot.org/downloads/buildroot-2022.02.4.tar.gz[root@ubuntu ~]$ tar zxvf buildroot-2022.02.4.tar.gz && cd buildroot-2022.02.4

配置buildroot选项

  • buildroot预设置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// buildroot 预设置[root@ubuntu ~]$ make qemu_x86_defconfig


// 菜单配置[root@ubuntu ~]$ make menuconfig
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 配置菜单说明
Target options ---> 目标选项
Build options ---> 生成选项
Toolchain ---> 工具链
System configuration ---> 系统配置
Kernel ---> 内核
Target packages ---> 目标包
Filesystem images ---> 文件系统映像
Bootloaders ---> 引导加载程序
Host utilities ---> 主机实用程序
Legacy config options ---> 旧版配置选项
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 菜单选项的配置
System configuration  ---> 
	/dev management (Dynamic using devtmpfs + eudev)// 配置如下的选项
Build options  --->  
	[*] build packages with debugging symbols                                                                           
         gcc debug level (debug level 3)  Toolchain  --->  
	C library (glibc) 
    Custom kernel headers series (5.15.x)  Kernel  --->  
	Kernel version (Custom version)
  • 修改fs/ext2root文件系统大小
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@ubuntu /mnt/buildroot-2022.02.4/fs/ext2]$ vi Config.in 

// 这里必须修改config BR2_TARGET_ROOTFS_EXT2_SIZE
        string "exact size"
        default BR2_TARGET_ROOTFS_EXT2_BLOCKS if BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP # legacy 2017.08
        // 这里设置为4G
        default "4g"
        help
          The size of the filesystem image. If it does not have a
          suffix, it is interpreted as power-of-two kilobytes. If it is
          suffixed by 'k', 'm', 'g', 't' (either upper-case or
          lower-case), then it is interpreted in power-of-two kilobytes,
          megabytes, gigabytes, terabytes, etc.// 方式二,忘记修改了可以修改[root@ubuntu /mnt/buildroot-2022.02.4/fs/ext2]$ vi ext2.mk 
#ROOTFS_EXT2_SIZE = $(call qstrip,$(BR2_TARGET_ROOTFS_EXT2_SIZE))// 这里的单位是K,评估发行版的os大小ROOTFS_EXT2_SIZE = 4240000
  • 开始编译
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 脚本会自动下载包记性gcc编译[root@ubuntu ~/buildroot-2022.02.4]$ make -j12 linux-menuconfig// 运行很长时间会弹出linux内核配置,然后执行make,会编译很长时间[root@ubuntu ~/buildroot-2022.02.4]$  make -j 4 // 编译完成后会有如下输出// 编译完成保留buuld/linux-4.19和images[root@ubuntu ~/buildroot-2022.02.4/output]$ tree ./ -L 2./├── build
│   └── linux-4.19└── images
    ├── bzImage
    ├── rootfs.ext2
    └── start-qemu.sh3 directories, 3 files
开始调试阶段
  • 启动kvm
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
qemu-system-x86_64 -kernel ~/buildroot-2022.02.4/output/images/bzImage  -hda ~/buildroot-2022.02.4/output/images/rootfs.ext2  -append "root=/dev/sda console=ttyS0" -s -S  -smp 1 -nographic
  • 启动gdb调试
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@ubuntu ~/buildroot-2022.02.4/output/build/linux-4.19]$ gdb ./vmlinux
GNU gdb (Ubuntu 12.0.90-0ubuntu1) 12.0.90(gdb) set architecture i386:x86-64
The target architecture is set to "i386:x86-64".(gdb) target remote localhost:1234
Remote debugging using localhost:1234
0x000000000000fff0 in ?? ()(gdb) br do_mount
Breakpoint 1 at 0xc119a850: file fs/namespace.c, line 2710.(gdb) c
Continuing.

Breakpoint 1, do_mount (dev_name=0xc7802410 "devtmpfs", dir_name=0xc7802420 "devtmpfs", type_page=0xc177fd81 "/", flags=1936093293, data_page=0x0) at fs/namespace.c:27102710    {
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 存储内核技术交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Cinemachine(一)VirtualCamera和Brain的简单介绍「建议收藏」
在游戏中,摄像头的效果是非常重要的,将会直接影响到呈现在玩家眼中的画面,好的效果可以直接提高玩家的游戏体验,给予一种身临其境的感觉。例如在一个FPS游戏中,我们往往需要摄像头跟随我们的角色,做一些第一人称第三人称的切换,当角色进入室内时需要调整摄像头位置来防止被墙挡住,在使用倍镜时需要摄像头观察远处的画面等等。以为要实现这些效果我们需要编写很多的控制代码来控制我们的Camera,然而再有了Cinemachine之后,一切都会变得简单起来。
全栈程序员站长
2022/09/01
7K1
Unity Cinemachine插件全功能详解
实现电影级别的分镜,推拉式镜头等,需要2017以上的版本才能使用,配合TimeLine一起使用,和Animator一起.
全栈程序员站长
2022/06/27
2.5K0
Unity Cinemachine插件全功能详解
Unity虚拟相机Cinemachine教程[通俗易懂]
参数介绍: Live Camera:当前显示的相机 Live Blend:过度相机时显示进度 Show Debug Text:在Game视窗里显示当前使用的相机
全栈程序员站长
2022/09/01
5.9K1
Unity Cinemachine & Timeline 制作镜头动画
Cinemachine是Unity官方推出的一套相机管理解决方案,配合Timeline使用可以实现电影级别的分镜镜头,下面以一个车子移动的例子简单介绍Cinemachine和Timeline的配合使用。
CoderZ
2022/08/29
2.1K0
Unity Cinemachine & Timeline 制作镜头动画
Cinemachine初体验
可以直接从package manager里面安装(踩过的坑:导入samples时可能会出现sample和当前使用的unity版本不兼容的情况,更换版本即可)
全栈程序员站长
2022/09/02
6410
Cinemachine教程☀️ 一、本插件的基础功能
Brain:放在相机Camera上的一个组件。可对接无数多个虚拟相机VCam,控制相机镜头切换
星河造梦坊官方
2024/08/15
3830
Cinemachine教程☀️ 一、本插件的基础功能
Unity–Cinemachine官方实例详解
搭建一个快速场景,MainCamera选择Orthographic。在Cinemachine下有Create 2D Camera,在生成的相机中设置follow,同时注意body的设置,如下图所示
全栈程序员站长
2022/08/24
1.8K0
Unity–Cinemachine官方实例详解
unity 的Cinemachine组件运用
通过Package Manager 安装CineMachine 1) 最简单的方法使用freeLook虚拟相机
全栈程序员站长
2022/08/27
2K0
unity 的Cinemachine组件运用
Cinemachine(四)在路径/轨道上移动的摄像头(Cinemachine Dolly Camera,Path And Cart)
在很多游戏的开场动画或者CG里,我们往往会碰见一些很酷炫的镜头效果。例如一个场景,我们的画面会从远处可以观察到整个场景到被拉近视角观察到场景中的主角。又或者一些CG动画中,我们的视角会像一直飞翔的老鹰一样,掠过整个场景。
全栈程序员站长
2022/09/02
1.9K0
Cinemachine使用
根据BeaverJoe教程总结笔记,素材来源:https://www.bilibili.com/video/BV1oa4y1s7gg
全栈程序员站长
2022/09/01
8190
cinemachine_2D Cinemachine:提示和技巧「建议收藏」
大家好,又见面了,我是你们的朋友全栈君。 cinemachine Have you been working on a camera system for your 2D game for age
全栈程序员站长
2022/09/01
5600
Cinemachine(三)自动选择/切换最适合的摄像头(Cinemachine Clear Shot Camera)「建议收藏」
在很多的解谜类游戏中,场景中往往会有很多密室,玩家需要在不同的房间中来回穿梭,除了第三人称摄像头外,我们也可以通过在不同的房间中布置不同的Camera,然后当角色到达指定房间后开启对应的Camera来处理。类似的效果如下图:
全栈程序员站长
2022/08/24
4480
Cinemachine(三)自动选择/切换最适合的摄像头(Cinemachine Clear Shot Camera)「建议收藏」
Unity3D使用Cinemachine配合Timeline实现运镜效果
Unity3D中的插件Cinemachine高级虚拟摄像系统,配合Timeline时间轴一起使用,可以实现像电影级别的分镜等效果,这篇我们就继续用上个模拟收费通过的项目,在这个基础上使用Cinemachine配合Timeline实现一个运镜的效果。
Vaccae
2020/09/01
3.6K0
Unity3D使用Cinemachine配合Timeline实现运镜效果
unity3d 入门[通俗易懂]
vscode直接加载文件夹,不要使用unity右键打开项目,unity2019bug导致vscode打开后没有界面,后才占用项目,不能右键打开。
全栈程序员站长
2022/09/22
3.7K0
unity3d 入门[通俗易懂]
unity3d 入门
vscode直接加载文件夹,不要使用unity右键打开项目,unity2019bug导致vscode打开后没有界面,后才占用项目,不能右键打开。
sofu456
2022/05/06
2.9K0
unity3d 入门
【游戏开发实战】2D游戏摄像机镜头跟随,屏幕边缘限制镜头移动(使用Cinemachine组件)
嗨,大家好,我是新发。 有老铁留言问我能不能写一下2D镜头跟随以及人物移动到屏幕边缘限制镜头的文章,
全栈程序员站长
2022/09/01
2.1K0
一、事件函数的执行顺序(脚本的生命周期)
上图概括了unity如何在脚本的生命周期内对事件函数进行排序以及重复执行这些事件函数。
酱紫安
2020/07/20
2.7K0
unity3d自学教程_3D技巧
Unity3D软件是由Unity Technologies公司提供的综合开发环境,主要面向游戏开发人员、虚拟现实设计师等,可用于创建诸如三维视频游戏、建筑可视化、实时三维动画等类型的多媒体内容,并支持这些内容在Windows、iOS、Android等多种平台的发布,功能非常强大。
全栈程序员站长
2022/09/22
3.5K0
unity3d自学教程_3D技巧
【Unity面试篇】Unity 面试题总结甄选 |Unity基础篇 | ❤️持续更新❤️
答:Awake —> OnEnable —> Start —> FixedUpdate —>Update —> LateUpdate—> OnGUl —> OnDisable —> OnDestroy
呆呆敲代码的小Y
2023/07/24
3K0
【Unity面试篇】Unity 面试题总结甄选 |Unity基础篇 | ❤️持续更新❤️
Cinemachine(二)制作不会穿墙(会避开障碍物)的摄像头(Cinemachine Collider)
在许多的第三人称游戏中,我们的摄像机往往保持着一定的偏移,跟随着我们的角色。但是常常会出现的一种情况就是,当我们的角色走进室内或者靠近墙边或障碍物的时候,如果这个偏移保持不变的话,我们的摄像机就可能会跑到墙体里,或者看向角色时被墙体或障碍物所挡住。因此这种情况下我们的相机往往需要一些特殊的处理,例如修改偏移量来拉近相机与角色的距离等,来防止上述情况的出现。
全栈程序员站长
2022/08/24
1.3K0
Cinemachine(二)制作不会穿墙(会避开障碍物)的摄像头(Cinemachine Collider)
推荐阅读
相关推荐
Cinemachine(一)VirtualCamera和Brain的简单介绍「建议收藏」
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验