页次: 1
最开始只是想在公司办公电脑上更舒服的使用linux shell,所以装了WSL。
后来发现可以用Arch,就把发行版换成了ArchWSL(其实并没有太多的好处)
【我是不会承认我就是冲着用pacman去的...XD】
环境: Win10 1709的WSL + ArchWSL-AppX_20.4.3.0_x64.appx
我的目标:在后台开一个posix shell环境,可以随时通过ssh连上去干活
安装和配置pacman 源的东西就不写了,wiki上大堆现成的内容可以参考。
安装完成后配置shell相关环境,WSL对oh-my-zsh等shell相关工具的兼容性还是非常棒的,
与真机环境下的Ach没有太多差异,tmux也能支持
完成相关安装和环境初始化之后,开始改善易用性:
1. 做一个vb脚本(wsl-startup.vbs)持久化后台shell 并 启动sshd以便随时登录
set ws=wscript.createobject("wscript.shell")
ws.run "C:\Android\adb.exe start-server",0
ws.run "C:\Windows\System32\wsl.exe -u root -e /usr/bin/sshd -D",0
ws.run "C:\Windows\System32\bash.exe -u root -e chmod +rwx /dev/ttyS*",0
然后把这个脚本放入windows的自启动目录即可
然后问题来了,默认状态下 systemctl是没法用的,我之前发的讨论帖 https://bbs.archlinuxcn.org/viewtopic.php?id=5960
更多的内容可以参考github 上关于wsl init的讨论。
我在internet上找到了相关替代品——一个用python实现的脚本 (^1)
食用方法:直接wget(或者curl)https://raw.githubusercontent.com/gdrah … stemctl.py
然后执行一次下面的命令
sudo cp $(which systemctl) $(which systemctl).old
sudo cp systemctl.py $(which systemctl)
sudo chmod +x $(which systemctl)
ok,systemctl 已经可以用来start一些服务了,但是systemctl enable依然不可用,所以得在vbs脚本中写上start命令
然而会发现sshd还是没有启动起来,而且替代品的systemctl还有相关log(淦!)
手动执行sshd得到提示 sshd: no hostkeys available -- exiting.
查阅Internet发现是因为没有相关host key,所以执行下列命令(^2):
# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
# ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
# ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
最后,我使用putty作为ssh客户端连上去,putty对于ssh terminal的兼容性还是非常不错的!
references:
(^1)https://github.com/gdraheim/docker-syst … placement/
(^2) https://my.oschina.net/u/4325464/blog/4279295
最近编辑记录 matrikslee (2021-04-06 10:20:40)
离线
Win10 升到 2004 用 WSL2,然后上 Microsoft Store 装 Windows Terminal 或 VSCode 装 Remote Development 插件,微软官方正统~
离线
Win10 升到 2004 用 WSL2...微软官方正统~
WSL2是比WSL改善了很多东西,我也想上WSL2,但是WSL2也有硬伤
不能访问usb(例如adb)以及串口,而WSL这边是完美支持的
另外,公司电脑不是个人电脑,操作系统版本自己选不了,如果可以,我直接上Arch它不香嘛...
最近编辑记录 matrikslee (2020-08-07 16:38:56)
离线
自从Archlinux的glibc包的2.33-4版本在build时加入了--enable-kernel编译选项后,WSL Arch的kernel由于是windows提供的二进制文件且无法升级导致Fatal: kernel too old错误。
修复的方法是编辑pacman.conf将[core]的mirror server改成一个备份mirror以避免升级glibc软件包,弊端就是所有软件都无法升级了(WSL还要什么升级)【这很不Arch!!!】
参考:
https://bugs.archlinux.org/task/69684
https://www.gitmemory.com/issue/yuk7/Ar … /781374779
最近编辑记录 matrikslee (2021-03-29 20:11:57)
离线
自从Archlinux的glibc包在build的时候加入了--enable-kernel编译选项后,WSL Arch的kernel由于是windows提供的二进制文件且无法升级导致Fatal: kernel too old错误。
离线
matrikslee 说:自从Archlinux的glibc包在build的时候加入了--enable-kernel编译选项后,WSL Arch的kernel由于是windows提供的二进制文件且无法升级导致Fatal: kernel too old错误。
会有包冲突诶,这样的花不小心在升级的使用用glibc替换了glibc-linux4是不是就gg了?
离线
会有包冲突诶,这样的花不小心在升级的使用用glibc替换了glibc-linux4是不是就gg了?
为啥会“不小心替换”啊?
离线
matrikslee 说:会有包冲突诶,这样的花不小心在升级的使用用glibc替换了glibc-linux4是不是就gg了?
为啥会“不小心替换”啊?
pacman在询问是否要替换软件包的时候顺手就按Enter确认啊
离线
如果只是要在win上用 pacman 的话,那么你直接用 msys2 就好了。
离线
页次: 1