目录

  • 基本软件安装
  • VScode 插件安装
  • 连接WSL2及容器
  • linux代码编译
  • 查看源码,调试linux kernel
  • 总结
  • 补充学习busybox
  • vmware真香


这篇文章的灵感来源,感谢UP,我才有了WSL2 vscode的探索, 大家可以关注下他的视频和github仓库
基本思路两种

  1. docker直接运行linux发行版镜像,将代码转移到镜像中,具体方法参考docker使用,dockercloud和docker hub
  2. WSL2中运行linux发行版,docker for windows是直接支持在WSL2中运行相关docker环境的,所以依托linux发行版再运行docker镜像,在此基础上进行相应开发
    两种思路主要在docker运行的宿主机的不同,具体是内核的差异本人非专业人士不赘述

基本软件安装

详细教程可以参考windows-docker官方文档 WSL 官方文档 尽量使用WSL2, 具体区别查看广泛文档

VScode 插件安装

主要是三款插件docker,remote-container, remote-wsl

连接WSL2及容器

docker安装vsftpd设置主动模式 docker搭建vscode_vscode


如何下载镜像,启动镜像这里不再说明,按照docker说明即可

ctrl alt p使用remote container-open folder,即可以在容器中打开我们要调试的文件夹并创建容器

或者点击新建容器也可以进入相应菜单

docker安装vsftpd设置主动模式 docker搭建vscode_vscode_02


这时候vscode会在镜像中创建vscode-sever,要等待一段时间,如果安装启动链接有报错,可以在docker CLI对缺少库进行安装

其实镜像刚启动,最后使用相应工具进行update 例如apt-get update

docker安装vsftpd设置主动模式 docker搭建vscode_vscode_03


Vscode首次连接树莓派时出现问题,我既是通过CLI进行相应安装,之后VSCODE才正常连接

linux代码编译

  1. 首先下载后的源码进行代码配置主要有三种 make config/menuconfig/defconfig, 推荐menuconfig。
    运行menuconfig可能出现unable to locate package ncurses-devel,解决办法 install libncurses-dev,可能不同发行版本解决办法不同,我的ubuntu18.04是这样解决的
  2. make即可,具体使用的参数自定,make -j8之类
    等待编译完成
  3. 需提前安装 gcc-4.8 gdb qemu make, gcc版本根据自己要求制定,我这边按照上面那位UP的dockerfile进行了预装,RUN apt-get update \ && apt-get install gcc-4.8 gdb qemu make dos2unix -y \ && apt-get install build-essential kernel-package libncurses5-dev -y \ && ln -sf /usr/bin/gcc-4.8 /usr/bin/gcc \ && ln -sf /usr/bin/qemu-system-x86_64 /usr/bin/qemu

查看源码,调试linux kernel

VSCODE即可进行相关代码阅读,但是宏之类的阅读体验不如sourceinsight, source insight相关内容可以查看UP视频
调试的思路为qemu启动btimage并挂载接口模拟虚拟硬件环境, 启动GDB通过挂载的接口进行调试

qemu-system-x86_64 -kernel ./arch/x86/boot/bzImage -s -S -append "console-ttyS0" -nographic

执行完上面一句后console会进入wait状态,所以要再启动一个teminal进行如下调试
gdb启动后载入vmlinux文件file ./vmlinux, 并remote target:1234,即可调试
具体调试仍在学习中,后续有新的进展,再更新

总结

WSL2和docker, vscode的存在让我们可以轻松的搭建想要软件环境,可以到docker hub中寻找自己想要的镜像。

补充学习busybox

还有位UP的文章,利用busybox启动编译后的镜像,有需要的移步这里

vmware真香

如果你想进行驱动开发,内核开发,建议使用vmware,因为它才是完整的原生linux内核
vmware真香!!!