projects:temp
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
projects:temp [2025/04/02 20:09] – | projects:temp [2025/04/02 20:38] (текущий) – [1] | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== rootfs ====== | ====== rootfs ====== | ||
+ | ===== 1 ===== | ||
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
Строка 78: | Строка 78: | ||
MAX_MB=$((LIMIT_GB * 1024)) | MAX_MB=$((LIMIT_GB * 1024)) | ||
- | |||
- | # === 🔄 Подключение loop === | ||
- | LOOP_DEV=$(losetup --show -Pf " | ||
- | mkdir -p " | ||
- | mount " | ||
- | |||
- | # === Удаление авторасширения === | ||
- | rm -f " | ||
- | rm -f " | ||
- | rm -f " | ||
- | sed -i 's@ init=/ | ||
# === Установка stretch_limited в initramfs === | # === Установка stretch_limited в initramfs === | ||
- | mkdir -p "$MOUNT_DIR/ | + | mkdir -p "$TARGET_DIR/ |
- | cat << | + | cat > "$TARGET_DIR$INITRD_SCRIPT" |
#!/bin/sh | #!/bin/sh | ||
- | PREREQ="" | + | PRIORITY=top |
- | prereqs() { echo " | + | |
- | case " | + | |
- | prereqs) prereqs; exit 0;; | + | |
- | esac | + | |
- | . / | + | |
- | FLAG_FILE="/ | + | exec 1>>/stretch_limiter.log 2>& |
+ | set -eux | ||
+ | |||
+ | echo " | ||
DEV="/ | DEV="/ | ||
PART=" | PART=" | ||
- | MAX_MB=__MAX_MB__ | + | FLAG_FILE="/etc/.stretch_done" |
- | LOGFILE="/boot/stretch_limiter.log" | + | MAX_MB=$MAX_MB |
- | log() { echo "[\$(date +%F\ %T)] \$1" >> " | + | |
- | [ -f " | + | if [ -f " |
+ | echo "Файл stretch_done найден. Выход." | ||
+ | | ||
+ | fi | ||
- | log "📉 Минимизация rootfs (resize2fs -M)..." | ||
- | resize2fs -M " | ||
- | |||
- | log "📐 Ограничиваем rootfs до \$MAX_MB МБ" | ||
START=\$(fdisk -l " | START=\$(fdisk -l " | ||
END=\$(fdisk -l " | END=\$(fdisk -l " | ||
SECTOR_SIZE=\$(blockdev --getss " | SECTOR_SIZE=\$(blockdev --getss " | ||
CURRENT_MB=\$(( (END - START + 1) * SECTOR_SIZE / 1024 / 1024 )) | CURRENT_MB=\$(( (END - START + 1) * SECTOR_SIZE / 1024 / 1024 )) | ||
+ | |||
+ | echo " | ||
if [ " | if [ " | ||
- | | + | |
- | else | + | |
- | | + | |
- | | + | |
- | sleep 1 | + | |
- | resize2fs " | + | |
- | log "✅ rootfs ограничен до \$MAX_MB МБ" | + | |
fi | fi | ||
+ | |||
+ | echo " | ||
+ | parted -s " | ||
+ | partprobe " | ||
+ | sleep 2 | ||
+ | resize2fs " | ||
touch " | touch " | ||
+ | echo "✅ Готово" | ||
EOF | EOF | ||
- | sed -i " | + | chmod +x "$TARGET_DIR$INITRD_SCRIPT" |
- | chmod +x "$MOUNT_DIR$INITRD_SCRIPT" | + | |
- | # === Монтируем окружение для | + | chroot "$TARGET_DIR" |
- | mount --bind /dev "$MOUNT_DIR/ | + | ln -sf /boot/initrd.img-$(uname |
- | mount --bind /sys " | + | |
- | mount --bind /proc "$MOUNT_DIR/proc" | + | |
- | # === Установка локали и initramfs === | ||
- | chroot " | ||
- | chroot " | ||
- | chroot " | ||
- | chroot " | ||
- | |||
- | # === Отмонтирование окружения === | ||
- | umount " | ||
- | umount " | ||
- | umount " | ||
- | |||
- | # === Обновление config.txt и initrd.img === | ||
- | sed -i '/ | ||
- | kver=$(chroot " | ||
- | ln -sf " | ||
- | echo " | ||
- | |||
- | umount " | ||
- | losetup -d " | ||
echo "✅ stretch_limited установлен в initramfs и образ. Будет выполнен при загрузке до монтирования rootfs." | echo "✅ stretch_limited установлен в initramfs и образ. Будет выполнен при загрузке до монтирования rootfs." | ||
</ | </ | ||
+ | ===== 2 ===== | ||
Проверка | Проверка | ||
< | < | ||
lsinitramfs / | lsinitramfs / | ||
+ | </ | ||
+ | <code bash> | ||
+ | lsinitramfs / | ||
+ | lsinitramfs / | ||
+ | </ | ||
+ | <code bash> | ||
+ | cat / | ||
+ | df -h / | ||
</ | </ |
projects/temp.1743613784.txt.gz · Последнее изменение: 2025/04/02 20:09 —