导航:首页 > 源码编译 > 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相关的资料

热点内容
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
大学单片机相关科目 浏览:23
自己建了服务器地址 浏览:698
命令按钮的属性设置 浏览:965