冰月酱的备忘录

Description
日常技术备忘以及一些好玩的东西。

运营: @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
Advertising
We recommend to visit

#24小時為您服務 将心比己 Service Straight From The Heart

泰利担保 @TLDB 动态导航
泰利供需 @TLGX 付费广告
泰利公告 @TL88 公告频道
泰利大群 @TL99 资源大群
担保流程 @SONG 交易百科

公群负责人 @BPAY
仲裁负责人 @CPAY
交易负责人 @DPAY
业务咨询员 @WPAY

声明:所有交易都需要经过泰利担保方拉群,三方确认之后再进行交易,如未通过泰利担保,私下交易被骗与我方无关,交易需谨慎。

Last updated 4 days, 1 hour ago

2 years, 2 months ago

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 = br15. 编辑或创建 WSL 内部的 /etc/wsl.conf , 写入下面几行来启用 systemd 。
    [boot] systemd=true6. 用你喜欢的工具配置 WSL 的网络, 就像正常的 Linux 一样。
  5. wsl \-\-shutdown ; bash 重启 WSL2。
2 years, 3 months ago
原来 @ 后面不带东西的 `systemctl disable` 就是通配所有 …

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

2 years, 4 months ago

使用 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 容器一样。

3 years, 1 month ago

使用 systemd-networkd 配置 bridge 时。
如果这个 bridge 在 systemd-networkd 配置完网络之前都是空的(比如打算等网络起来之后再往里面添加其它接口), 那么应该在 .network 文件中加上

[Link] RequiredForOnline=no

这是因为 systemd-networkd 会把不包含任何接口的网桥视为 down 状态, 不指定 RequiredForOnline=no 的话就一定会阻塞 systemd\-networkd\-wait\-online.service

3 years, 4 months ago

这里 args 的源代码

```
#include

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

3 years, 4 months ago
3 years, 4 months ago
一个良好设计的 shell (比如 fish shell) 应该在后面这种情况报错, …

一个良好设计的 shell (比如 fish shell) 应该在后面这种情况报错, 而不是产生两种可能。。。

3 years, 4 months ago

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

3 years, 4 months ago
换个没有做特殊处理的 shell 就不行了, 和我预想的一样, 在 busybox …

换个没有做特殊处理的 shell 就不行了, 和我预想的一样, 在 busybox 中 [[ 就是一个普通的命令。

3 years, 4 months ago
看来这就是个特殊处理: `[[ ]]` 里面的 `z*` 一定不会被 …

看来这就是个特殊处理: [[ ]] 里面的 z* 一定不会被 bash 展开

We recommend to visit

#24小時為您服務 将心比己 Service Straight From The Heart

泰利担保 @TLDB 动态导航
泰利供需 @TLGX 付费广告
泰利公告 @TL88 公告频道
泰利大群 @TL99 资源大群
担保流程 @SONG 交易百科

公群负责人 @BPAY
仲裁负责人 @CPAY
交易负责人 @DPAY
业务咨询员 @WPAY

声明:所有交易都需要经过泰利担保方拉群,三方确认之后再进行交易,如未通过泰利担保,私下交易被骗与我方无关,交易需谨慎。

Last updated 4 days, 1 hour ago