導航:首頁 > 源碼編譯 > wsl2編譯lfs

wsl2編譯lfs

發布時間:2022-12-25 14:31:49

① WSL下編譯OpenWrt/LEDE筆記

WSL的安裝參見 Windows10 玩SmartDNS告別污染
最好別裝在默認的C盤,編譯文件量巨大(佔用空間近6G)

參考: 文獻1 , 文獻2
替換國內源 Ubuntu國內源

更新環境軟體包 命令: sudo sh -c "apt update && apt upgrade -y"
安裝依賴包 :

取消WSL PATH 與windows PATH關聯

將Debian目錄設置為 大小寫敏感路徑 參考

前面的參考文都採用的系統代理的方式加速,我這里代理效果不佳,常常 TimeOut ,所以採用了鏡像連接的方法

這里使用新加坡鏡像為例: 參考1 , 參考2

以編譯 極路由B70硬改SPI版 為例:

配置結束,編譯預備:

第一次編譯耗時大約1小時左右, 具體看電腦配置。
以後編譯可以使用多線程,速度更快: 參考

編譯好的固件位置:

② WSL2中使用adb和fastboot

最近在用WSL2編譯aosp和lineageos ,由於WSL2和WSL使用不同的技術,導致WSL2中Ubuntu識別不了usb,無法使用
adb devices 和 fastboot devices
網上查了一番 https://blog.csdn.net/u014175785/article/details/113438143
看起來挺靠譜,實則
方法1 ,在sh腳本文件中不能用別名alias ,方法2 不僅麻煩而且沒成功

最後研究發現,還是用ln 才成功
根據上面的方法1得知 wsl2中的shell是支持adb.exe 命令的
所以可以用下面方法

③ vs2022無法啟動linux調試

VS2022將直接訪問WSL並調試WSL裡面的任何Linux代碼。

使用WSL將不再需要ssh連接VS和Linux虛擬機

Visual Studio 的 WSL 2 工具集允許您從 Visual Studio 在 WSL 2 發行版上構建和調試 C++ 代碼,而無需添加 SSH 連接。

原理

VS是先與WSL2建立聯系,然後用WSL2上的g++ 編譯代碼,gdb調試程序。

④ WSL 使用教程

WSL 是適用於 Linux 的 Windows 子系統,可讓開發人員按原樣運行 GNU/Linux 環境 - 包括大多數命令行工具、實用工具和應用程序 - 且不會產生傳統虛擬機或雙啟動設置開銷。

WSL 分為兩個版本,一個是 WSL1,一個是 WSL2,WSL2 是 WSL1 的升級版,主要優勢是:

WSL2 建議不要跨操作系統使用文件,若想獲得最快的性能速度,請將文件存儲在 WSL 文件系統中,在存儲時,使用 Linux 文件系統根目錄: \\wsl$\Ubuntu-20.04\home\<user name>\Project 。

訪問 WSL2 文件系統,可以運行命令 WIN+R 或在文件資源管理器地址欄中鍵入 \\wsl$ ,以查找相應的分發名稱並訪問其根文件系統。

大多數情況下我們會使用 WSL2,但在以下情況,請考慮使用 WSL1:

可以使用 localhost 從 Windows 上訪問 Linux 分發版中的應用。

如果要從 Linux 分發版訪問 Windows 上運行的網路應用,則需要使用主機的 IP 地址。 你可以執行以下步驟來使其可行。

當使用遠程 IP 地址連接到應用程序時,它們將被視為來自區域網 (LAN) 的連接。 這意味著你需要確保你的應用程序可以接受 LAN 連接。例如,你可能需要將應用程序綁定到 0.0.0.0 而非 127.0.0.1 。

當使用 WSL 1 分發版時,如果計算機設置為可供 LAN 訪問,那麼在 WSL 中運行的應用程序也可供在 LAN 中訪問。

這不是 WSL 2 中的默認情況,WSL 2 有一個帶有其自己獨一無二的 IP 地址的虛擬化乙太網適配器。 目前,若要啟用此工作流,你需要執行與常規虛擬機相同的步驟。下面是一個示例 PowerShell 命令,用於添加偵聽主機上的埠 4000 的埠代理並將其連接到埠 4000,並使用 IP 地址 192.168.101.100 連接到 WSL 2 VM。

使用 wsl <Linux命令> 可以在 CMD 或 PowerShell 運行 Linux 命令,示例:

以這種方式運行的命令使用的是同一個工作目錄,並且以 WSL 默認用戶的身份運行,擁有與調用方進程和終端相同的 Windows 管理許可權。

WSL 可以使用 [tool-name].exe 直接從 WSL 命令行運行 Windows 工具。 例如, notepad.exe 。

