Skip to content

Commit 4a5371c

Browse files
Update build-x86-64-openwrt.yml
1 parent 84d0565 commit 4a5371c

1 file changed

Lines changed: 32 additions & 6 deletions

File tree

.github/workflows/build-x86-64-openwrt.yml

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ jobs:
137137
sudo swapoff -a && sudo rm -f /swapfile /mnt/swapfile
138138
sudo -E apt-get -y purge azure-cli ghc* zulu* llvm* firefox google* dotnet* powershell openjdk* mongodb* moby* || true
139139
sudo -E apt-get -y update
140+
sudo -E apt-get -y install lvm2 btrfs-progs
140141
sudo -E apt-get -y install $(curl -fsSL is.gd/depends_ubuntu_2404)
141142
sudo -E systemctl daemon-reload
142143
sudo -E apt-get -y autoremove --purge
@@ -145,18 +146,43 @@ jobs:
145146
146147
- name: Combine Disks
147148
run: |
148-
MNT_SIZE=$((($(df --block-size=1024 --output=avail /mnt | tail -1) - 1024*1024*1) * 1024))
149-
sudo fallocate -l $MNT_SIZE /mnt/mnt.img
149+
# 仅修复核心错误:解决fallocate无效长度问题
150+
# 1. 定义安全计算函数(避免负数/非数值)
151+
calculate_safe_size() {
152+
local mount_point=$1
153+
local reserve_mb=$2
154+
# 获取可用空间(KB),过滤非数字字符
155+
local avail_kb=$(df --block-size=1024 --output=avail "$mount_point" 2>/dev/null | tail -1 | tr -d '[:space:]')
156+
# 验证数值有效性
157+
if ! [[ "$avail_kb" =~ ^[0-9]+$ ]]; then
158+
echo "Error: 无法获取 $mount_point 的可用空间"
159+
exit 1
160+
fi
161+
# 计算目标大小(字节),最小值设为100MB
162+
local reserve_kb=$((reserve_mb * 1024))
163+
local target_kb=$((avail_kb - reserve_kb))
164+
[ $target_kb -lt 102400 ] && target_kb=102400
165+
echo $((target_kb * 1024))
166+
}
167+
168+
# 2. 安全计算大小 + 替换fallocate为truncate(核心修复)
169+
MNT_SIZE=$(calculate_safe_size "/mnt" 1024)
170+
sudo truncate -s $MNT_SIZE /mnt/mnt.img
150171
MNT_NAME=$(sudo losetup -Pf --show /mnt/mnt.img)
151172
sudo pvcreate -f $MNT_NAME
152-
ROOT_SIZE=$((($(df --block-size=1024 --output=avail / | tail -1) - 1024*1024*4) * 1024))
153-
sudo fallocate -l $ROOT_SIZE /root.img
173+
174+
ROOT_SIZE=$(calculate_safe_size "/" 4096)
175+
sudo truncate -s $ROOT_SIZE /root.img
154176
ROOT_NAME=$(sudo losetup -Pf --show /root.img)
155177
sudo pvcreate -f $ROOT_NAME
156-
sudo vgcreate actions $MNT_NAME $ROOT_NAME
178+
179+
# 3. 原逻辑保留,仅新增卷组创建容错
180+
sudo vgcreate actions $MNT_NAME $ROOT_NAME || {
181+
sudo vgremove -f actions && sudo vgcreate actions $MNT_NAME $ROOT_NAME
182+
}
157183
sudo lvcreate -n disk -l 100%FREE actions
158184
LV_NAME=$(sudo lvscan | awk -F "'" '{print $2}')
159-
sudo mkfs.btrfs -L combinedisk $LV_NAME
185+
sudo mkfs.btrfs -f -L combinedisk $LV_NAME
160186
sudo mkdir -p /workdir
161187
sudo mount -o compress=zstd $LV_NAME /workdir
162188
sudo chown -R runner:runner /workdir && df -hT

0 commit comments

Comments
 (0)