随记,不定时更新驱动相关知识,累积驱动开发相关经验
一、知识点
1. bios与vbios的区别
BIOS(Basic Input/Output System)和VBios(Video BIOS)是计算机系统中的两个不同的组成部分,它们具有以下区别:
-
功能不同:BIOS是计算机系统的基本输入/输出系统,负责启动计算机、初始化硬件设备和提供基本的操作系统功能。它包含了一些固化的程序和设置,用于管理计算机系统的硬件和软件。而VBios是显卡的BIOS,主要负责管理和控制显卡的工作,包括显示输出、显存管理、显示模式设置等。
-
定位不同:BIOS是计算机系统的一个整体组成部分,存在于主板上的固化芯片中。它与计算机的其他硬件设备(如处理器、内存等)紧密相关。而VBios则是显卡上的一个独立的固化芯片或固件,与显卡硬件紧密结合。
-
可更新性不同:BIOS通常可以通过固件升级来更新,以支持新硬件或修复现有的问题。而VBios的可更新性相对较低,通常只在显卡制造商发布的驱动程序中进行更新。
-
功能范围不同:由于BIOS是计算机系统的基本组成部分,它涉及到整个系统的初始化和管理,包括处理器、内存、硬盘等。而VBios仅涉及显卡的功能和设置,例如显示输出、分辨率、颜色设置等。
总之,BIOS是计算机系统的基本输入/输出系统,而VBios是显卡的BIOS,负责显卡的管理和控制。它们在功能、定位、可更新性和功能范围等方面存在区别。
2. “烧固件”的固件
在实际应用中,烧录固件时所指的“固件”可以包括各种类型的嵌入式软件程序,用于控制设备的操作和功能。以下是一些常见设备中可能需要烧录的固件类型及其示例:
-
BIOS(基本输入/输出系统):
-计算机的主板上存储的 BIOS,负责初始化硬件、启动操作系统等。 -
UEFI(统一扩展固件接口):
-最新的计算机主板和服务器通常采用 UEFI 替代传统 BIOS,用于提供更先进的引导和系统管理功能。 -
路由器固件:
-路由器中的固件程序,控制网络路由、无线连接、安全设置等功能。 -
嵌入式系统固件:
-嵌入式设备(如智能家居设备、工业控制系统)中的固件,用于控制设备的操作和功能。 -
固态硬盘固件:
-固态硬盘(SSD)中的固件,影响存储器的性能、稳定性和兼容性。 -
显卡固件(VBIOS):
-显卡中的 VBIOS,控制显示输出、分辨率、颜色深度等功能。 -
固件更新程序:
-用于将新固件烧录到设备中的更新程序,确保设备具有最新的功能和修复漏洞。
这些都是常见设备中可能需要进行固件烧录的类型,通过更新固件可以改善设备的性能、功能和安全性。本人工作中常说的“烧固件”一般指的是擦除并写入vbios。
二、测试工具
1. glxgears-3D
齿轮(glxgears)是一个简单的 OpenGL 渲染器,用于测试 3D 图形的性能。在 Linux 系统中,你可以按照以下步骤下载并安装齿轮:
-
打开终端:在 Linux 中,按下
Ctrl + Alt + T
组合键来打开终端。 -
安装 Mesa 工具包:输入以下命令来安装 Mesa 工具包:
sudo apt-get install mesa-utils
Mesa 工具包是一个 OpenGL 实现,它提供了许多有用的工具,包括齿轮。
-
运行齿轮:在终端中输入以下命令来运行齿轮:
glxgears
这将会启动齿轮应用程序,并显示一个旋转的齿轮。你可以通过关闭应用程序来停止它。
请注意,齿轮并不是一个严格意义上的性能测试工具,因为它只是简单地旋转一个齿轮,而不涉及任何复杂的场景或纹理。因此,它只能提供一个粗略的性能估计。如果你需要一个更全面的性能测试工具,可以考虑使用更专业的测试软件,如 Unigine Heaven 或 3DMark。
2. glmark2-3D
glmark2 使用的 OpenGL 和 OpenGL ES API 进行测试,提供了一系列的渲染场景和测试选项,旨在评估计算机系统的 3D 图形渲染能力。
注意,glmark2 通过测试帧率(FPS)和性能得分,对系统的图形处理能力进行评估和比较。但主要用于比较不同系统或硬件之间的图形性能差异,并不一定代表实际应用程序的性能。在使用 glmark2 进行测试时,需要注意测试环境的一致性和可比性。
要在Ubuntu系统上安装 glmark2,可以按照以下步骤进行操作:
-
打开终端(Terminal)应用程序。你可以通过按下
Ctrl
+Alt
+T
快捷键来打开终端。 -
在终端中运行以下命令,以更新软件包列表和依赖关系:
sudo apt update
- 安装 glmark2 软件包:
法一:通过包管理器安装
sudo apt install glmark2
法二:通过源代码编译安转(kylin系统实操推荐)
首先,确保你的系统上安装了必要的编译工具和依赖项。通常需要安装 git
、cmake
、gcc
、make
等工具,以及 OpenGL
开发库。
# 从它的 GitHub 仓库中克隆源代码:
git clone https://github.com/glmark2/glmark2.git
# 切换到打了tag的发布版本
cd glmark2
git checkout
git checkout xxx
# 查看安装说明
vim README
vim INSTALL
# 此处选择第二种安装方式
# 配置:一般用来测gl,配置选x11-gl
./waf configure --with-flavors=x11-gl
# 编译
./waf
# 安装
./waf install --destdir=DESTDIR
# 运行
glmark2
- 安装完成后,你可以在终端中运行
glmark2
命令来启动 glmark2 基准测试程序。
glmark2 会执行一系列的图形测试,并显示性能得分和帧率等信息。你可以根据需要选择不同的测试选项,例如 glmark2
、glmark2-es2
或 glmark2-es2-wayland
等。具体的选项可以通过运行 glmark2 --help
命令来查看。
请注意,在运行 glmark2 之前,确保你的系统已经安装了正确的显卡驱动程序,并且显卡支持所需的 OpenGL 版本。否则,可能会出现兼容性问题或无法运行的情况。
三、驱动包
1. Xorg中的三个包
xserver-xorg-video-amdgpu、
xserver-xorg-video-ati、
xorg-server
这里是对这三个包的详细说明:
-
xserver-xorg-video-amdgpu
:这是一个 Xorg 服务器驱动程序包,用于支持基于 AMD GPU 的显卡设备。它提供了与 AMD 显卡硬件通信所需的功能和接口。 -
xserver-xorg-video-ati
:这也是一个 Xorg 服务器驱动程序包,用于支持基于 ATI(现已归并入 AMD)GPU 的显卡设备。它提供了与 ATI 显卡硬件通信所需的功能和接口。然而,值得注意的是,从 Ubuntu 18.04 开始,AMDGPU 驱动已成为默认的开源驱动选择,因此在最新版本的 Ubuntu 中,xserver-xorg-video-ati
包通常不再被推荐使用。 -
xorg-server
:这是 X Window System 的服务器端实现,也被称为 Xorg 服务器。它是一个开源的图形显示服务器,负责管理输入设备(如键盘、鼠标)和输出设备(如显示器)之间的通信,以及处理图形渲染和窗口管理等任务。xorg-server
提供了通用的框架和接口,使得各种显卡驱动程序能够与 Xorg 服务器进行交互,并提供图形显示功能。
联系:
xserver-xorg-video-amdgpu
和xserver-xorg-video-ati
都是 Xorg 服务器的显卡驱动程序包,它们旨在支持不同系列的 AMD 显卡设备。它们的目标都是提供适当的接口和功能,从而使 Xorg 服务器能够与相应的显卡硬件进行交互。xorg-server
是 Xorg 服务器本身,它是一个通用的图形显示服务器,可以与多种显卡驱动程序进行配合。
区别:
xserver-xorg-video-amdgpu
和xserver-xorg-video-ati
针对的是不同的 AMD 显卡系列。前者主要支持新一代的 AMDGPU 驱动程序,后者则支持旧一些的 ATI 驱动程序。xserver-xorg-video-amdgpu
和xserver-xorg-video-ati
是作为 Xorg 服务器的插件或模块提供的,它们需要依赖xorg-server
来运行。而xorg-server
则是整个 X Window System 的核心组件。
需要注意的是,具体的软件包名称可能因不同的 Linux 发行版而略有不同,上述名称是基于 Ubuntu 系统的命名约定。如有需要,你可以参考特定发行版的文档以获取准确的软件包名称和相关信息。
3. 火焰图 FlameGraph
火焰图(Flame Graph)是一种可视化工具,主要用于分析和展示程序运行时的采样数据,特别是用于CPU性能分析。通过火焰图,可以直观地看到程序的性能瓶颈,识别出占用大量CPU时间的代码路径。以下是分析火焰图结果的一些要点:
(1)理解火焰图的结构:
- X轴(水平轴):代表不同的代码路径或调用栈。每个矩形表示一个函数调用,宽度表示该函数在总样本中的比例。
- Y轴(垂直轴):代表调用栈的深度。下往上看,可以追踪一个函数是被哪些上层函数调用的,从而了解整个调用链条。
(2)热点识别:
- 火焰图最重要的应用是识别性能热点。如果某个矩形(函数调用)特别宽,说明该函数占用了较多的CPU时间,是一个潜在的性能瓶颈。
- 关注火焰图中最大的、最宽的“火焰”,这些通常是你需要优化的地方。
(3)颜色含义:
- 一般情况下,火焰图的颜色并没有特定的含义,只是为了区分不同的函数。
(4)过滤和聚焦:
- 大多数火焰图工具允许你对某些部分进行放大、过滤或者聚焦。这对于大型应用程序尤为重要,因为它们的火焰图可能非常复杂。
- 你可以通过这种方式专注于某个子树或者特定的代码路径,进行详细分析。
(5)结合代码分析:
- 在识别出性能热点之后,往往需要回到具体的代码中,检查相应的函数实现,寻找可能的优化点。
- 有时候,性能瓶颈可能是由于算法效率低下、资源争用、高频率的I/O操作等问题导致的,需要具体问题具体分析。
总之,通过火焰图,你可以直观地看到程序执行过程中各个函数所占用的CPU时间,从而找到性能瓶颈,进行针对性的优化。
在Kylin系统上运行火焰图的过程大致如下:
- 安装必要工具
首先,在Kylin系统上安装所需的性能分析工具和火焰图生成工具。以下是一些必要步骤:
(1)安装perf
perf
是一个强大的Linux性能分析工具,通常在许多Linux发行版中都包含。
sudo yum install perf # 对于Yum-based系统,如CentOS
sudo apt-get install linux-tools-common linux-tools-generic # 对于Debian-based系统,如Ubuntu
(2)安装 FlameGraph
火焰图工具由Brendan Gregg开发,可以从GitHub获取。
git clone https://github.com/brendangregg/FlameGraph.git
- 收集性能数据
使用perf
记录目标程序的性能数据。例如,如果你想分析一个名为my_program
的程序:
sudo perf record -F 99 -a -g -- ./my_program
这会生成一个名为 perf.data
的文件,该文件包含了性能数据。
具体参数的含义如下:
- sudo: perf通常需要权限来获取系统性能数据。
- perf record: 表示要进行性能数据的记录。
- -F 99: 指定采样频率为99赫兹,即每秒进行99次采样。
- -a: 采集所有进程的数据,而不是只针对指定的进程。
- -g: 采集调用关系(Call Graph)信息,可以显示函数调用关系。
- – ./my_program: 表示要执行的程序是"my_program",这里可以替换成你要监测的具体程序。
你可以根据自己的需求添加其他参数选项,例如:
- -p : 只监测特定进程的性能数据。
- -e : 监测指定的硬件事件,比如指令数、缓存访问等。
- -o : 将输出保存到指定文件中,以便后续分析。
根据实际需求,你可以结合perf的文档或手册来了解更多参数选项,并根据需要进行配置。
- 生成火焰图
接下来,使用perf
工具将性能数据转换为可以生成火焰图的格式。
sudo perf script > out.perf
然后,使用 FlameGraph
工具将 perf
数据转换为火焰图。
cd FlameGraph
./stackcollapse-perf.pl out.perf > out.folded
./flamegraph.pl out.folded > flamegraph.svg
- 查看火焰图
生成的flamegraph.svg
文件是一个SVG格式的火焰图,可以使用Web浏览器打开并查看。
xdg-open flamegraph.svg # 在Linux桌面环境下
示例总结
以下是完整的流程汇总:
# 1. 安装必要工具
sudo yum install perf
git clone https://github.com/brendangregg/FlameGraph.git
# 2. 收集性能数据
sudo perf record -F 99 -a -g -- ./my_program
# 3. 生成火焰图
sudo perf script > out.perf
cd FlameGraph
./stackcollapse-perf.pl out.perf > out.folded
./flamegraph.pl out.folded > flamegraph.svg
# 4. 查看火焰图
xdg-open flamegraph.svg
注意事项
- 需要具有超级用户权限来运行
perf
和其他一些性能分析工具。 - 确保目标程序在收集数据期间有足够的负载,以便生成有意义的火焰图。
四、常见操作
1. 禁用集显
- 两种方式:
第一种,bios禁用集成显卡;第二种,修改grub配置文件(内核引导参数)禁集显。
前者是直接从硬件上禁用,使系统识别不到集显;后者是移除集显的驱动,使它无法加载,也可以达到禁用的目的。 - 具体操作:
- bios禁用集显:不同固件禁用操作略微不同,可自行百度。
样例:开机按delete进bios,进入display,选择显示优先顺序为独显。 - 修改内核引导参数禁用:
(法一,kylin服务器使用过)
- 首先确认台子存在集显和独显(其他显卡亦可)
lspci | grep VGA
- 查看集显具体信息
lspci -s 09:00.0 -vv
lspci -s 09:00.0 -vv
命令用于显示特定 PCI 设备的详细信息,包括其配置寄存器、驱动程序信息等。下面是该命令各部分作用:
lspci
: 该命令用于列出系统中所有的 PCI 设备信息。-s 09:00.0
: 指定要显示详细信息的 PCI 设备的地址。在这里,09:00.0
是一个示例地址,实际使用时应根据系统中具体的 PCI 设备进行替换。-vv
: 这是lspci
命令的选项之一,用于显示更为详细的信息。每个-v
选项增加一层详细程度,因此-vv
表示显示更详细的信息。
- 查看此时运行的内核的命令行参数:
cat /proc/cmdline
- 修改内核引导参数,即grub配置:
vim /boot/efi/EFI/kylin/grub.cfg
在module_blacklist=phytium_mci_pci后添加内容"module_blacklist=phytium_mci amdit=0"(若有某一部分则该部分无需添加)(目的是将集显加入黑名单)
- 重启系统以应用新的内核引导参数,禁用集成显卡。
(法二,可能有效,没试过)
- 以管理员身份编辑配置文件。你可以使用以下命令打开 GRUB 配置文件进行编辑:
sudo vim /etc/default/grub
- 找到
GRUB_CMDLINE_LINUX_DEFAULT
行,该行包含内核引导参数。将其修改为包含video=disconnected
参数,例如:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=disconnected"
- 保存文件并关闭编辑器。然后更新 GRUB 配置,使更改生效。运行以下命令:
sudo update-grub
- 重启系统以应用新的内核引导参数,禁用集成显卡。
请记住,具体操作可能会因操作系统版本和配置而有所不同,建议在操作前做好备份并确保了解自己系统的相关信息。
2. 接串口看信息
- 用串口线(含3端:TX、RX、GND)接上主板上标有CPU_UART的三个针孔。
注意:一般情况下除了串口地线GND对应主板GND,其他两个反着接。即串口GND-主板GND,串口TX-主板RX,串口RX-主板TX。
注意:先确定串口位置和串口类型,主板间不一样。其中地线GND和主板电压想通,用万用表测没有电压差的即为GND针。
2. 串口一端接调试台的CPU_UART三个针孔,一端接主机(本人为windows),长度不够使用usb延长线。如图,串口使用的CH340 USB转TTL。
(龙芯:使用USB转RS232,需要下载对应该串口类型驱动)
4. 主板需要相应串口驱动,查看主机设备管理器,端口是否有“ USB-SERIAL CH340(COM4)”,括号对应主机的usb接口号。
主机ssh连接调试台,识别到端口后,通过修改ssh的属性信息使串口打印信息显示在ssh上,修改内容如下图:
5. 调试台关机。重新启动后能在ssh上修改的属性窗口看到相应的串口打印信息(如果打印信息较少,可能是没有打开系统的信息,方法可以百度尝试解决)
本次串口打印信息依次为:进入BIOS的信息、进入系统的信息(从”按下xx键进入“开始)
3. 将所有信息实时打印到串口
调试时系统卡死,重启后无法获取相关log,将信息实时打印到串口可得到一手消息(出问题的log记录)
要将内核信息加入到串口打印中,可以参考以下步骤:(龙芯+UOS系统接RS232串口实测)
法一:修改系统配置文件(永久生效)
修改 /etc/grub.d/10_linux
配置文件:
-
打开
/etc/default/grub
文件,找到GRUB_CMDLINE_LINUX_DEFAULT
行,并在其中添加一个参数console=ttyS0,115200n1 loglevel=7
。这个参数指定了将系统控制台输出重定向到串口设备 ttyS0,波特率为 115200,并将log信息详细程度开到最大7。例如:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash console=ttyS0,115200n1 loglevel=7"
-
打开
/etc/grub.d/10_linux
文件,找到linux_entry()
函数,然后在函数中找到类似以下的代码块:(此步实测不需要)if [ -z "${recovery_mode}" ] ; then echo " linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}" else echo " linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro single ${args}" fi
在这个代码块中添加一个参数 console=ttyS0,115200n1
,以便将输出重定向到串口设备。例如:
if [ -z "${recovery_mode}" ] ; then
echo " linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} console=ttyS0,115200n1"
else
echo " linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro single ${args} console=ttyS0,115200n1"
fi
保存文件并退出。
- sudo权限看
/boot/grub.cfg
实际文件是否修改成功:
sudo su
vim /boot/grub.cfg
-
运行以下命令更新 grub 配置:
sudo update-grub
-
重新启动系统,内核信息将会被输出到串口设备 ttyS0 中。如果你使用的是串口终端软件,可以通过该软件查看输出信息。
注意:请确保你的系统已经连接了串口设备,并且该设备已经正确设置。
法二:修改BIOS界面配置(本质相同,单次生效)
如图,按e进入编辑,此处一条一条的内容即为配置文件中menu_entry函数实现。
加入相关参数:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash console=ttyS0,115200n1 loglevel=7"
Ctrl+s
保存后登陆系统,即可见串口打印了内核等的相关信息。
4. 制作系统安装U盘
本人工作在windows上常用Refus工具、linux用dd命令去做系统启动盘。
基本操作过程如下:
Windows使用Refus工具
需要:u盘(提前保存内容,后续格式化)、系统镜像、refus工具、windows系统机器
操作:
- 打开Refus,选好如下图选项后开始制作,
- 完成后将U盘插入台子,BIOS设置启动顺序优先u盘,开始安装系统,安装好后拔出U盘重启即可。
linux使用dd命令
需要:U盘、系统镜像、linux系统机器
操作:
- 插U盘前后,用
df -h
查看所有存储设备及其挂载点,从而确定 U 盘的设备路径(如/dev/sdX
)。(命令lsblk
或fdisk -l
也可) - 如果你的u盘被分成多个分区了,你需要全部umount, 命令为
sudo umount /dev/sdb1
- 使用dd命令将镜像写入刚才找到的分区,注意:不用写分区号。
sudo dd if=/home/jack/ubuntu.16.04.iso of=/dev/sdb bs=4M
设置块大小为 4MB,有助于提高写入速度。
小技巧:你可以在另外一个终端观察运行情况。
sudo watch kill -USR1 $(pgrep ^dd)
解释一下:watch观察命令的运行,kill命令发送一段信号,-USR1是dd专用的信号,它接收到该信号,就会显示刻录的进度。 - 当刻录结束后,运行
sync
该命令是检查一下,刻录是否运行完毕,当sync结束后,就可以安全的拔出u盘了。(sudo eject /dev/sdX
)
5. ip配置注意事项
- IP地址冲突检查
检查IP地址是否与其他设备冲突
arp -a | grep <IP地址>
如果输出中有对应的MAC地址,则表示存在IP地址冲突。
- ssh服务检查(client和server安装、开机自启动)
- 检查ssh的client和server是否安装,否则不能互ping通:
apt list | grep ssh
- 检查SSH服务是否安装并默认启动:
sudo systemctl status ssh
如果SSH正在运行,您将看到类似以下输出:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-05-12 10:12:59 PDT; 1 day 2h ago
Main PID: 1234 (sshd)
Tasks: 1 (limit: 4635)
CGroup: /system.slice/ssh.service
└─1234 /usr/sbin/sshd -D
要检查SSH是否设置为开机自启动,可以使用以下命令:
sudo systemctl is-enabled ssh
如果已经设置为开机自启动,会看到输出 enabled
;没有则会看到输出 disabled
。
将SSH设置为开机自启动:
sudo systemctl enable ssh
- network服务重启
ip配置好后需要重新network:
sudo systemctl restart network/networking
- 防火墙状态检查
图像界面看防火墙设置是否关闭。下面命令方法暂未验证。
sudo systemctl status firewalld
如果防火墙已关闭,则输出将显示 inactive
。
- 网络配置文件静态IP配置检查
检查网络配置文件中是否配置了静态IP地址.
kylin系统:
# /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
其他系统可尝试:(未验证)
cat /etc/sysconfig/network-scripts/ifcfg-<接口名称>
这将显示指定接口的配置信息。检查是否有 BOOTPROTO=static
行以及相应的IP地址配置。
- 网口状态检查
以上事项都没问题但不能互ping通,则考虑是不是网口坏了,换换网线、网口。 - 互ping通但xshell连不上
排除xshell问题后,图像界面切换成单/多用户模式,则能连上。(龙芯+uos遇到过,暂不清楚原因)
# 单次切换
sudo systemctl isolate multi-user.target
# 默认自启动
sudo systemctl set-default multi-user.target
- 相关ip配置命令
(1)可设置ip(未深入了解)
ifconfig <网口名如eth0> <IP地址>
6. linux系统 - 单/多用户模式、图形界面(GUI)
在Linux系统中,单用户模式通常用于系统维护和故障排除,而多用户模式是正常的运行状态,允许多个用户同时登录系统,通常具有网络和其他服务的支持。
- 进入多用户模式
(1)单次切换 多用户目标:sudo systemctl isolate multi-user.target
(2)默认开机自启动 多用户模式:
bash sudo systemctl set-default multi-user.target
2. 进入单用户模式
(1) 单次切换 单用户模式:
bash sudo systemctl isolate rescue.target
(2)默认开机自启动 单用户模式(未验证)
bash sudo systemctl set-default rescue.target
3. 进入系统的图形界面(GUI)
(1)单次切换 图像界面
bash sudo systemctl isolate graphical.target
(2)默认开机自启动 图形界面
bash sudo systemctl set-default graphical.target
7. GDB调试Xorg
分析驱动代码xorg时,常结合gdb调试,常用方式有(sudo gdb -p
pidof Xorg)和(
sudo gdb /usr/lib/xorg/Xorg`)。
GDB具体使用见GDB调试
以下着重讲二者区别:
两种调试方式的区别在于如何指定被调试的进程和可执行文件:
-
sudo gdb -p
pidof Xorg
:- 这种方式是通过进程ID(PID)来调试正在运行的进程。具体步骤是:
pidof Xorg
命令会返回 Xorg 进程的 PID。sudo gdb -p <PID>
将以超级用户权限启动 GDB,并附加到指定 PID 的进程(这里是 Xorg)上进行调试。
- 这种方式适合于已经在运行中的 Xorg 进程,例如,在桌面环境中。
- 这种方式是通过进程ID(PID)来调试正在运行的进程。具体步骤是:
-
sudo gdb /usr/lib/xorg/Xorg:
- 这种方式是直接调试可执行文件本身,而不是正在运行的进程。具体步骤是:
sudo gdb /usr/lib/xorg/Xorg
将以超级用户权限启动 GDB,并加载指定的 Xorg 可执行文件。- 这样做允许你在还没有启动 Xorg 或者无法直接进入桌面环境时调试 Xorg 的执行文件。
- 这种方式是直接调试可执行文件本身,而不是正在运行的进程。具体步骤是:
区别总结
-
通过进程ID调试 (
sudo gdb -p
pidof Xorg`):- 适用于已经在运行中的进程。
- 可以直接查看和调试当前正在进行的动态行为。
- 需要确保你有足够的权限来附加到目标进程。
-
直接调试可执行文件 (
sudo gdb /usr/lib/xorg/Xorg
):- 适用于调试还未启动或者无法直接访问的进程(例如,Xorg 在某些情况下可能无法直接启动或者会直接进入桌面环境)。
- 允许你在启动之前设置断点和进行其他调试准备工作。
- 需要知道可执行文件的确切路径,并确保你有权限访问该文件。
五、行业认知
1. 主流BIOS制造商
国内主流的 BIOS 制造商包括以下几家:
-
华硕(ASUS):华硕是一家知名的计算机硬件制造商,也生产主板和 BIOS。
-
技嘉(GIGABYTE):技嘉是一家台湾的电脑硬件制造商,在主板领域有一定的市场份额,也生产 BIOS。
-
微星(MSI):微星是一家全球知名的电脑硬件制造商,主要生产主板、显卡等硬件,并提供 BIOS 支持。
-
华擎(ASRock):华擎是主板制造商,也提供相应的 BIOS 产品。
目前可以说不管是御三家(华硕、技嘉、微星)、华擎、映泰台系主板厂商还是国内主板厂商基本上都选择了基于AMI BIOS研发自家的BIOS UI界面(主题外观)和交互逻辑(参数设置调教)。
详细文章可参考:主流BIOS制造商相关介绍
这些厂商在主板行业有一定影响力,他们生产的主板通常配备有各自定制的 BIOS。值得注意的是,随着技术的发展,UEFI 替代 BIOS 的趋势逐渐明显,越来越多的主板使用 UEFI 替代传统的 BIOS。
关于UEFI和BIOS,总的来说,UEFI 相对于传统的 BIOS 具有更快的启动速度、更大的硬盘容量支持、图形化用户界面、更好的安全性功能以及更强的扩展性。
详细文章可参考:如何以简单正确的姿势理解“UEFI”和“BIOS”
2. 窗口管理器 kwin、mutter、marco
-
KWin:KWin是KDE桌面环境的默认窗口管理器,它负责管理窗口的布局、外观、动画效果等。KWin提供了丰富的窗口管理功能,包括窗口最大化、最小化、拖放、工作区切换等,同时也支持丰富的插件和扩展功能。
-
Mutter:Mutter是GNOME桌面环境的默认窗口管理器,它负责管理窗口的显示、布局、交互等。Mutter使用Clutter库来实现硬件加速的图形渲染,同时也支持Wayland显示协议。
-
Marco:Marco是MATE桌面环境的默认窗口管理器,它提供了基本的窗口管理功能,包括窗口装饰、移动、调整大小等。Marco旨在提供简洁而稳定的窗口管理体验,适合对性能要求较低的环境使用。
这些窗口管理器在不同的桌面环境中扮演着类似的角色,它们负责管理窗口的外观和行为,以及用户与窗口的交互。
参考来源
- dd命令使用:linux下使用dd命令写入镜像文件到U盘