以這種方式運行的應用程序具有相同的工作目錄,擁有與 WSL 進程相同的許可權,以活動 Windows 用戶的身份運行,顯示在 Windows 任務管理器中。

WSL 還有一些高級用法,比如更改磁碟大小,文件許可權,環境變數等,具體配置可以參考官方文檔。

⑤ wsl2解決「參考的對象類型不支持嘗試的操作」

虛擬環境無法使用、某個虛擬機無法使用、docker無法使用

wsl注冊表被修改了

新建文本文件,粘貼一下內容進去,保存

後綴名改為reg後,雙擊運行

⑥ Win10 WSL2安裝並運行bochs

【一】安裝一些基礎的依賴包

【二】安裝bochs

或者

【三】安裝 XLaunch
https://sourceforge.net/projects/vcxsrv/

傻瓜式安裝就可以了

安裝好之後,打開軟體, 在下一步的過程中,其中需要勾選下圖選項

最後在電腦右下角會看到它的圖標

【四】IP配置

打開CMD,使用ipconfig查看WSL的IP地址, 172.17.64.1

【五】驗證

⑦ WSL 2 配置代理

在 Windows 上設置好代理,連上了谷歌開開心心,但是 WSL 2 不能共享 Windows 的代理策略,如果在 WSL 上再裝一個代理軟體那可太麻煩了,所以得想想辦法。

其實辦法還挺簡單的,可能有的同學不知道,在一個區域網下如果有一台機器配置好了代理,那麼這個代理是可以共享給這個區域網下的其他設備的,比較類似軟路由哈!

具體方法如下:
Windows 端:
這里以 Clash 為例,打開 Allow LAN 選項,如下圖所示。如果你使用其他軟體,那可能是叫「網關模式」、「允許來自區域網的鏈接」或者其它的什麼,都是一個東西,打開就好了,注意打開這個選項後你的電腦就可以代理整個區域網內的機器了,雖然其他的機器還需要額外的配置,但也還是注意安全。

對於 Clash 來說,這個選項是一次性的,下次開機它就關了,不過可以在配置文件里改,通常文件的開頭就是。如下圖,改成 true 就行。

開啟這個選項後,仔細找找,你會找到一個 IP 地址和一個埠號,IP 其實就是本機 IP 啦,這兩個數一會有用。

Clash 這個埠 http 和 socks 通用

注意如果後文配置後沒有效果,那可能是 Windows 防火牆的鍋,快去配置防火牆放行 Clash

WSL 2 端:
說是 WSL 2,其實其他的手機電腦都能連上,就在網路設置或者 WiFi 設置那有個配置代理,把上面得到的 IP 和埠填上就行。

下面就說說在 WSL 2 下怎麼操作吧!

注意修改成你的埠

如果是 socket5 協議的話

如果埠一樣就可以合並成一句話,http 的同理

使用 curl 即可驗證是否代理成功,如下有返回值說明成功

可以將上面命令選擇你需要的添加到 .bashrc ,這樣會讓代理一直開啟。
使用 zsh 應該保存到 ~/.zshrc

更新配置

或者添加如下,需要代理的時候輸入 setss 即可設置代理,取消代理就 unsetss ,或者新開一個窗口。
下面第二條的長命令你好像得根據情況刪掉一部分。

如下是我在 ~/.zshrc 中添加的配置文件

驗證:

|

⑧ 一次不正經的Remote_WSL2體驗

 VSCode的Remote Development擴展正式發布也有兩個月了。我正嘗試將開發環境逐漸遷移到WSL,但在配置 Flutter 時,卻發現WSL的一個先天硬傷:
 —— 不能運行32位ELF程序
 怎麼辦呢,嘗試升級到 WSL2 吧......

 如果WSL安裝了 zsh 之類的shell並作為默認啟動,那麼在使用Remote_WSL時,VSCode的擴展依賴的依舊是 bash 的環境變數配置,並不會啟動zsh。
 因此,在設置如 android_HOME 、 GOPATH 之類的環境變數時,不要將自定義變數設置保存在 $HOME/.zshrc 里。

 在WSL中使用Flutter是我升級到WSL2的動因,WSL2確實解決了運行32bit程序的硬傷,但由於WSL2是完全的虛擬機環境,也產生了新的問題:
 —— android虛擬機就不能用了。

 當前WSL2預覽版本的bug,不能通過shell打開 code 、 explore 之類的windows程序,等待未來版本解決。

⑨ 最詳盡教程完整介紹-Windows 的 Linux 子系統-WSL1&WSL2

必須啟用「適用於 Linux 的 Windows 子系統」可選功能並重啟,然後才能在 Windows 上運行 Linux 發行版。

以管理員運行Powershell(開啟WSL,如已開啟可跳過)

