找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 32303|回复: 77

使用 Windows 10 的 Bash On Windows 编译 OpenWrt 成功

 火.. [复制链接]
发表于 2016-11-27 20:29 | 显示全部楼层 |阅读模式
本帖最后由 hackpascal 于 2016-11-29 00:33 编辑

成功使用 Windows 10 自带的 Linux 子系统 (WSL) 编译 OpenWrt
如图:




在 WSL 里面编译 OpenWrt 跟在普通 Linux 环境下编译没有任何区别

但是要注意的是:
  • Windows 10 系统版本要求是 Windows 10 周年更新 1607 (build 14393) 或者之上的 Insider Preview,必须是 64 位版
  • WSL 不能修改根目录位置,因此只能在系统盘里使用,编译前请保证系统盘有足够的空间
  • 使用最新官方 LEDE 代码执行一次只带 LuCI 的编译,需要 10GiB 左右的空间
  • 因为 Windows 系统磁盘 I/O 效率问题,在 WSL 的编译效率只有在原生 Linux 系统里的 40%~70% 左右
  • 不建议在 SSD 里面编译,不解释。可以参考补充2的教程将 Bash 目录移动到 VHD 中,将 VHD 储存在其它分区
  • 不要使用 Windows 下的文本编辑器一类的工具来修改 lxss 目录里的文件,这些工具会使 Linux 文件系统关键属性丢失,导致出现在 WSL 里找不到修改后的文件的情况 (可以使用补充1里的工具)
  • 可以在 WSL 里安装 gedit,配合 Windows 里面安装 Xming 一类的 X Window 服务器来实现启动图形界面程序


使用 WSL 编译 OpenWrt 前,记得先执行 sudo apt-get install unzip,WSL 默认不带 unzip,但这是编译 OpenWrt 必需的

没有教程,因为跟 “Ubuntu 编译 OpenWrt” 之类的教程的操作方法没有任何区别

补充1:

修改过的 Notepad++ 7.2.1 x86,支持保留现有 WSL 文件 Linux 文件系统关键属性
使用此工具可以安全修改 lxss 目录下的文件,修改后的文件会保留原始文件的 Linux 文件权限信息 (会同步修改文件时间)
新建的文件不会包含 Linux 文件权限信息,因此请在 Bash 里创建文件,再用此工具进行修改


