Linux内核-0x1 源码索引

转自:http://dingxianye.me/2019/10/06/LinuxKernel-0x1-KernelStarting-Index/

我们时常在说的Linux,广义上是说的像Ubuntu、Redhat、Deepin之类的发行版操作系统,狭义上(或者更准确的说)Linux只是一个操作系统内核,具备如进程调度、内存管理、设备控制等功能。

Linux学习从类似《深入Linux内核架构》《Linux内核设计与实现》等书籍入手,配合源码一起。这是我想象的,网上看起来也有这么说的。

内核源码就很重要了,如果自己改动过,源码还要能编译,并且能把某个发行版本的内核替换掉(我这里使用的是Ubuntu 18.04),这样就能在本地看到自己的改动了。另外是,Mac我用起来比Ubuntu顺手,我们还需要能在Mac上方便的进行Linux源码阅读、搜索、变更、编译等。

内核源码下载 & 编译 & 更换

我这边下载的是5.3.0的内核版本(当时下载时是最新Stable版本),在 www.kernel.org 上找找,就能找到archive下载,或者git clone。

附 清华的镜像
https://mirror.tuna.tsinghua.edu.cn/help/linux-stable.git/

编译与更换内核,网上相关资料就太多了,先列出我参考过的那篇,非常详细,Linux入门之内核编译与替换

源码索引

要能顺利的阅读Linux内核源码(非常非常巨量的源码),需要对源码进行索引,以支持搜索、跳转等。

在Windows上有SourceInsight,被推荐得非常多,但是在Mac和Ubuntu上,这家伙似乎不得劲儿了。Mac上压根没有,通过Parallel Desktop在Windows上运行显得非常辣鸡,Ubuntu上通过Wine运行也是一样的,会索引到一定文件,然后就挂了,或许我的打开方式不对。

但是没有关系,我找到更好的方法,就是 GNU Global,这简直就是一个神器,原理我目前是不清楚的,但是这家伙可以把所有的tag(类、方法、变量等)索引出来。

参考 Ubuntu 安裝 GNU Global(gtags) 阅读Linux内核源码 进行安装,非常方便。

附 安装脚本
sudo apt install global
sudo gtags -v # 源码根目录下
htags -DfFnva -t '主页title'
htags-server # 默认http://127.0.0.1:8000

远程作业

我用的是Mac,但是上面的工作都是在Ubuntu上做的,至少我明显可以感受到,Mac的使用体验比Ubuntu要好上很多,所以后面学习的工作我希望能在Mac上进行。

我们对源码进行变更、编译等工作,可以使用ssh+vim完成,目前我只做了ssh的工作,vim后面有编辑源码的需求时再说。ssh的配置,网上资料也是非常非常多的,可以参考 Ubuntu环境下SSH服务安装、SSH远程登录以及SSH数据传输

附 Ubuntu开启sshd
$ sudo /etc/init.d/ssh start

Global搭建起来的源码索引,在Ubuntu上可以通过 http://127.0.0.1:8000 去访问,Mac上无法直接通过 http://ubuntu-ip:8000 去访问,具体原因我不清楚。我使用的方法是通过nginx去做反向代理映射出来,nginx搭建的方法和反向代理的方法网上也是非常多的,参考都不用举出了。

附 Ubuntu安装的nginx位置
/etc/nginx

我的nginx配置如下:

# 略
http {
    # 略
    server {
        listen 8080;
        server_name localhost;
        location /linux/ {
            proxy_pass http://127.0.0.1:8000/;
        }
    }
}
# 略

如此配置之后,Mac还是无法访问到主页,这是因为Ubuntu UFW的墙,所以还需要对8080端口放开,操作如下

$ sudo ufw status   # 查看状态
$ sudo ufw allow 8080

这样,我可以通过 http://ubuntu-ip:8080/linux/ 去访问Global搭建起的源码索引主页了。

后记

这是我开始进行Linux等操作系统相关学习的记录,后面会对一些类似系统进行比较,如MacOS、Android等。

相信操作系统,尤其是移动端操作系统,在未来几年内,会逐渐在国内形成技术战场,世界操作系统史上,应该会有中国一笔的。所以,更多的学习操作系统相关的知识,未来才能更好的跟大家一起好好的玩耍。


相关内容

Linux内核-0x2 概念名词等

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 4,419评论 0 5
  • 1.描述计算机的组成及其功能 (一)计算机的组成 1.CPU 2.CPU风扇 3.BIOS 4.内存 5.硬盘 6...
    whamai阅读 1,671评论 0 1
  • 前言 近期在准备搭建一个vue.js+node.js全栈开发的社区,之前由于没有云服务器搭建经验,这篇文章做一下相...
    技术宅小青年阅读 4,638评论 1 30
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 6,379评论 0 10
  • 我去!力量药水!要知道我们村里可是连半滴药水都没有呀!于是我们谨慎地看着菜鸟,只见菜鸟举剑奔来,我们也准备立...
    晓皇阅读 1,188评论 3 8

友情链接更多精彩内容