WSL 1 和 WSL 2 之間的主要區別在於,在託管 VM 內使用實際的 Linux 內核、支持完整的系統調用兼容性以及跨 Linux 和 Windows 操作系統的性能。

WSL2相比WSL1來說可以完美支持Docker。與WSL1的模擬Linux API不同的是,WSL2採用在Hyper-V虛擬機中運行的方案。可以說WSL2和原汁原味的Linux已經十分接近

不支持Docker的守護進程,但您可以使用 Docker CLI 連接到通過 Docker for Windows 或您創建的任何其他VM 運行的遠程Docker守護進程

不能完全兼容systemctl, systemd等等,IO速度相對原生Linux也是大打折扣,在編譯和解壓方面可以很深體會到。畢竟不是真正的Linux,而是掛在Windows NT內核之上的仿Linux 系統

由於WSL 還不是原生的Linux,所以需要藉助 Docker for Windows 來實現Docker(Docker for Windows 是基於Hyper-V 技術)

另外一種方式是,在WSL1中安裝docker 客戶端,連接 docker server, 來解決在WSL1上使用docker 的問題。(PS: Win10 的Linux 子系統是裝不了 docker (服務端)的,但是可以安裝客戶端)

參考

WSL2 是第二代 WSL,包含在2020年5月正式發布 Windows 10 v2004 版中。相比第一代,新的 WSL2 重新設計了架構,使用真正的 Linux 內核,幾乎具有 Linux 的所有完整功能。啟用WSL2的 Linux 系統啟動時間非常快,內存佔用很少,並且,WSL 2 還可以直接原生運行 Docker,VS Code 編輯器還有 Remote-WSL 插件,相對於完整的 linux 虛擬機只是不支持 systemctl、systemd,不能直接運行圖形桌面。Windows 也越來越向虛擬平台靠攏,Windows NT 內核和 Linux 內核都是運行在虛擬平台之上的,是平級的

如果發現VERSION為1,說明Ubuntu運行在WSL1下,可以升級到 WSL2。同樣,WSL2也可以降級到WSL1。
wsl -l -v #查看已安裝Linux版本和名稱,完整命令格式:wsl --list --verbose

具體步驟參考 : https://docs.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package

安裝 WSL 2 之前,必須啟用「虛擬機平台」可選功能

wsl --set-version Ubuntu 2 #升級到WSL2,其中 Ubuntu 是已經安裝的Linux名稱,命令格式:wsl --set-version <Distro> <Version>

啟用WSL後,通過 wsl$ 可以訪問WSL文件

最初的WSL是在Windows之上模擬Linux內核,但是Windows和Linux之間存在如此基本的差異,以至於某些事情不可能以與本機Linux相同的行為實現,這意味著不可能直接在 WSL中運行 Docker Engine 和Kubernetes
在WSL1中,Docker Desktop通過Hyper-V虛擬機去運行docker環境的

升級到WSL2 之後, Docker Desktop 可以直接用 WSL2,直接運行在Linux 內核上了

通過如下設置,Docker Desktop就和WSL2分發版本進行了集成,無需在WSL中安裝docker; 當然,也可以選擇不與Docker Desktop集成,直接在WSL 中運行docker 容器。

啟用WSL後,docker運行數據都在WSL發行版中,文件位置都只能由WSL管理

安裝docker後,docker會自動創建2個發行版:

WSL發行版默認都是安裝在C盤,在%LOCALAPPDATA%/Docker/wsl目錄
docker的運行數據、鏡像文件都存在%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx中

通過 WSL 2 集成,您仍然可以體驗到與 Windows 的無縫集成,但在 WSL 中運行的 Linux 程序也可以執行相同的操作。這對於從事面向 Linux 環境的項目或為 Linux 量身定製的構建過程的開發人員產生了巨大影響。不再需要維護 Linux 和 Windows 構建腳本!例如,Docker 的開發人員現在可以在 Windows 上的 Linux Docker 守護程序上工作,使用與 Linux 計算機上的開發人員相同的工具和腳本集:

註:WSL2 Docker最爽的地方是和宿主機Win10共享network,我們在宿主機Win10使用localhost加埠號就可以訪問Docker中對應container中的服務,十分方便

wsl #啟動
wsl --shutdown #關閉所有正在運行的 Linux 和 WSL 2

啟動 WSL2 之後,會在任務管理器中發現多了一個 虛擬機工作線程

訪問wsl 文件

卸載發行版
有時候某個Linux發行版不再使用,或者是環境被搞壞需要重裝,這時候我們可以卸載掉這個Linux發行版。方法如下。

⑩ WSL2 搭建 Rancher 開發環境

@author Fu Kai
@since 20211128

