Как можно загрузиться с образа squashfs?

У меня есть два вопроса. 

Во-первых, я собрал собственный iso-образ, используя эту инструкцию (ссылка на статью). Все прошло удачно, но у меня возникли две проблемы. Прежде всего, загрузка этого огромного initrd занимает очень много времени и вызывает усталость. Как можно ускорить этот процесс? Во-вторых, я хотел бы узнать, как взрослые дистрибутивы, такие как Arch Linux или Debian, упаковывают корневую файловую систему в squashfs-образ и как они загружаются с него. Я не нашел надежных инструкций по созданию своего iso-образа со squashfs. Может быть, у кого-то есть идеи или полезные ссылки?
  • 16 февраля 2024 г. 8:18
Ответы на вопрос 2
Чтобы ускорить процесс загрузки initrd, вы можете попробовать следующие варианты:

1. Проверьте, нет ли в вашем initrd избыточных или ненужных компонентов. Иногда разработчики включают в него больше, чем необходимо. Вы можете использовать инструменты, такие как initramfs-tools или dracut (в зависимости от вашего дистрибутива), чтобы настроить содержимое initrd и убрать из него ненужные файлы.
2. Включите только необходимые модули и драйверы в initrd. Если ваше устройство не требует определенных модулей, их можно исключить из initrd. Это может сэкономить время загрузки.
3. Если ваш initrd содержит большой объем данных, попробуйте сжать его алгоритмом сжатия с наилучшим соотношением, таким как gzip или xz. Это может уменьшить его размер и ускорить загрузку.

Что касается упаковки корневой файловой системы в squashfs и загрузки с нее, вот некоторые инструкции:

1. Установите squashfs-tools на своей системе:
```
sudo apt-get install squashfs-tools (для Debian / Ubuntu)
sudo pacman -S squashfs-tools (для Arch Linux)
```

2. Создайте пустой поперечносвязанный файл в вашей системе:
```
truncate -s 1G rootfs.squashfs
```

3. Создайте временную директорию и смонтируйте свою корневую файловую систему в нее:
```
mkdir temp
sudo mount /dev/[device] temp
```
Замените `[device]` на раздел, содержащий вашу корневую файловую систему.

4. Создайте squashfs-образ из вашей корневой файловой системы:
```
sudo mksquashfs temp rootfs.squashfs
```

5. Размонтируйте временную директорию:
```
sudo umount temp
rmdir temp
```

Теперь у вас есть squashfs-образ вашей корневой файловой системы. Его можно загрузить при помощи bootloader или initrd, как это делается в вашем дистрибутиве.
Теоретически, да и практически - делаете образ squashfs, делаете маленький образ initrd. 
Загружаетесь с initrd в котором делаете remount рута на образ squashfs.

Почитать можно например здесь - https://magazine.odroid.com/article/using-squashfs...
Похожие вопросы