User Tools

Site Tools


doc_ua:bootprocess

Процес завантаження 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. Меню завантажувача

На екран виводиться меню завантажувача. Встановлюємо параметри завантаження (докладний їх опис можна побачити тут).

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)
doc_ua/bootprocess.txt · Last modified: 2006/06/26 12:06 (external edit)