一、 安裝 WSL2
二、 安裝 Rancher-2.5.x
三、 配置容器鏡像源
四、 添加主機靜態路由
五、helloworld 案例

不多說
service docker start

安裝 docker-compose

這里給出我的 docker-compose

啟動要耗費一些時間,需要耐心

Docker 中安裝 Rancher 默認使用的 K3s,K3s 是 K8s 的精簡版,底層不是用 docker 而是用的 containerd,配置容器鏡像源會和 docker 不同。

進入 rancher 容器
docker exec -it rancher-2.5.11 /bin/bash

vi /etc/rancher/k3s/registries.yaml

配置自己的阿里雲 docker 鏡像或者其它國內鏡像

exit 退出 rancher 容器

docker restart rancher-2.5.11 重啟 rancher 容器

默認情況下每次重啟 WSL2 系統都會給 WSL2 重新分配 IP 地址,截止 20211128,WSL2 還不能固定 IP
現在有效的做法可以通過建立網路適配器固定 WSL2 的 IP

新建.bat 文件,寫入下面兩行後以 管理員 執行

其中 Ubuntu-20.04 是通過 cmd wsl --list 命令獲得(發行版 Unbutu 升級後可能就不是 20.04 了)

主機 cmd 執行 ipconfig /all
執行後會在本機虛擬網卡 vEthernet (WSL) 中增加一個固定 IP 192.168.153.128

WSL2 執行 ifconfig
在 WSL2 中新增一塊虛擬網卡 eth0:1 擁有固定 IP 192.168.153.129

上圖 IP 172.25.32.1 不斷變化,目前沒辦法固定,固定的是自定義的 192.168.153.128

主機 →WSL2: ping 192.168.153.129
WSL2→ 主機: ping 192.168.153.128

如上配置好後就可以通過 192.168.153.129 訪問 WSL2 容器,如果 WSL2 中啟動了一個映射 3306 埠的容器,則通過 192.168.153.129:3306 就可以直接訪問到

但訪問 Rancher 部署的應用就會有問題

部署好後 helloworld0 生成了隨機埠 31928

滑鼠懸浮在埠號上,發現跳轉的 URI 是 172.172.172.14:31928

使用 Docker 部署的 Rancher 會使用 iptables 直接做埠的映射,即在 run 容器的時候不使用-p 指定埠映射也沒關系,iptables 會直接映射這些埠
即,此例中 helloworld0 映射 31928 埠,我通過 172.172.172.14:31928 可以在 WSL2 環境直接訪問到這個 helloworld0

說明使用 Rancher 部署的 helloworld0 沒有問題

在 WSL2 中訪問沒問題了,那主機訪問有沒有問題呢?

這里會涉及到網路的知識, 172.172.172.14 與 192.168.153.129 屬於 WSL2 的不同網段,訪問 192.168.153.129 並不能訪問到 172.172.172.14 ,屬於跨網段,這時需要添加靜態路由表自定義路由

首先
在 WSL2 中執行命令 iptables -P FORWARD ACCEPT (臨時,重啟後失效) 允許路由轉發
(永久暫不知道如何配置)

然後
在主機管理員 cmd 執行 sc start RemoteAccess
然後執行 route add -P 172.172.0.0 mask 255.255.0.0 192.168.153.129

主機訪問 172.172.0.0 這個網段的內容,指定下一跳為 192.168.153.129 ,再到 WSL2 中找到 172.172.172.14

ping 172.172.172.14 可以 ping 通

最後從網頁訪問可以訪問到 rancher-helloworld 頁面

[1] wsl2 中 docker 內部網路的埠轉發. https://www.yht7.com/news/96591

閱讀全文

與wsl2編譯lfs相關的資料

熱點內容
閩政通無法請求伺服器是什麼 瀏覽:48
怎麼做積木解壓神器 瀏覽:203
王者榮耀解壓玩具抽獎 瀏覽:49
12位是由啥加密的 瀏覽:868
程序員編迷你世界代碼 瀏覽:895
php取現在時間 瀏覽:246
單片機高吸收 瀏覽:427
怎麼區分五代頭是不是加密噴頭 瀏覽:244
hunt測試伺服器是什麼意思 瀏覽:510
2013程序員考試 瀏覽:641
畢業論文是pdf 瀏覽:736
伺服器跑網心雲劃算嗎 瀏覽:471
單片機定時器計數初值的計算公式 瀏覽:801
win7控制台命令 瀏覽:567
貓咪成年app怎麼升級 瀏覽:692
360有沒有加密軟體 瀏覽:315
清除cisco交換機配置命令 瀏覽:751
華為刪除交換機配置命令 瀏覽:473
shell打包命令 瀏覽:827
加密狗插上輸不了密碼 瀏覽:187