Browsed by
Tag: linux

将 vim 作为日常笔记本使用

将 vim 作为日常笔记本使用

本文通过介绍如何使用 Vimwiki, perl graph-easy 以及 git 将 vim 配置为日常的笔记工具。注: 本文内容在于提供一种笔记解决方案,不在于比较各种方法的优劣,如果大家有心仪的推荐方案,欢迎提供探讨

Running Arch Linux with customized kernel in QEMU

Running Arch Linux with customized kernel in QEMU

本文为内核爱好者们介绍一个便利的运行内核的方式,使用 QEMU + virtio 启动一个装载着自定义内核的 Arch Linux。 0x00 构建内核 我们使用 Arch Linux 发行版使用的 .config 作为配置文件, 可以省却很多自己配置 Kernel Options 的繁琐工作。将配置文件放入 kernel source tree 后,使用 make oldconfig 就可以通过一个交互的命令行将最新的内核里的可配置参数补全到我们使用的 Arch Linux 的 .config 文件中。 我们有两种方式获取到 Arch Linux (和其他发行版) 的 .config 文件: 使用 zcat 读取 /proc/config.gz 的内容并且保存为 .config 直接复制 `/usr/lib/modules/$(uname -r)/build/.config 若要使用方法 1 ,内核需要开启 Enable access to .config through /proc/config.gz 这一选项需要我们将 IKCONFIG_PROC 设置为 y (相关依赖 option 项目也需要满足) 配置文件准备好后,我们就可以开始构建内核了,如果你会频繁构建内核,建议使用 ccache 来缓存编译的中间目标文件 “*.o”。ccache 具体配置方法这里不多做介绍,简单说下使用方法,很简单,只需要在 gcc,cc,g++,c++ 的前面加上 ccache 即可,e.g 使用 ccahe 编译内核的构建命令可以这样写: make CC=”ccache gcc” -j8。注意:ccache 不会提升首次编译的速度,它会将这些中间文件缓存起来,在后续的…

Read More Read More

[Linux 0.11] Draft 6 IA32架构下多任务的硬件支持

[Linux 0.11] Draft 6 IA32架构下多任务的硬件支持

Overview 支持多任务的硬件结构为 Task Register (TR) Task State Segment (TSS), LDT 以及 Task Gate。而最核心的,存储任务上下文信息的就是 Task State Segment, 下面对其进行详细的说明 TSS基本数据结构 GDT, LDT TSS(Task State Segment)  has its own descriptor called TSS Descriptor Structure of 32 bit TSS, store the context and link to previous task, and 3 different privileged Stack 下面对一些比较关键的部分进行介绍 Previous Task Link: 存储的是上一个任务的选择符 LDT Segment Selector: 存储的是这个Task使用的LDT I/O Map Base Address: I/O Map的基地址(要对 I/O Map 是什么进行进一步的解读: I/O Map 包含一个权限Map和一个Interrupt redirect Map) TSS 描述符的一些说明 TSS Descriptor 用于描述 Task State Segment 的描述符,当选择符的TI…

Read More Read More