WSL奮鬥記
前言
因為qemu
update後原來的WSL Kernel缺乏TC的module support, 然後我就踏上了自己compile linux kernel的不歸路…
故事
其實故事就如同前言所述(那還要講什麼廢話?)
幾點細節補充如下
- 我的WSL是跑在
公司
的Windows上, 然後我的Local Administrator權限又被收回,然後又因不是RD單位所以基本上取得無望,無法透過wsl --update
來update WSL version - 然而就算我可以用
wsl --update
我看了Github上的WSL-Kernel SRC內預設的config裡也沒有TC, QoS的kernel support…(那我上面那點…對..就是單純抱怨沒有權限而已…) - WSL的Kernel沒有動態載入module的功能(也就是說
modporbe
這個指令在WSL沒屌用…)所以沒辦法用動態載入的方式把TC/QoS載入
所以..大叔我就只能自己config/compile kernel來滿足自己的需求
技術細節
我還是放在我的Wiki裡面好了,有興趣的可以去看
心得
很久很久以前我曾在使用Gentoo
的時候config/compile過linux kernel(沒辦法用Gentoo
怎麼能不自己動手??),但是後來我就再也沒有動過自己動手的主意了(就跟很久很久以前我還會勤勞到自己去config/compile FreeBSD
Kernel一樣現在都改用generic)
這次的實作老實說看起來很難實際上還好…
只是要習慣WSL在用的kernel基本上只有要用跟不用的,要用的全數要buildin不能build成module,這點基本上跟早期的FreeBSD
Kernel是一樣的,邏輯上跟現在Linux
的主流kernel的使用方式是不一樣的
而且這樣的概念下難度會在除了特殊目的確認一定要有的function(例如本次目的的TC/QoS
以及我很常用的wireguard
support之類的)以外,哪些module是WSL必要的這部份很難自己記起來,所以看得到所有的建議都是使用
zcat /proc/config.gz > .config
或是
cat /proc/config.gz | gunzip > .config
把目前正常在跑得WSL Kernel config弄出來成default再用add on的方式去加上所需的就好,這樣的作法把整個需要花腦的部份都簡化了
最後..一切正常的WSL用起來還是很爽的, 尤其是當我們人在公司當薪水小偷的時候面對不能弄掉的公司的Windows
時, WSL就是我們打工仔的救贖…