源码学习
linux 源码学习环境搭建过程
看了网上的教程,发现用 souce insight 这个软件可以快速跳转到对应的 文件,非常使用用来学习源码
- 安装 souce insight 4
虚拟机环境配置
- 配置ssh
- 挂载宿主机文件夹
- 利用 sshfs 搭建宿主机访问 虚拟机文件目录环境
sshfs-win下载地址
ssfhs可以通过ssh方式将远程的服务器上硬盘挂载到本地硬盘,也就是说只有你的虚拟机支持ssh链接,你就可以将虚拟机的硬盘挂载到本地,然后采用本地的方式来操作硬盘里的文件。
安装win-sshfs依赖Dokan,所以先安装Dokan再正常安装win-sshfs,其过程略过不表,但有点需注意,Dokan也许需要翻墙下载
参考教程
上文提到,sshfs-win依赖WinFSP,因此我们要首先安装WinFSP:https://github.com/billziss-gh/winfsp。
WinFSP安装结束后,我们再安装sshfs-win:https://github.com/billziss-gh/sshfs-win。
两者都安装完毕后,我们在Windows的文件资源管理器中点击『映射网络驱动器』:
参考教程2
1
|
\\sshfs.r\username@remote_ip!port\
|
参考视频
学习资料
linux源码版本 2.6
配合书籍:
视频教程
linux源码搭建调试 github地址
学习路线记录
- 汇编语言:
- assmbly 王爽
- x86 汇编语言-从实模式到保护模式
- orange 操作系统实现
- 操作系统真象还原
- 30天自己制作操作系统
- 内核驱动之类的编写
- linux设备驱动程序
- linux设备驱动开发详解: 基于linux 4.0内核
- 内核理论与机制
- linux内核设计与实现
- 深入理解内核理论和源码解析
- 深入理解linux虚拟内存管理
- 深入理解linux网络技术内幕
- 奔跑吧 linux内核: 基于linux。。。
- 深入理解linux内核
- 深入linux内核架构
- 操作系统理论
- 线代操作系统
- 操作系统设计与实现
- 操作系统概念,第七版,翻译版
动手
1
2
|
git clone git@github.com:torvalds/linux.git
# checkout 到你先要学习的分支,然后想办法编译
|
基于 qemu 调试内核
b站教程
知乎教程
linux kernel 下载页面
腾讯云的博客
torvalds 大神的 github仓库
项目地址 :
https://github.com/Vizdl/linux-lib
学习资料
内核源码讲解教程
调试 redis 源码
参考教程
docker 源码调试环境配置
参考这个教程
docker-ce moby 源码debug教程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
echo '{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Docker Daemon Debug",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${workspaceFolder}/cmd/dockerd/",
}
]
}' > ./.vscode/launch.json
|
上面的方法我试过,失败了,看到一个新的方法
参考博客
1
|
docker run --rm -i --privileged -e BUILDFLAGS -e KEEPBUNDLE -e DOCKER_BUILD_GOGC -e DOCKER_BUILD_PKGS -e DOCKER_CLIENTONLY -e DOCKER_DEBUG -e DOCKER_EXPERIMENTAL -e DOCKER_GITCOMMIT -e DOCKER_GRAPHDRIVER=devicemapper -e DOCKER_INCREMENTAL_BINARY -e DOCKER_REMAP_ROOT -e DOCKER_STORAGE_OPTS -e DOCKER_USERLANDPROXY -e TESTDIRS -e TESTFLAGS -e TIMEOUT -v "$GOPATH/src/github.com/docker/docker/bundles:/go/src/github.com/docker/docker/bundles" -t "dockercore/docker:latest" bash
|
1
|
docker run -i --privileged -e BUILDFLAGS -e KEEPBUNDLE -e DOCKER_BUILD_GOGC -e DOCKER_BUILD_PKGS -e DOCKER_CLIENTONLY -e DOCKER_DEBUG -e DOCKER_EXPERIMENTAL -e DOCKER_GITCOMMIT -e DOCKER_GRAPHDRIVER=devicemapper -e DOCKER_INCREMENTAL_BINARY -e DOCKER_REMAP_ROOT -e DOCKER_STORAGE_OPTS -e DOCKER_USERLANDPROXY -e TESTDIRS -e TESTFLAGS -e TIMEOUT -v "$GOPATH/src/github.com/docker/docker/bundles:/go/src/github.com/docker/docker/bundles" -t "dockercore/docker:latest" bash
|
用 vscode atttach进入容器之后,运行这个命令
1
2
3
|
cd /go/src/github.com/docker/docker
DOCKER_GITCOMMIT=3385658 ./hack/make.sh binary
# 注意,要指定编译版本,不然会报错
|
在docker 内无法调试 go代码,只能把go重新装一遍了
1
2
|
apt-get install golang
# 要 230M
|
docker 容器无法联网:
https://www.jianshu.com/p/205c6ece019b
https://jimmysong.io/docker-handbook/docs/docker_compile.html