From b3387ea54251af5d90d44596de7b1b380653a5e5 Mon Sep 17 00:00:00 2001
From: LY <51789698+Young-Lord@users.noreply.github.com>
Date: Sat, 2 Dec 2023 10:12:45 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=8D=9A=E6=96=87=EF=BC=9AVe?=
=?UTF-8?q?ntoy=20Arch=20Linux=20To=20Go=20=E5=8D=81=E5=88=86=E9=92=9F?=
=?UTF-8?q?=E9=80=9F=E9=80=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...06\351\222\237\351\200\237\351\200\232.md" | 147 +++++++++++++++++-
1 file changed, 144 insertions(+), 3 deletions(-)
diff --git "a/_posts/2023-11-30-Ventoy_Arch_Linux_To_Go_\345\215\201\345\210\206\351\222\237\351\200\237\351\200\232.md" "b/_posts/2023-11-30-Ventoy_Arch_Linux_To_Go_\345\215\201\345\210\206\351\222\237\351\200\237\351\200\232.md"
index 16ab78e..e0da6de 100644
--- "a/_posts/2023-11-30-Ventoy_Arch_Linux_To_Go_\345\215\201\345\210\206\351\222\237\351\200\237\351\200\232.md"
+++ "b/_posts/2023-11-30-Ventoy_Arch_Linux_To_Go_\345\215\201\345\210\206\351\222\237\351\200\237\351\200\232.md"
@@ -2,7 +2,7 @@
tags: [Arch Linux, Ventoy]
title: Ventoy Arch Linux To Go 十分钟速通
slug: arch-to-go
-last_modified_at: 2023-11-30
+last_modified_at: 2023-12-2
---
## 前言
@@ -31,7 +31,7 @@ last_modified_at: 2023-11-30
- Mirrors: Region: China
- Disk configuration: Use a best-effort default partition layout -> 选中那个比较大的盘(`ATA VBOX HARDDISK`;`/dev/sda`;`scsi`) -> btrfs -> yes -> yes(一路Enter就行)
- Bootloader: Systemd-boot(默认值)(这里要是默认值是`Grub`且没有`Systemd-boot`就可以重开了,你没开`EFI`)
-- Swap: no(真有人拿U盘当swap?要是是移动硬盘之类的可以视情况调整)
+- Swap: no(真有人拿U盘当swap?要是是移动硬盘之类的可以视情况调整)(其实这个[貌似](https://github.com/archlinux/archinstall/blob/4955b64a8c596d3eafa1b96b74e915ad12b3fe63/archinstall/lib/installer.py#L710)是[zram](https://wiki.archlinux.org/title/Zram)而非swap分区或Swapfile,所以开应该也没关系…吧?)
- Hostname: livearch(自行输入)
- Root password: 自行输入
- User account: 自行输入,我这里用户名为`user`,并且给予了`sudo`权限
@@ -39,6 +39,7 @@ last_modified_at: 2023-11-30
- Audio: Pipewire(可选,不用声音的话不装也行)
- Network configuration: NetworkManager(要是你用别的方法能装包,也可以不装)
- Timezone: Asia/Shanghai
+- NTP: True(时间同步,如果你的Timezone与宿主机(也就是你插U盘进去那台机)上的Timezone不一致的话建议不开,否则可能会搞乱宿主机的系统时间)
配置完后直接Install。
@@ -164,7 +165,147 @@ echo vhci-hcd | sudo tee /etc/modules-load.d/vhci-hcd.conf # 开机自动加载
这里建议测试一下是否在`UEFI`(主要与`mkinitcpio`有关)及`Legacy BIOS`(主要与`grub`有关)启动模式下均能正常工作,方法不再赘述。
-UEFI启动时会有奇怪的start job failed,不过不影响使用。
+## 问题
+
+### 使用UEFI启动时的1min30s延迟
+
+UEFI启动时会有奇怪的`[ *** ] A start job is running for xxx (xxx / 1min 30s)`,不过不影响使用。根据我的猜测,这个问题成因是`boot`分区指向`/dev/dm-1`,因此`Systemd-boot`拒绝使用已挂载的`/boot`作为ESP。
+
+有一些workaround:
+
+- 使用Grub完全替换掉Systemd-boot:太麻烦了,不推荐
+- 修改Systemd的默认timeout(把`/etc/systemd/system.conf`里的`DefaultDeviceTimeoutSec`改成`10s`):不推荐,可能会导致其他问题
+- 修改对应unit的timeout:没有成功。
+- 阻止此服务运行:我的方法,没有出现其他问题,具体见下:
+
+```shell
+sudo mkdir /usr/lib/systemd/system-generators-backup
+sudo mv /usr/lib/systemd/system-generators/systemd-gpt-auto-generator /usr/lib/systemd/system-generators-backup/systemd-gpt-auto-generator.bak
+```
+
+具体log(`journalctl -b`):
+
+```plain
+Dec 02 00:19:00 archlinux systemd[1]: Job dev-disk-by\x2ddiskseq-3\x2dpart1.device/start timed out.
+Dec 02 00:19:00 archlinux systemd[1]: Timed out waiting for device /dev/disk/by-diskseq/3-part1.
+Dec 02 00:19:00 archlinux systemd[1]: Dependency failed for EFI System Partition Automount.
+Dec 02 00:19:00 archlinux systemd[1]: efi.mount: Job efi.mount/start failed with result 'dependency'.
+Dec 02 00:19:00 archlinux systemd[1]: dev-disk-by\x2ddiskseq-3\x2dpart1.device: Job dev-disk-by\x2ddiskseq-3\x2dpart1.device/start failed with result 'timeout'.
+```
+
+```shell
+[user@archlinux dev]$ bootctl
+Couldn't find EFI system partition. It is recommended to mount it to /boot or /efi.
+Alternatively, use --esp-path= to specify path to mount point.
+System:
+ Firmware: UEFI 2.70 (American Megatrends 5.13)
+ Firmware Arch: x64
+ Secure Boot: disabled (unknown)
+ TPM2 Support: yes
+ Boot into FW: supported
+
+Current Boot Loader:
+ Product: systemd-boot 254.6-2-arch
+ Features: ✓ Boot counting
+ ✓ Menu timeout control
+ ✓ One-shot menu timeout control
+ ✓ Default entry control
+ ✓ One-shot entry control
+ ✓ Support for XBOOTLDR partition
+ ✓ Support for passing random seed to OS
+ ✓ Load drop-in drivers
+ ✓ Support Type #1 sort-key field
+ ✓ Support @saved pseudo-entry
+ ✓ Support Type #1 devicetree field
+ ✓ Enroll SecureBoot keys
+ ✓ Retain SHIM protocols
+ ✓ Boot loader sets ESP information
+ ESP: /dev/disk/by-partuuid/503e184d-c5db-425f-84d7-572495267d53
+ File: └─/EFI/BOOT/BOOTX64.EFI
+
+Random Seed:
+ System Token: not set
+
+Boot Loaders Listed in EFI Variables:
+ Title: deepin
+ ID: 0x0002
+ Status: active, boot-order
+ Partition: /dev/disk/by-partuuid/a0cda2b8-607d-4a98-ab39-4a267c7dd522
+ File: └─/EFI/DEEPIN/SHIMX64.EFI
+
+ Title: Windows Boot Manager
+ ID: 0x0001
+ Status: active, boot-order
+ Partition: /dev/disk/by-partuuid/a0cda2b8-607d-4a98-ab39-4a267c7dd522
+ File: └─/EFI/MICROSOFT/BOOT/BOOTMGFW.EFI
+
+[user@archlinux dev]$ bootctl --esp-path=/boot
+dm-1: Failed to get device property: No such file or directory
+System:
+
+Current Boot Loader:
+
+Random Seed:
+ System Token: not set
+ Exists: yes
+
+Available Boot Loaders on ESP:
+ ESP: /boot
+ File: ├─/EFI/systemd/systemd-bootx64.efi (systemd-boot 254.6-2-
+arch)
+ └─/EFI/BOOT/BOOTX64.EFI (systemd-boot 254.6-2-arch)
+
+Boot Loaders Listed in EFI Variables:
+
+Boot Loader Entries:
+ $BOOT: /boot
+ token: arch
+
+Default Boot Loader Entry:
+ type: Boot Loader Specification Type #1 (.conf)
+ title: Arch Linux (linux)
+ id: 2023-11-30_13-31-20_linux.conf
+ source: /boot//loader/entries/2023-11-30_13-31-20_linux.conf
+ linux: /boot//vmlinuz-linux
+ initrd: /boot//initramfs-linux.img
+ options: root=UUID=3292b807-b6b5-4fd5-b50d-9dfdcf01088c zswap.enabled=0 ro
+otflags=subvol=@ rw rootfstype=btrfs
+
+
+[user@archlinux dev]$ ls -al /dev/dm-1
+brw-rw---- 1 root disk 254, 1 Dec 2 2023 /dev/dm-1
+
+[user@archlinux dev]$ mount | grep boot
+/dev/mapper/ventoy1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)
+
+[user@archlinux dev]$ ls -al /dev/mapper/ventoy1
+lrwxrwxrwx 1 root root 7 Dec 2 2023 /dev/mapper/ventoy1 -> ../dm-1
+
+[user@archlinux dev]$ lsblk
+NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
+sda 8:0 0 465.8G 0 disk
+sdb 8:16 1 115.5G 0 disk
+├─sdb1 8:17 1 100.5G 0 part
+│ └─ventoy 254:0 0 6G 0 dm
+│ ├─ventoy1 254:1 0 512M 0 dm /boot
+│ └─ventoy2 254:2 0 5.5G 0 dm /var/log
+│ /home
+│ /var/cache/pacman/pkg
+│ /.snapshots
+│ /
+├─sdb2 8:18 1 32M 0 part
+```
+
+本段的参考资料:
+
+- [global mounting default timeout of 1min 30s / System Administration / Arch Linux Forums](https://bbs.archlinux.org/viewtopic.php?id=191744)
+- [systemd#GPT_partition_automounting - ArchWiki](https://wiki.archlinux.org/title/systemd#GPT_partition_automounting)
+- [Why should I mount both /boot and /efi / Laptop Issues / Arch Linux Forums](https://bbs.archlinux.org/viewtopic.php?id=289331)
+- [\[SOLVED\] systemd boot mounts to /efi despite specifying ESP path / Newbie Corner / Arch Linux Forums](https://bbs.archlinux.org/viewtopic.php?pid=2006888#p2006888)
+- [systemd-gpt-auto-generator(8) - Linux manual page](https://www.freedesktop.org/software/systemd/man/devel/systemd-gpt-auto-generator.html)
+- [systemd.generator(7) - Linux manual page](https://www.freedesktop.org/software/systemd/man/latest/systemd.generator.html)
+- [systemd.unit(5) - Linux manual page](https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html#Description):写了一个override.conf来覆盖`efi.mount`的`TimeoutSec`,但是好像没用。
+- [How to change systemd service timeout value? - Unix & Linux Stack Exchange](https://unix.stackexchange.com/questions/227017/how-to-change-systemd-service-timeout-value)
## 参考资料