大多数 Linux 发行版都附带特定的内核版本,并且仅在点发布 ( x.y.z
to x.y.(z+1)
) 和安全更新时对其进行更新。
另一方面,我知道 Linux 有一个非常严格的政策,即不更改内核 ABI 并且永远不会破坏用户空间。事实上,Linus 已经有许多针对想要(有意或无意地)以非向后兼容方式更改内核的开发人员的公开发脾气。
我不明白为什么发行版使用“稳定”内核而不是总是更新到最新的内核。这不是批评,我只是想知道原因。
使用 SSH VPN 隧道(-w 选项)时,有没有办法知道隧道何时实际启动?我想在一个脚本中使用它,该脚本通过运行 ssh -w 然后运行 ifup [1] 来自动设置隧道。
-f 选项没有帮助,因为它在连接到服务器之后但在隧道启动之前返回。睡几秒钟确实有效,但感觉太黑了。
LocalCommand 选项似乎有效,例如:
ssh -w 0:1 "-oLocalCommand=ifup tun0" "-oPermitLocalCommand=yes" myserver.example.org true
Run Code Online (Sandbox Code Playgroud)
但是,手册页说:“该命令是同步运行的,无法访问生成它的 ssh(1) 会话。” 上面的调用是否保证有效,还是在隧道建立后执行 LocalCommand 只是运气好?
更重要的是,是否有在脚本中使用 ssh -w 的标准方法?
[1] 我在 Fedora 上,ifup 工作,因为我已经设置
/etc/sysconfig/network-scripts/ifcfg-tun0
和
/etc/sysconfig/network-scripts/route-tun0
我有一个 Btrfs 分区,它在顶层有一个子卷 ( /root
)。它在 /etc/fstab 中有subvol=root
选项。
每周,我都会/root/snapshots/...
使用只读快照:
btrfs subvolume snapshot -r / /snapshots/"$(date --rfc-3339=date)"
Run Code Online (Sandbox Code Playgroud)
(路径没有,/root
因为它被安装为subvol=root
)。
现在,假设出现问题,我想从快照恢复我的根子卷,我从 USB 磁盘启动并像/mnt/disk
没有 那样挂载分区subvol=root
。如果我尝试运行:
btrfs subvolume snapshot /mnt/disk/root/snapshots/2015-05-01 /mnt/disk/root
Run Code Online (Sandbox Code Playgroud)
它创建新的子卷 as 而/mnt/disk/root/2015-05-01
不是替换/mnt/disk/root/
。如果我尝试先运行删除它
btrfs subvolume delete /mnt/disk/root
Run Code Online (Sandbox Code Playgroud)
它给出了错误消息:
ERROR: cannot delete '/mnt/disk/root' - Directory not empty
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?或者我应该养成在正在快照的子卷之外创建快照的习惯吗?