冰月酱的备忘录


Channel's geo and language: China, Chinese
Category: not specified


日常技术备忘以及一些好玩的东西。
运营: @haruue
Twitter: twitter.com/HaruueIcymoon
GitHub: git.io/haruue
Blog: haruue.moe
======
所有未标识来源的原创内容以及转发自 @haruue 的内容均以 CC-BY-SA 3.0 非本地化协议授权,代码部分额外以 Apache License 2.0 协议授权。
其他内容则与转发来源或标明的来源使用的授权协议一致。
频道头像来自 とある科学の超電磁砲 EP#20 01:20

Related channels

Channel's geo and language
China, Chinese
Category
not specified
Statistics
Posts filter


WSL2 改成桥接网络

* 这些功能都还在预览版里, 文档里还没所以记录一下。

好处:
+ 从外部访问 WSL2 不再会有玄学问题。
+ 让 WSL2 支持 IPv6。

1. 下载安装最新的 WSL 预览版, 确保 wsl --version 输出的版本号在 0.67.6.0 以上。
2. Windows 可选功能里启用 Hyper-V GUI 管理工具
3. 启动 Hyper-V Manager - Virtual Switch Manager , 创建一个 Virtual Switch(类似于 Linux 下面的 bridge), 类型选 External, 并选中你的以太网网卡(是否支持桥接无线网卡没试), 创建完成之后, 系统会像 Linux 一样把以太网网卡的网络配置搬到 Virtual Switch 上, 不过如果以太网网卡是手动配置的 IP 地址, 那么 DNS 配置是不会同步的, 要进 控制面板 - 适配器选项 里重新设置一下。
4. 编辑或创建 %USERPROFILE%\.wslconfig , 写入下面几行来换用 Virtual Switch, 把 br1 改成你刚创建的 Virtual Switch 名字。
[wsl2]
networkingMode = bridged
vmSwitch = br1
5. 编辑或创建 WSL 内部的 /etc/wsl.conf , 写入下面几行来启用 systemd 。
[boot]
systemd=true
6. 用你喜欢的工具配置 WSL 的网络, 就像正常的 Linux 一样。
7. wsl --shutdown ; bash 重启 WSL2。


原来 @ 后面不带东西的 systemctl disable 就是通配所有 enabled 的服务。


使用 systemd-nspawn 和 qemu-user-static 运行跨架构容器

纯软件虚拟化效率很低, 不适合 CPU 密集型程序。
另外如果用 docker 的话有现成的镜像。

安装 qemu 和设置 binfmt
pacman -S archlinuxcn/qemu-user-static archlinuxcn/binfmt-qemu-static
systemctl restart systemd-binfmt
现在的内核不需要拷贝 qemu-*-static 到容器里。 比较老的内核可能要检查 /proc/sys/fs/binfmt_misc/qemu-* 并拷贝 interpreter。

容器 rootfs
可以用 Debian, ArchLinuxARM 的 systemd 起不来(启动 bash 是没问题的)。
debootstrap --include=systemd-container --components=main,universe --arch=arm64 stable ./debian-arm

网络
systemd-networkd 启动不了, 装个 dhcpcd 就能开机自动从 host0 获取 IP 地址。

其它的应该和正常的 systemd-nspawn 容器一样。


使用 systemd-networkd 配置 bridge 时。
如果这个 bridge 在 systemd-networkd 配置完网络之前都是空的(比如打算等网络起来之后再往里面添加其它接口), 那么应该在 .network 文件中加上
[Link]
RequiredForOnline=no
这是因为 systemd-networkd 会把不包含任何接口的网桥视为 down 状态, 不指定 RequiredForOnline=no 的话就一定会阻塞 systemd-networkd-wait-online.service 。


这里 args 的源代码
#include

int main(int argc, char *argv[]) {
for (int i = 0; i < argc; i++) {
printf("argv[%d]=%s\n", i, argv[i]);
}
}


#bash


Forward from: Haruue Icymoon | 春上 氷月
一个良好设计的 shell (比如 fish shell) 应该在后面这种情况报错, 而不是产生两种可能。。。


Forward from: Haruue Icymoon | 春上 氷月
而且 bash 里的 * 本身就是与环境相关会有不同结果的典范。。。
在这个例子中也可以看出, 在当前目录下面有匹配 z* 的文件 z2 的时候, z* 会被 bash 展开为 z2 ,
但是如果没有这种文件, bash 会把 z* 直接传给命令。


Forward from: Haruue Icymoon | 春上 氷月
换个没有做特殊处理的 shell 就不行了, 和我预想的一样, 在 busybox 中 [[ 就是一个普通的命令。


Forward from: Haruue Icymoon | 春上 氷月
看来这就是个特殊处理: ` ` 里面的 z* 一定不会被 bash 展开


Forward from: Pink D


在 nginx 中, 声明默认的 ssl server 并且指定 ssl_ciphers NULL 就能避免 nginx 在 https 请求中没有携带 SNI 或者使用错误的 SNI 的情况下仍然返回首个 server 的证书链。 从而达到和 caddy 类似的行为。

ssl_certificate 和 ssl_certificate_key 看起来仍然是必须指定的。 虽然并不会返回。


在最新的 pam 1.4.0 中, 新增了 pam_faillock 模块并默认启用。 这导致在 sudo 输错 3 次密码之后就锁定, 并且 10 分钟内即使输入正确的密码也无法解锁, 这种情况下的输出就像输错了密码一样。

此变更不仅影响 sudo , 还影响基于 pam 的锁屏程序。

如需手动解锁, 可尝试使用其它终端登录 root 账户, 或执行 su 命令后通过 root 账户的密码登录到 root 账户, 然后使用 faillock 命令解锁。
如需更改这种行为, 请查看 /etc/security/faillock.conf 。
如需禁用这种行为(就像 1.3.1 以及之前一样),请在 /etc/security/faillock.conf 中设置 deny = 0 。


Forward from: Haruue Icymoon | 春上 氷月
凡是和位操作相关的东西, 不写括号都要打死




Forward from: interesting ¯\\_(ツ)_/¯
咕咕噜: 脚痛砍头
Android 10 有用的剪贴板管理应用没法读取剪贴板了 而希望不要读取剪贴板的国产输入法却依然可以记录剪贴板 好的砍了坏的留着 #辣鸡谷歌毁我信仰 #clip #google #scn


如果你的ssh连接经常卡在 SSH2_MSG_SERVICE_ACCEPT ,可以检查一下是不是DNS反查的问题,ssh连接时会默认触发域名反查,而且这是个同步操作,所以服务器查询dns的时间会算在你连接ssh的时间里,如果这一步卡住,你的ssh连接也会被卡住

解决的方案很简单,把服务器上的 /etc/ssh/sshd_config 里的 UseDNS yes 改成 UseDNS no 就好了


在桌面环境不是 Gnome 的情况下让 telegram-desktop 使用 GTK 的 File Dialog 而不是 Qt 预设的那个。
能用的方案是 启动时加环境变量 XDG_CURRENT_DESKTOP=gnome 。


Video is unavailable for watching
Show in Telegram
你们 MIUI 的魔幻操作, 浏览器下载个 APK 直接跳转应用商店, 并且应用商店还没有更新版本。


Forward from: Rikka
(看到了果汁 ssh 才知道可以这么用的 Rikka

20 last posts shown.

46

subscribers
Channel statistics