FreeBSD

使用 Freebsd Current

FreeBSD Current 是 FreeBSD 源码树的最新开发版本,不稳定,且从源码更新。 这里从 Freebsd 手册 翻出更新 FreeBSD Current 的方法。 目前,FreeBSD 源码树移动到了 git 托管,地址是 https://git.

FreeBSD Ports - 如何给 FreeBSD 打包

FreeBSD Ports 系统使用 Makefile 来描述软件包信息。相比 Arch Linux Buildsystem 来说,FreeBSD Ports 灵活性非常差,要打个包比较恶心。 ${WRKSRC} - 是软件包源码解压的地方,一般是 work/软件包名 $STAGEDIR - 是打包用的小系统目录,软件包编译后安装在这个目录用来打包,一般是 work/stage work/pkg 中存放 make package 生成的 pkg 包文件 准备 Makefile 一般来说,最小 Makefile 模板是这样:

内核事件通知机制

当进程持有充分大数量的资源时,如何跟踪资源的状态变成了问题,与其挨个轮询,不妨换一种思路,让内核通知我们。 比如在网络编程的条件下,我们可能会同时处理多种连接,可以使用这种接口让内核通知我们哪些套接字可以读写,传入连接等。 在 FreeBSD 中,使用 kqueue() 相关设施提供事件通知机制。 在 Linux 中,使用 epoll() 相关设施提供事件通知机制。 kqueue kqueue() 需要用到的头文件是:

阅读 Vixie cron

[scode type="yellow”]都是猜测,没有经过验证,验证在咕咕咕,请自行辨别。[/scode] 来源 我选择阅读的源码来自 FreeBSD 源码树,其中的目录 usr.sbin/cron 中的 cron 实现。 主函数 main 其中 secres 的含义是每秒执行的任务,这个 cron 实现支持 @every_second 定义每秒执行的任务,除了我们熟知的 cron 表达式,这个实现还有 @ 开头的表达式支持,比如 @reboot 指的是开机以后执行一次的任务。

lldb 入门

命令结构 lldb 的命令不像 gdb 那么自由,而是比较结构化。 命令结构的形式是: <名词> <动词> [-选项 [选项值]] [参数...] 让 lldb 启动进程后停在入口点(是程序镜像的入口点,不是 C 语言的入口点 main。linux 中,可执行文件格式 elf 中 elf 头有一个项目叫入口点,一般进入 C 语言运行时,再调用 C 语言的 main 函数),并且向程序传递参数 argv0 argv1

FreeBSD 时间片实现猜测

[scode type="yellow”]都是猜测,没有经过验证,验证在咕咕咕,请自行辨别。[/scode] 0x1 - atpic interrupt entry - atpic_intr# sys/amd64/amd64/atpic_vector.S:45-53 - 宏定义 sys/amd64/amd64/atpic_vector.S:55-70 - 声明

style(9) - FreeBSD 内核源码文件风格指南

style(9) FreeBSD 内核开发人员手册 style - 内核源码文件风格指南 这个文件指定 FreeBSD 源码树中内核源码的推荐风格。同时也是推荐用户代码风格指南。许多风格规定隐含在例子中。在假设风格在问题前保持沉默,仔细检查例子??? /* * Style guide for FreeBSD. Based on the CSRG's KNF (Kernel Normal Form).

FreeBSD 上配置桌面环境

概述 这篇文章尝试从各个角度介绍在 FreeBSD 上配置桌面环境。 简单介绍一下术语: Xorg: X 窗口系统的开源实现,是处于底层的图形界面环境。 桌面环境: 基于 Xorg 进一步提供例程,资源,更高一层的图形环境。 显示管理器: 图形化的登录器 & 准备 X 环境,就是为了让你不必从终端启动 X 环境的工具。 窗口管理器: 管理多窗口实例的程序,比如窗口遮挡,窗口操作 如何进入桌面环境呢?