Browsed by
Author: VOID001

将 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

Kernel Bootup Page Table Initialize Process(x86_64)

Kernel Bootup Page Table Initialize Process(x86_64)

This article will provide detailed information about the kernel bootup page table setup. In a brief view, the kernel setup page table in three steps: Setup the 4GB identity mapping Setup 64bit mode page table early_top_pgt Setup 64bit mode page table init_top_pgt The last two steps are both higher mapping: Map the 512MB physical address to virtual address 0xffff80000000 – 0xffff80000000 + 512MB. Next, we will talk about the details. We will use the 4.14 version code to explain the process….

Read More Read More

Kernel Driver btusb Overview

Kernel Driver btusb Overview

Function btusb_probe btusb_probe is use for hot plug-in for bluetooth usb generic controller, here will explain the function in detail. First is an interface check mechanism This special condition is used for supporting apple Macbook 12,8 (2015 early). According to the normal specification, the main interface for USB is 0, and audio (isochronous) is 1, but apple made a change on it, changing the main interface to 2 and audio to 3. The “bInterfaceNumber !=2 ” is for checking hardware…

Read More Read More

Building your own live streaming site using Nginx RTMP & video.js

Building your own live streaming site using Nginx RTMP & video.js

As I said in twitter I will update my blog at least once a week, so now I am writing this week’s blog (Although this article doesn’t contain too much technical detail) I just built my personal live server, for the trail version on bilibili is expired. And I don’t want to send sensitive personal data to that platform, so I decided to build one on my own. Previously I built a live stream service using my raspberry pi, and only…

Read More Read More

写给自己,也写给你们

写给自己,也写给你们

这篇文章写出来的时候,VOID001 已经毕业了(虽然因为学分问题导致毕业证和学位证还拿不到,又因为嫌毕业文化衫太丑代码太挫没有照全专业的合影,还因为毕业这几天一直在和各个老师谈NEUOJ NEUOS的事情导致毕业典礼那天我用来休息和整理东西没有参加,但是我确确实实是毕业了。)。而公元二零一七年六月二十九日又恰好是 VOID001 的阴历生日,所以这篇文章就作为对自己大学生活以及自己这一年的一个总结一并涵盖了。本文中所有人和事都是真实存在且发生过的,文中将人名以本人最熟知的昵称+姓名的汉语拼音首字母标示,后续再次出现仅仅使用昵称。

夏娜(VOID001)的四年是在大家的支持和帮助下度过的,十分感谢那群帮助了夏娜的人,文中篇幅有限,如果你帮助过夏娜可是名字没有出现只是因为夏娜无法写下那么多内容,这里对那些帮助过我的你们表示感谢。因为有你们的存在夏娜才能坚持到现在

(鞠躬~)

这篇文章是夏娜的大学生活的纪实,同时也给后来的计算机学弟学妹们作为一个路线参考,夏娜大学四年期间踩过的坑,做的选择在本文中都有体现。