添加一个新的系统调用
介绍了如何添加一个新的系统调用,并使用qemu进行了测试,github有源码
qemu启动内核
记录了从编译内核,制作initramfs,到使用qemu运行这个内核
编译内核
Photo by Andre Mouton: https://www.pexels.com/photo/closeup-photo-of-primate-1207875/
1目的2下载源码https://www.kernel.org/
这里我下载了5.19.11的源码
3编译解压源码123[liode@liodePC:50:kernel_src]$ tar -xf linux-5.19.11.tar.xz [liode@liodePC:51:kernel_src]$ lslinux-5.19.11 linux-5.19.11.tar.xz
生成配置文件生成配置文件方式make menuconfig 非图形界面(一般使用这种)
make xconfig 图形界面
make gconfig 需要GTK的图形界面
生成配置文件使用make menuconfig 命令之前的配置文件有两个
123[liode@liodePC:59:linux-5.19.11]$ ls -al | grep config-rw-r--r--. 1 liode liode 59 Sep 23 20:14 . ...
errno错误号
1简介观察错误的类型,可以使用全局变量errno,它在头文件errno.h中,在错误产生之后,该变量的值会发生变化,表示错误的类型。
具体的类型,可以查看源文件,很多相关的头文件中定义了大概一百多个错误类型
具体是不是每一个linux中定义都相同,我没有研究过,暂时不清楚,但我感觉应该差不多
有意思的是,errno这个机制,在macos中同样适用。可能unix也这样吧,哈哈
2Linux中的错误号这是宏定义和他们的注释是我从一些和errno相关的头文件中找到的,这些定义分为了几组散在不同的头文件中,我认为随着内核版本的不同,他们所在的头文件也会不同,但是定义大概率是一样的,也是具有很多的参考价值的
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110 ...
时间
1日历时间(Calendar time)1.1简介Calendartime 是距离某一个物理世界的时间点的时间。对于Linux来说,是距离1970年1月1日早上0点的秒数,这个时间点也被称为epoch
1.2获取日历时间使用time函数,该函数返回一个time_t类型,这是我们需要的,而入口参数给一个NULL就不用管了
1234567#include <time.h>#include <stdio.h>int main(){ time_t cur_time; cur_time = time(NULL); printf("cur_time is %ld\n",cur_time);}
运行结果:
1.3日历时间格式转换通过time函数获取的只是秒数,如果想要人类方便理解的字符串的展示形式,或者将时分秒,年月日,分别储存在不同的变量中(分解时间),需要进行相应的转换。
Linux提供了一系列进行时间格式转换的函数,想要时间的各种表达格式都能找到,非常方便
12345678910111213141516171819 ...
NFS服务配置
我希望通过mac访问服务器的一个文件夹,这个文章记录了我是如何做到的
局域网ssh访问多设备方案
目前,我有多个设备,分别是主力MBP,windwos和linux双系统笔记本,Linux小主机,树莓派3b,stm32mp157开发版(Linux系统)
为了能够在mac上通过ssh访问到所有的设备,我希望他们能够有一个固定的ip。
因此,我购入了一个硬路由,安装了openwrt,作为DHCP服务器,并给这些设备分配永久租期的静态ip,在这些设备上面,网络均采用DHCP客户端被分配IP的方案。
在openwrt中的配置如下:
在客户端的各种设备上,需要连接硬路由的wifi,这样,硬路由就会根据他们的mac地址来分配我设定的固定的ip了。
这样,就可以在MBP上统一进行访问了,非常方便
无题
配置用户名和邮箱
本地需要配置git的user.name和user.email两个变量,表明自己的身份,对于远程仓库进行更改之后,作为操作者的信息,这两个和github的用户名和email没有任何关系,可以是完全自创的,仅仅作为身份的标识
查看当前的name 和 email
12git config user.namegit config user.email
或者
1git config --list
新安装的会显示空,如下
12[liode@fedora:4:~]$ git config user.name[liode@fedora:5:~]$ git config user.email
设置name和email
12git config --global user.name liodegwingit config --global user.email liodegwin@gmail.com
会显示正确的字符串
1234[liode@fedora:13:~]$ git config user.nameliodegwin[liode@fedora:14:~]$ git ...
无题
vnc连接linux和mac
目标:在主力机mac上使用远程桌面控制linux主机,因为linux图形界面太拉垮了,不适合作为主力,但是工作还是linux为主,所以我希望在mac上能够访问到我的linux主机。不单单是ssh的命令行方式,还包括完整的图形界面控制的方式。
vnc是什么:
wikihttps://en.wikipedia.org/wiki/Virtual_Network_Computing
是一种系统,使用网络协议
写一个空的字符设备驱动
介绍了如何编写最简单的字符驱动程序,并编译