须先安装 notepad++ 7.2.1 32位版 (https://notepad-plus-plus.org/download/v7.2.1.html)
然后将压缩包中的 notepad++.exe 替换掉 notepad++ 安装目录中的同名文件

压缩包中包含改动的 patch 文件,有兴趣者可以自行编译 (patch 只修改了 VS2015 工程文件,VS2013 的没修改。因此如果要使用 VS2013 进行编译,请手动在工程里添加 lxss.cpp 文件)

度盘:
http://pan.baidu.com/s/1qXX9C0O


补充2:
将 lxss 目录移动到其它分区
如果要这么做,请确保开启了 WSL 支持,但是没有安装 Bash。如果已经安装,请备份数据后执行 lxrun.exe /uninstall 来卸载。
卸载后,请确保 C:\Users\<你的用户名>\AppData\Local\lxss 目录是空的(注意此目录是隐藏的),如果不是空的,则需要删除里面的所有内容 (注意备份数据)
如果 C:\Users\<你的用户名>\AppData\Local\lxss 目录不存在,就创建 lxss 空文件夹。
请将 C: 替换为系统所在的盘符

需要准备的工具:
Process Monitor (https://download.sysinternals.com/files/ProcessMonitor.zip)

首先打开 Windows 系统的磁盘管理,Win+R -> diskmgmt.msc

然后点击菜单 [操作] -> [创建 VHD]



然后根据自己的需求选定文件存放的位置、VHD 文件类型和大小等



然后等待 VHD 创建完毕
创建好后的状态:



然后右键单击新创建的 VHD 虚拟磁盘



出现对话框,使用默认设置即可



初始化完毕后,即可创建分区了
WSL 需要 NTFS 文件系统,因此将整个 VHD 创建为一个 NTFS 盘即可,其它设置默认即可







这一步需要注意,不要选择 "分配以下驱动器号",要选择 "装入以下空白 NTFS 文件夹中"
然后将路径填为 C:\Users\<你的用户名>\AppData\Local\lxss
这也是为什么一开始要求删除已安装的 Bash,以及清空 lxss 目录内容的原因








然后等待分区创建完成。

分区创建完成后,在 CMD 中运行 lxrun.exe /install 以正常方式安装 Bash



此时会提示创建 UNIX 用户失败,但是不用关心



然后是重点步骤:

打开 Process Monitor。程序会记录大量的操作记录,可能会卡死
因此建议在打开 Process Monitor 之前,关闭其他可能的程序,以减少进程操作频率

打开 Process Monitor,如果出现如下的界面



那么进行如下设置,否则请直接跳到下一步。如果不想设置,也可以直接关闭设置窗口,直接进入下一步。

将第一个下拉菜单设置为 Process Name,将第二个下拉菜单设置为 is not,然后文本框中输入 svchost.exe,第三个下拉菜单设置为 Exclude,然后点击 [Add] 按钮。
然后点击 [OK] 按钮。



此处是设置了过滤器,可以减少记录的进程操作数量

此时 Process Monitor 就会开始记录大量的进程操作

然后在 CMD 里执行 lxrun.exe /setdefaultuser
会出现要求输入新 UNIX 用户名的提示,输入自己需要的用户名,然后回车



会提示出错,不用管

然后打开 Process Monitor 窗口,按 Ctrl + E 快捷键停止捕捉进程操作

然后按 Ctrl + F 快捷键打开查找窗口,输入 rootfs,然后开始一个个查找

然后会出现一条记录,其中的文件路径会有一个奇怪的字符出现在 rootfs 前面,这就所需要的数据



双击此条目,打开事件属性窗口



将这个特殊字符复制下来,并妥善保存
这个特殊字符在不同的电脑里都可能不同
它是实现本教程移动 lxss 目录的关键因素
这里,如图得到的特殊字符是一个韩文字符 “&#51108;”

然后关闭 Process Monitor

然后打开 Windows 资源管理器,定位到
C:\Users\<你的用户名>\AppData\Local\lxss



修改 cache data home mnt root rootfs 文件夹的名字,在它们前面加上刚刚获取的特殊字符



然后新建空白文件夹,名字就是上一步里提到的原始文件夹的名字 (cache data home mnt root rootfs 共6个)




如此操作之后,再次在 CMD 中执行 lxrun.exe /setdefaultuser
依然输入之前打算设定的用户名和密码



不出意外的话,应该能顺利进行

此时 Bash 就已经成功安装到 VHD 里面了
可以打开 Bash 并进行测试



可以看到 rootfs 的容量就是 VHD 的容量


然后就可以随意使用了


VHD 在每次开机后都会自动挂载

使用 VHD 的好处就是可以随时备份整个 Bash 环境
当然如果要备份 VHD,记得先在磁盘管理中删除 lxss 挂载点





选择 [删除]



然后分离 VHD



分离后,VHD 文件就可以进行移动、复制等操作了

如果要重新挂载 VHD,则步骤如下

菜单 [操作] -> [附加 VHD]



选择需要挂载的 VHD 文件



附加 VHD 完成后,需要重新将分区挂载到 lxss 目录



选择 "更改驱动器号和路径"



点击 [添加] 按钮



选择 "装入以下空白 NTFS 文件夹中",然后填入路径
C:\Users\<你的用户名>\AppData\Local\lxss

然后确定即可


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 14恩山币 +24 收起 理由
hong0980 + 3 我来恩山就是为了撩你!
philips4500 + 1 一看就是觉得高端、大气、上档次!
屌到不行 + 1 亲,你这么厉害,我想做你的经纪人!
Dangkik + 1 兄弟,你肥皂又掉了…你是故意掉的?
薰风习习 + 3 支付宝已转500w给你!
楠楠 + 1 一看就是觉得高端、大气、上档次!
ligo_ + 1 我来恩山就是为了看你!
everyouth + 1 我来恩山就是为了看你!
a7077447 + 1 我来恩山就是为了看你!
siasjack + 1 我来恩山就是为了看你!
Kucami + 1 我来恩山就是为了看你!
haxc + 5 亲,你这么厉害,我想做你的经纪人!
onlygf + 3 亲,你这么厉害,我想做你的经纪人!
1980490718 + 1 土豪,我们做朋友吧!

查看全部评分

只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2016-11-27 20:32 | 显示全部楼层
我是二楼。。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-11-27 20:51 来自手机 | 显示全部楼层
留名,顶pascal
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-11-27 21:03 | 显示全部楼层
收藏了,等待补充完整再思考。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-11-27 21:20 来自手机 | 显示全部楼层
ssd毁硬盘吧
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-11-27 21:21 | 显示全部楼层
win10还有这功能,思考下!!!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-11-27 21:21 | 显示全部楼层
留名,备用
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-11-27 21:54 来自手机 | 显示全部楼层
期待大神编译教程
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-11-27 22:41 来自手机 | 显示全部楼层
前来支持,顶大神
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-11-28 00:28 | 显示全部楼层
强啊,有点溜
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-11-28 01:12 | 显示全部楼层
好好玩的东西哎
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-11-28 05:54 | 显示全部楼层
前排围观!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-11-28 08:28 | 显示全部楼层
先收着,以后备用
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-11-28 09:30 | 显示全部楼层
好东西要分享。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-11-28 14:30 | 显示全部楼层
1、在 Windows 10中,点击“开始”——“设置”,在打开的设置窗口搜索框中输入“特性”两个字,将会出现“启用或关闭 Windows 功能”条目,点击启动它。
2、将弹出“Windows 功能”对话框,在对话框窗口列表中向下滚动,直到发现“Windows Subsystem for linux (Beta)”条目,点击选中其前面的复选框。
3、接下来将下载、安装和应用相关的组件,这些操作进程结束后,显示“立即重新启动”按钮,点击它重新启动电脑。
4、重新启动进入 Windows 10 的桌面,在小娜搜索框中键入:Bash,小娜顶端出现“Bash 运行命令”条目,回车(或点击)启动它。
5、将会出现类似 Windows 传统 cmd.exe 界面的窗口,提示此 Bash 来自 Ubuntu,并且需要下载相关文件,键入“Y”将开始从微软商店中下载。在这里键入“Y”,下载开始。
6、经过一段时间的下载,Ubuntu 的 Bash 安装完成,提示符也变成了:
        root@localhost:/mnt/c/WINDOWS/System32#
在“#”号后面,可以键入 Bash 命令测试。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-9-28 17:31

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表