VirtualBox错误
当我尝试启动虚拟机时遇到了如下错误:
Kernel driver not installed (rc=-1908)The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing'/sbin/vboxconfig'as root.If your system has EFI Secure Boot enabled you may also need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information.where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLE ...
tmux
会话管理进入
tmux命令可以直接进入一个session
创建一个名为session-name的会话:
$ tmux new -s <session-name>
进入一个已经存在的会话# 使用会话编号$ tmux attach -t 0# 使用会话名称$ tmux attach -t <session-name>
退出
ctrl + d可以直接退出
ctrl + b后按d可以后台运行该会话,使用attach进入
其他
tmux ls 或ctrl +b s列出所有会话
tmux kill-session -t销毁某个会话
tmux rename-session或ctrl+b $重命名某个会话
窗格管理Ctrl+b %:划分左右两个窗格。Ctrl+b ":划分上下两个窗格。Ctrl+b <arrow key>:光标切换到其他窗格。<arrow key>是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓。Ctrl+b ;:光标切换到上一个窗格。Ctrl+b o:光标切换到下一个窗格。Ctrl+b { ...
内联汇编
在c语言中使用汇编代码,为了实现更高效率或执行特定汇编指令。
语法格式asm volatile("assembly code" : output operands /* 可选 */ : input operands /* 可选 */ : list of clobbered registers /* 可选 */ );
asm和volatile
asm 是内联汇编的关键字。
volatile 关键字告诉编译器不要优化这段汇编代码。
输出操作数
格式为 :[constraints](C variable)
constraints 是约束字符串,定义了输出操作数的类型和位置。
(C variable)是 C 变量,用于存储汇编代码的输出。
输入操作数同输出操作数
列表的损坏寄存器这是一个可选部分,列出了在汇编代码中被修改的寄存器,告知编译器这些寄存器在汇编代码后可能包含不同的值。
e.g. :
# ...
earlycon
引言earlycon 是一个早期控制台(early console)机制,用于在系统启动的早期阶段提供输出功能。在内核启动过程的早期阶段,标准的控制台设备(如串口、VGA控制台等)可能还没有初始化完成,这时可以使用 earlycon 来输出调试信息,帮助开发者调试内核启动过程中的问题。
如何开启earlycon要在内核启动时启用 earlycon,需要在内核配置中启用几个相关的配置选项:
CONFIG_SERIAL_EARLYCONCONFIG_OF_EARLY_FLATTREE
还需要在内核命令行参数中添加相关设置。例如:
earlycon=pxa_serial,0xd4017000
具体流程在 Kernel 初始化汇编代码执行完跳转到 start_kernel 之后,setup_arch 调用 parse_early_param,进而在其中执行 early_param 的解析,具体如下:
start_kernel->setup_arch->parse_early_param->parse_early_options->do_early_param
// ...
vim快捷操作
快速定位
A: 跳到行尾并开启编辑模式
0: 跳到行首
$: 跳到行尾
G: 跳到文件尾
gg: 跳到文件首
nG: 跳到第n行
e.g. 50G: 跳到第50行
nj: 向下跳n行
e.g. 3j: 向下跳3行
nk: 向上跳n行
e.g. 3k: 向上跳3行
nw: 向后跳n个单词
e.g. 3w: 向后跳3个单词
nb: 向前跳n个单词
e.g. 3b: 向前跳3个单词
/: 搜索
e.g. /123: 搜索123文本
按n和N向下和向上
pair
%: 在pair中来回跳
e.g. (123) 在(和)之间来回跳
ci + left-pair: 删除pair中的内容并且开启编辑模式
e.g. ci+(: 删除()中的内容并且开启编辑模式
di + left-pair: 删除pair中的内容
e.g. di+(: 删除()中的内容
yi + left-pair: 复制pair中的内容
e.g. yi+(: 复制()中的内容
vi + left-pair: 选中pair中的内容
e.g. vi+(: 选中()中的内容
...
使用vim阅读代码
环境
Ubuntu22.04
VIM - Vi IMproved 8.2 (2019 Dec 12, 编译于 May 03 2024 02:37:51)
引言在Linux环境下,Source Insight只能在Wine环境下运行,显得并没有那么好用,于是便有了本文,使用Vim+Ctags+Cscope来进行阅读代码。
安装安装Ctags打开终端,运行以下命令安装 ctags:
sudo apt install exuberant-ctags
如果你希望使用 universal-ctags(这是一个更新和维护更积极的分支),则可以安装它:
sudo apt install universal-ctags
安装Cscopesudo apt install cscope
配置与使用配置Ctags在项目根目录执行如下命令生成tags文件:
ctags -R .
可以发现在项目根目录下多了如下文件:
❯ ls tagstags
为了能够在项目中使用该文件作为tag索引,则在~/.vimrc中增加如下配置,这个配置的目的是为了能够让vim在项目的任意目录中都能够找到tags的配置 ...
基于CloudFlare搭建Docker镜像
准备
一个域名
一个CloudFlare账号
域名修改DNSPS:如果该站点已在CloudFlare中存在,请忽略该步骤。
首先在CloudFlare中添加一个站点,域名就写你自己的域名:
添加好之后在下面我们可以看到需要修改的DNS为:
这里我是使用的腾讯云的域名,所以以腾讯这里为例,修改好后如下图:
使用github部署首先fork该仓库:https://github.com/ciiiii/cloudflare-docker-proxy
将src/index.js、wrangler.toml的libcuda.so替换成你的域名,以src/index.js为例:
vim src/index.js:%s/libcuda.so/your-url/g
修改完成后push(如果在网页ui操作忽略该步骤)。
随后点击Deploy with works即可开始部署。
PS:如果Delpoy with works有问题,请修改readme中该按钮的超链接为你自己的仓库地址。
Deploy with worksAccount id就是https://dash.cloudflare.com/中 ...