Завантаження починається з того, що BIOS передає керування завантажувачу cdboot, що знаходиться в завантажувальній області компакт-диску. Він у свою чергу запускає BTX loader (/boot/loader). BTX loader читає файли конфігурації, завантажує ядро і необхідні модулі а також відображає меню завантаження (з логотипом). Потім іде завантаження ядра і визначення їм пристроїв.
В конфігурації loader-а вказано, що кореневу файлову систему слід монтувати із стисненого образу /boot/frenzyroot.gz. Після того, як ядро було завантажено, із цього образу монтується коренева файлова система і керування передається процесу /sbin/init, запущеному звідти.
Образ frenzyroot містить кілька базових утиліт:
cp sh test echo init mdconfig mount mount_cd9660 mount_nullfs umount sleep
Також в теці /etc знаходяться деякі необхідні файли, в тому числі спеціально створені для frenzy rc-скрипти.
Отже, /sbin/init запускає /etc/rc. Це нестандартний скрипт, який виконує всю роботу з початкового налаштування і завантаження LiveCD.
В першу чергу ми повинні знайти і змонтувати той диск, з якого завантажується система. Скрипт по черзі шукає файл frenzy.uzip на всіх CD-ROM приводах і USB Flash дисках. Якщо такий файл був знайдений, диск з ним монтується до теки /Frenzy/boot.
Файл frenzy.uzip містить стиснену файлову систему, яка буде використовуватись ц якості кореневої. Проте оскільки її неможна змонтувати поверх існуючої кореневої FS, ми вчинимо наступним чином. Файлова система із frenzy.uzip монтується до теки /Frenzy/fs, після чого за допомогою mount_nullfs поверх існуючої кореневої файлової системи ми монтуємо із стисненого образу теки bin, boot, lib, libexec, sbin, usr
.
Довантажуємо симпатичний шрифт і виставляємо screenmap. Необхідно для того, щоб завантажувальне меню було на українській.
Визначаємо, який об'єм пам'яті є в системі. Виходячи з цього, встановлюємо розмір RAM-диска за умовчанням (10, 15, 30, 45 мегабайт).
На екран виводиться меню завантажувача. Встановлюємо параметри завантаження (докладний їх опис можна побачити тут).
Створюємо RAM-диск вказаного розміру і монтуємо його до теки /Frenzy/ramdisk. На RAM-диску будуть зберігатися теки etc, root, var, mnt
. Створюємо ці теки, копіюємо до них файли із відповідних тек до /Frenzy/fs і за допомогою mount_nullfs монтуємо ці теки з RAM-диску поверх відповідних тек кореневої теки. Створюємо в /etc/frenzy.boot налаштування, виставлені у меню завантажувача.
Переглядаємо теку /Frenzy/boot/frenzy/conf. Якщо в ній міститься скрипт з розширенням .patch, виконуємо їх. Корисно у випадку, якщо ви додаєте певні виправлення для конфігураційних файлів, але не бажаєте перезбирати стиснений образ.
Якщо у завантажувачі був вибраний параметр toram
, то розпочнемо завантаження до пам'яті:
Після завантаження в пам'ять CD-ROM звільнюється і висовується лоток приводу.
Шукаємо розділи на жорсткому диску. За умовчанням всі розділи мотуються в режимі “тільки для читання”. В меню завантаження також доступні такі опції:
Якщо в завантажувачі був вибраний параметр fromhdd
, то починаємо завантаження з образу на жорсткому диску:
Після завантаження образу з жорсткого диску CD-ROM звільнюється і висовується лоток приводу.
І, нарешті, ми завантажуємо системний /etc/rc.
Завантаження системних rc-скриптів майже нічим не відрізняється від стандартної FreeBSD. Різниця наступна:
1. Частина rc-скриптів підкорегована таким чином, щоб вони не запускались при присутності файлу /tmp/.frenzy
. Ці скрипти для монтування розділів із fstab і перевірки їх fsck (вони не потрібні при завантаженні з livecd, оскільки цю роботу виконують інші скрипти).
2. Після завантаження усіх rc-скриптів запускається скрипт /etc/rc.d/FRENZY
, який виконує наступні операції:
/usr/local/bin/mouse-detect
)