WSL2啟動獲取ip並配置到hosts文件


需要注意的是,開機啟動時獲得ip,可能在wsl成功啟動完成變動,所以有時候發現wsl腳本成功執行,但是ip不正確,這時可以手動執行下那個vbs腳本去更正hosts中的配置。
原因暫時研究了,我目前是寫了個c#服務器自動修改ip, 不忙了再補上吧

獲取wslip的腳本

# 更簡短的 ipaddr=$(ifconfig eth0 | grep 'inet ' | awk '{print $2}')
ipaddr=`ip a s eth0 | sed -rn '3s#^.*net (.*)/20.*#\1#gp'`
sed -i '/ubuntu/d' /mnt/c/Windows/System32/drivers/etc/hosts
echo "$ipaddr ubuntu.wsl" >> /mnt/c/Windows/System32/drivers/etc/hosts

這個腳本就是去獲取wsl中的ip,因為我的wsl網卡是默認的eth0
ubuntu.wsl是我訪問wsl的域名,搭配docker使用更方便

修改etc文件權限

點擊C:\Windows\System32\drivers\etc文件件的右鍵》屬性》安全》高級
更改所有者為Users,點擊檢查名稱,正常的話,不會有錯誤提示。之后就能正常的編輯權限了
image
image

注意一定要給修改權限。之后hosts文件也是同理,不過不用去修改權限主體了,直接修改權限就行了。
參考博客

wsl啟動執行

在子系統中添加啟動腳本

sudo vim /etc/init.wsl

添加最開始的腳本內容

#!/bin/bash

ipaddr=`ip a s eth0 | sed -rn '3s#^.*net (.*)/20.*#\1#gp'`
sed -i '/ubuntu/d' /mnt/c/Windows/System32/drivers/etc/hosts
echo "$ipaddr ubuntu.wsl" >> /mnt/c/Windows/System32/drivers/etc/hosts

設置腳本可執行權限

sudo chmod +x /etc/init.wsl

在Windows中創建腳本

在Windows下 輸入快捷鍵 WIN+R 打開運行窗口並輸入 shell:startup
打開Windows 啟動腳本目錄,在該目錄下新建 linux-start.vbs

Set ws = WScript.CreateObject("WScript.Shell")
ws.run "wsl -u root /etc/init.wsl"

PS: 這地方可能有朋友有多個wsl系統,所以可以使用參數-d, 具體見參考文檔

可以右鍵單機此腳本進行嘗試執行,看hosts文件是否修改
Windows中的WSL2(子系統)開機啟動配置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM