bash on windows php,使用 Windows 10 的 Bash On Windows 编译 OpenWrt 成功

本帖最后由 hackpascal 于 2016-11-29 00:33 编辑

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

如图:

88223dbdd243abda0f9ec520ab574f02.gif

conout.png (40 KB, 下载次数: 2)

2016-11-27 20:16 上传

88223dbdd243abda0f9ec520ab574f02.gif

output.png (75.31 KB, 下载次数: 2)

2016-11-27 20:16 上传

在 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]

88223dbdd243abda0f9ec520ab574f02.gif

menu_create_vhd.png (54.41 KB, 下载次数: 2)

2016-11-28 22:53 上传

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

88223dbdd243abda0f9ec520ab574f02.gif

create_vhd.png (72.61 KB, 下载次数: 2)

2016-11-28 22:56 上传

然后等待 VHD 创建完毕

创建好后的状态:

88223dbdd243abda0f9ec520ab574f02.gif

vhd_ok.png (49.7 KB, 下载次数: 3)

2016-11-28 23:01 上传

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

88223dbdd243abda0f9ec520ab574f02.gif

init_vhd.png (54.74 KB, 下载次数: 1)

2016-11-28 23:02 上传

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

88223dbdd243abda0f9ec520ab574f02.gif

init_vhd_2.png (56.29 KB, 下载次数: 2)

2016-11-28 23:04 上传

初始化完毕后,即可创建分区了

WSL 需要 NTFS 文件系统,因此将整个 VHD 创建为一个 NTFS 盘即可,其它设置默认即可

88223dbdd243abda0f9ec520ab574f02.gif

create_partition.png (59.54 KB, 下载次数: 2)

2016-11-28 23:06 上传

88223dbdd243abda0f9ec520ab574f02.gif

create_partition_2.png (95.9 KB, 下载次数: 2)

2016-11-28 23:08 上传

88223dbdd243abda0f9ec520ab574f02.gif

create_partition_3.png (38.29 KB, 下载次数: 1)

2016-11-28 23:08 上传

这一步需要注意,不要选择 "分配以下驱动器号",要选择 "装入以下空白 NTFS 文件夹中"

然后将路径填为 C:\Users\\AppData\Local\lxss

这也是为什么一开始要求删除已安装的 Bash,以及清空 lxss 目录内容的原因

88223dbdd243abda0f9ec520ab574f02.gif

create_partition_4.png (43.91 KB, 下载次数: 2)

2016-11-28 23:17 上传

88223dbdd243abda0f9ec520ab574f02.gif

create_partition_5.png (50.02 KB, 下载次数: 1)

2016-11-28 23:18 上传

88223dbdd243abda0f9ec520ab574f02.gif

create_partition_6.png (104.63 KB, 下载次数: 1)

2016-11-28 23:19 上传

然后等待分区创建完成。

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

88223dbdd243abda0f9ec520ab574f02.gif

bash_install.png (17.17 KB, 下载次数: 2)

2016-11-28 23:21 上传

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

88223dbdd243abda0f9ec520ab574f02.gif

bash_install_2.png (19.8 KB, 下载次数: 2)

2016-11-28 23:27 上传

然后是重点步骤:

打开 Process Monitor。程序会记录大量的操作记录,可能会卡死

因此建议在打开 Process Monitor 之前,关闭其他可能的程序,以减少进程操作频率

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

88223dbdd243abda0f9ec520ab574f02.gif

procmon.png (33.48 KB, 下载次数: 2)

2016-11-28 23:33 上传

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

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

然后点击 [OK] 按钮。

88223dbdd243abda0f9ec520ab574f02.gif

procmon_filter.png (35.48 KB, 下载次数: 2)

2016-11-28 23:32 上传

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

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

然后在 CMD 里执行 lxrun.exe /setdefaultuser

会出现要求输入新 UNIX 用户名的提示,输入自己需要的用户名,然后回车

88223dbdd243abda0f9ec520ab574f02.gif

bash_install_3.png (24.03 KB, 下载次数: 2)

2016-11-28 23:36 上传

会提示出错,不用管

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

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

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

88223dbdd243abda0f9ec520ab574f02.gif

procmon_list.png (59.97 KB, 下载次数: 2)

2016-11-28 23:39 上传

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

88223dbdd243abda0f9ec520ab574f02.gif

procmon_result.png (69.25 KB, 下载次数: 3)

2016-11-28 23:41 上传

将这个特殊字符复制下来,并妥善保存

这个特殊字符在不同的电脑里都可能不同

它是实现本教程移动 lxss 目录的关键因素

这里,如图得到的特殊字符是一个韩文字符 “잤”

然后关闭 Process Monitor

然后打开 Windows 资源管理器,定位到

C:\Users\\AppData\Local\lxss

88223dbdd243abda0f9ec520ab574f02.gif

lxss_root.png (52.22 KB, 下载次数: 3)

2016-11-28 23:44 上传

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

88223dbdd243abda0f9ec520ab574f02.gif

lxss_root_rename.png (53.61 KB, 下载次数: 2)

2016-11-28 23:46 上传

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

88223dbdd243abda0f9ec520ab574f02.gif

lxss_root_renew_empty_folder.png (65.36 KB, 下载次数: 2)

2016-11-28 23:48 上传

如此操作之后,再次在 CMD 中执行 lxrun.exe /setdefaultuser

依然输入之前打算设定的用户名和密码

88223dbdd243abda0f9ec520ab574f02.gif

bash_install_4.png (28.29 KB, 下载次数: 2)

2016-11-28 23:49 上传

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

此时 Bash 就已经成功安装到 VHD 里面了

可以打开 Bash 并进行测试

88223dbdd243abda0f9ec520ab574f02.gif

bash_stat.png (15.03 KB, 下载次数: 2)

2016-11-28 23:50 上传

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

然后就可以随意使用了

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

使用 VHD 的好处就是可以随时备份整个 Bash 环境

当然如果要备份 VHD,记得先在磁盘管理中删除 lxss 挂载点

88223dbdd243abda0f9ec520ab574f02.gif

unmount_vhd.png (68.36 KB, 下载次数: 2)

2016-11-28 23:54 上传

88223dbdd243abda0f9ec520ab574f02.gif

unmount_vhd_2.png (57.06 KB, 下载次数: 1)

2016-11-28 23:55 上传

选择 [删除]

然后分离 VHD

88223dbdd243abda0f9ec520ab574f02.gif

unmount_vhd_3.png (64.85 KB, 下载次数: 2)

2016-11-28 23:57 上传

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

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

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

88223dbdd243abda0f9ec520ab574f02.gif

mount_vhd.png (61.39 KB, 下载次数: 2)

2016-11-28 23:58 上传

选择需要挂载的 VHD 文件

88223dbdd243abda0f9ec520ab574f02.gif

mount_vhd_2.png (62.12 KB, 下载次数: 1)

2016-11-29 00:00 上传

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

88223dbdd243abda0f9ec520ab574f02.gif

mount_vhd_3.png (68 KB, 下载次数: 1)

2016-11-29 00:01 上传

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

88223dbdd243abda0f9ec520ab574f02.gif

mount_vhd_4.png (54.82 KB, 下载次数: 1)

2016-11-29 00:02 上传

点击 [添加] 按钮

88223dbdd243abda0f9ec520ab574f02.gif

mount_vhd_5.png (63.51 KB, 下载次数: 3)

2016-11-29 00:03 上传

选择 "装入以下空白 NTFS 文件夹中",然后填入路径

C:\Users\\AppData\Local\lxss

然后确定即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值