====== Процес завантаження Frenzy ====== ===== Етап kernel ===== Завантаження починається з того, що BIOS передає керування завантажувачу cdboot, що знаходиться в завантажувальній області компакт-диску. Він у свою чергу запускає BTX loader (/boot/loader). BTX loader читає файли конфігурації, завантажує ядро і необхідні модулі а також відображає меню завантаження (з логотипом). Потім іде завантаження ядра і визначення їм пристроїв. В конфігурації loader-а вказано, що кореневу файлову систему слід монтувати із стисненого образу /boot/frenzyroot.gz. Після того, як ядро було завантажено, із цього образу монтується коренева файлова система і керування передається процесу /sbin/init, запущеному звідти. ===== Етап frenzyroot ===== Образ frenzyroot містить кілька базових утиліт: ''cp sh test echo init mdconfig mount mount_cd9660 mount_nullfs umount sleep'' Також в теці /etc знаходяться деякі необхідні файли, в тому числі спеціально створені для frenzy rc-скрипти. Отже, /sbin/init запускає /etc/rc. Це нестандартний скрипт, який виконує всю роботу з початкового налаштування і завантаження LiveCD. ==== 1. Пошук завантажувального пристрою ==== В першу чергу ми повинні знайти і змонтувати той диск, з якого завантажується система. Скрипт по черзі шукає файл frenzy.uzip на всіх CD-ROM приводах і USB Flash дисках. Якщо такий файл був знайдений, диск з ним монтується до теки /Frenzy/boot. ==== 2. Монтування стисненої файлової системи ==== Файл frenzy.uzip містить стиснену файлову систему, яка буде використовуватись ц якості кореневої. Проте оскільки її неможна змонтувати поверх існуючої кореневої FS, ми вчинимо наступним чином. Файлова система із frenzy.uzip монтується до теки /Frenzy/fs, після чого за допомогою mount_nullfs поверх існуючої кореневої файлової системи ми монтуємо із стисненого образу теки ''bin, boot, lib, libexec, sbin, usr''. ==== 3. Встановлення локалі ==== Довантажуємо симпатичний шрифт і виставляємо screenmap. Необхідно для того, щоб завантажувальне меню було на українській. ==== 4. Визначення розміру для RAM-диску ==== Визначаємо, який об'єм пам'яті є в системі. Виходячи з цього, встановлюємо розмір RAM-диска за умовчанням (10, 15, 30, 45 мегабайт). ==== 5. Меню завантажувача ==== На екран виводиться меню завантажувача. Встановлюємо параметри завантаження (докладний їх опис можна побачити [[doc_ua:boot|тут]]). ==== 6. Створення RAM-диску ==== Створюємо RAM-диск вказаного розміру і монтуємо його до теки /Frenzy/ramdisk. На RAM-диску будуть зберігатися теки ''etc, root, var, mnt''. Створюємо ці теки, копіюємо до них файли із відповідних тек до /Frenzy/fs і за допомогою mount_nullfs монтуємо ці теки з RAM-диску поверх відповідних тек кореневої теки. Створюємо в /etc/frenzy.boot налаштування, виставлені у меню завантажувача. ==== 7. Завантаження виправлень ==== Переглядаємо теку /Frenzy/boot/frenzy/conf. Якщо в ній міститься скрипт з розширенням .patch, виконуємо їх. Корисно у випадку, якщо ви додаєте певні виправлення для конфігураційних файлів, але не бажаєте перезбирати стиснений образ. ==== 8. Режим завантаження toram (за вибором) ==== Якщо у завантажувачі був вибраний параметр ''toram'', то розпочнемо завантаження до пам'яті: * Створюємо RAM-диск достатнього об'єму (визначається динамічно в залежності від розміру файлу frenzy.uzip) і монтуємо його до /Frenzy/mfs * Копіюємо туди /Frenzy/boot/frenzy/frenzy.uzip, після чого перемонтовуємо /Frenzy/fs вже з цього файлу. * Перемонтовуємо файлові системи з нової /Frenzy/fs, як описано в пункті 2. Після завантаження в пам'ять CD-ROM звільнюється і висовується лоток приводу. ==== 9. Пошук розділів на жорсткому диску ==== Шукаємо розділи на жорсткому диску. За умовчанням всі розділи мотуються в режимі "тільки для читання". В меню завантаження також доступні такі опції: * **hdrw** - монтувати в режимі запису (тільки для FAT/UFS/EXT2FS) * **nohdmnt** - виконується пошук розділів, створення точок монтування і оновлення fstab, але самі розділи не монтуються * **nohdd** - пошук і монтування розділів не проводиться. ==== 10. Режим завантаження fromhdd (за вибором) ==== Якщо в завантажувачі був вибраний параметр ''fromhdd'', то починаємо завантаження з образу на жорсткому диску: * На кожному змонтованому розділі шукаємо файл frenzy/frenzy.uzip * Якщо файл було знайдено, то проводиться операція, описана в пункті 8 (перемонтування стисненого образу і тек) Після завантаження образу з жорсткого диску CD-ROM звільнюється і висовується лоток приводу. ==== 11. Різне ==== * Створюється файл /tmp/.frenzy (присутність цього файлу обробляється скриптами як ознак завантаження з CD/Flash) * Встановлюється мова системи за допомогою утиліти /usr/local/bin/frlang (мова вибирається при завантаженні) * Проводиться відновлення резервних налаштувань з дискети/жорсткого диску/USB Flash/компакт-диску (тека frenzy/backup). Цей крок можна відмітити за допомогою опції **nobackup**. І, нарешті, ми завантажуємо системний /etc/rc. ===== Етап base ===== Завантаження системних rc-скриптів майже нічим не відрізняється від стандартної FreeBSD. Різниця наступна: 1. Частина rc-скриптів підкорегована таким чином, щоб вони не запускались при присутності файлу ''/tmp/.frenzy''. Ці скрипти для монтування розділів із fstab і перевірки їх fsck (вони не потрібні при завантаженні з livecd, оскільки цю роботу виконують інші скрипти). 2. Після завантаження усіх rc-скриптів запускається скрипт ''/etc/rc.d/FRENZY'', який виконує наступні операції: * Запуск утиліти визначення миші (''/usr/local/bin/mouse-detect'') * Запуск утиліти скидання інформації про систему (якщо при запуску була вибрана опція **hwinfo**) * Включення автологіну на першій консолі (завжди увімкнено, якщо завантажуватись з CD/Flash) * Запуск графічної оболонки (якщо при завантаженні була вказана опція **gui**)