Slax имеет возможность сохранять настройки сделанные пользователем на диск. Для этого служит параметр загрузки "changes=". В таком случае, выяснилось, что при интенсивном использовании, может случится что система перестанет загружатся и станет неработоспособной. Здесь я приведу свой (возможно не самый удачный) вариант решения проблемы.
Исходные данные таковы:
Есть раздел с NTFS. Предполагается что на этот раздел должны сохранятся настройки slax. Настройки будут сохранятся в одном файле - slax.dat
Мой вариант решения проблемы это каждый раз при загрузке проверять slax.dat на ошибки и автоматически их исправлять при помощи утилиты fsck.ext2
Приступим:
1) Загружаемся в Slax, открываем консоль :)
2) Подготовим файл в котором будут хранится настройки:
# dd if=/dev/zero of=/mnt/sda1/slax.dat bs=1M count=512
# /sbin/mkfs.ext2 /mnt/sda1/slax.dat
где:
/mnt/sda1/slax.dat - место хранения файла (в моём случае он хранится на разделе NTFS)
count=512 - размер файла в мб.
3) Находим файл boot/initrd.gz на CD-ROM, копируем его в /root
4) Распаковываем
# gzip -d initrd.gz
5) Монтируем:
# mkdir fs
# mount -t ext2 initrd fs -o loop
6) Качаем пакет e2fsprogs и его зависимости. Я нашёл его в репозиториях Debian (packages.debian.org):
# wget http://ftp.de.debian.org/debian/pool/main/e/e2fsprogs/e2fsprogs_1.39+1.40-WIP-2006.11.14+dfsg-2etch1_i386.deb
# wget http://ftp.de.debian.org/debian/pool/main/e/e2fsprogs/e2fslibs_1.39+1.40-WIP-2006.11.14+dfsg-2etch1_i386.deb
# wget http://ftp.de.debian.org/debian/pool/main/e/e2fsprogs/libcomerr2_1.39+1.40-WIP-2006.11.14+dfsg-2etch1_i386.deb
Далее необходимо извлечь нужные нам файлы из .deb пакетов и положить их в initrd. Для этого нам потребуется утилита dpkg, которая существует в составе модуля "debian package tools" для Slax. Данный модуль можно скачать с сайта slax.org.
7) Собственно извлекаем:
# mkdir e2fsprogs
# dpkg --extract "e2fsprogs_1.39+1.40-WIP-2006.11.14+dfsg-2etch1_i386.deb" e2fsprogs
# cp e2fsprogs/sbin/fsck.ext2 fs/sbin
# cp e2fsprogs/sbin/e2fsck fs/sbin
# mkdir e2fslibs
# dpkg --extract "e2fslibs_1.39+1.40-WIP-2006.11.14+dfsg-2etch1_i386.deb" e2fslibs
# cp e2fslibs/lib/* fs/lib
# mkdir libcomerr2
# dpkg --extract "libcomerr2_1.39+1.40-WIP-2006.11.14+dfsg-2etch1_i386.deb" libcomerr2
# cp libcomerr2/lib/* fs/lib
8) Редактируем файл fs/linuxrc: до строки `mount_device "$CHANGESMNT" $MEMORY` прописываем:
if [ "$(basename "$CHANGESMNT" .dat)" != "$CHANGESMNT" ]; then
/sbin/fsck.ext2 -y "$CHANGESMNT"
fi
9) Заключительные шаги: Отмонтируем наш initrd и сожмём обратно программой gzip
# umount fs
# gzip initrd
В итоге, оригинальный initrd.gz надо будет заменить полученным нами. Делается это путём перепрожига диска со Slax обновлённым initrd.gz
При дальнейшей загрузке Slax не забываем указывать параметр "changes=/slax.dat"