- 正常用的系统 Windows Server 2019
在Hyper-V里面装最新版 Redhat Linux,开发者免费
- 选分区格式xfs,这个有Overlayfs特性,以后开container方便 https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/7.2_release_notes/technology-preview-file_systems
- LVM见仁见智 虚拟机我觉得用不上 毕竟可以在软件里直接调大
- container用自带的podman
共享文件夹
考虑了多个方案:windows开共享linux访问、反过来 + smb/cifs共享、nfs共享
最后决定linux开smb共享,由windows连接:
- https://www.redhat.com/sysadmin/samba-file-sharing
- windows下无论fat还是ntfs的时间戳精度都不够,linux下编译时会导致漏or重复编译
- windows开nfs共享要配置的点太多,而且也只支持到 NFS v3,即使linux发起nfs共享 也一样的情况
- windows对smb支持好,linux开smb服务器配selinux为
samba_share_t
开启smb记得关掉缓存 https://stackoverflow.com/a/29798193/12529885
- https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-7/ff686200(v=ws.10)
- 如果不关会出现例如
ninja: error: FindFirstFileExA(obj/third): The directory name is invalid.
的问题
- 不确定是否有用的WRITETHROUGH
net use z: \\172.20.0.2\project /WRITETHROUGH
Powershell内查看
Get-smbmultichannelconnection
,Get-SmbClientConfiguration
- 增大并发命令powershell内
Set-SmbClientConfiguration -MaxCmds 256
(同修改注册表)
- 增大并发命令powershell内
windows系统权限隔离
- 避免给与管理员权限,一定要用的使用虚拟机打开(例如vpn)
- 为方便使用,虚拟机内程序可配置RemoteApp
- 使用用户账户系统,对不信任的常用程序 新建用户并降低权限,run as user,对磁盘文件夹的默认访问权限加以限制,例如整个分区拒绝某用户访问
编译
在windows下编译for windows代码时若写入共享文件夹,又慢又出错,各种出错 这下又出一个unknownerror。
换个思路,无论是chrome-gn bazel cmake等等,都支持输出到文件夹,正好windows支持把网络共享映射到文件夹(和linux的mount类似)
以使用gn为例,打开控制台 (run as Administrator),连接网络驱动器 映射,由于mklink需要管理员权限,所以net use也需要以管理员身份重新连接。
net use z: \\172.20.0.2
mklink c:\work\project1\root \\172.20.0.2\project1
cd c:\work\project1\root
gn.exe gen out ..\x64rel
ninja -C ..\x64rel entry_target
同样适用于这篇: https://blog.vrqq.org/archives/795/