projects:temp
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| projects:temp [2025/04/02 20:32] – | 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 найден. Выход." | |
| - | log "📉 Минимизация rootfs (resize2fs -M)..." | + | |
| - | resize2fs -M " | + | fi |
| - | 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 ===== | ||
| Проверка | Проверка | ||
| < | < | ||
| Строка 168: | Строка 137: | ||
| lsinitramfs / | lsinitramfs / | ||
| lsinitramfs / | lsinitramfs / | ||
| + | </ | ||
| + | <code bash> | ||
| + | cat / | ||
| + | df -h / | ||
| </ | </ | ||
projects/temp.1743615161.txt.gz · Последнее изменение: —
