7.2. Проблемът при първоначално зареждане.

Пускането на компютър и стартирането на операционна система ни поставя пред интересна дилема. По дефиниция компютърът не знае как да направи нищо докато операционната система не бъде стартирана. Това включва и стартирането на програми от диска. Така че ако компютърът не може да изпълни програма от диска без операционна система, а програмата - операционна система е на диска, тогава как се стартира операционната система???

Този проблем е подобен на проблемите в книгата Приключенията на Барон Мюнхаузен. Един от героите, падайки в пропаст започва да изтегля сам себе си, и успява да се измъкне. В ранните дни на програмирането, терминът нишка на първоначално зареждане беше използван като наименование на механизма, който зарежда операционната система, а по-късно за по-кратко е наричан само ``първоначално зареждане(booting)''.

На x86 хардуер основната входно/изходна система (BIOS) е отговорна за зареждането на операционна система. За да прави това, BIOS-ът търси на хард диска Master Boot Record (MBR), който трябва да е локализиран на специфично място на диска. BIOS-ът има достатъчно познание, за да зареди и стартира MBR, и приема, че MBR може да изпълни по-нататъшните процеси необходими за зареждането на операционна система.

Ако Вие имате само една операционна система инсталирана на вашите дискове, стандартния MBR ще бъде удовлетворен. Този MBR търси първото възможно за зареждане парче(slice) на диска, и тогава изпълнява кода в това парче(slice), който е един вид подсказка за операционната система.

Ако имате инсталирани множество от операционни системи на Вашите дискове, тогава можете да инсталирате различен MBR, който може да покаже лист с различните операционни системи, и Ви разрешава да изберете тази, от която да заредите. FreeBSD се разпространява с един такъв MBR който може да бъде инсталиран. Някои от другите операционни системи също разпространяват алтернативни MBR-та.

Подсказката на нишката на първоначалното зареждане на FreeBSD система е разделена на три нива. Първото ниво е стартирано от MBR, който знае достатъчно, за да докара компютъра до специфично състояние и да стартира второто ниво. Второто ниво може да направи съвсем малко неща, преди да се стартира трето ниво. Третото ниво довършва задачата да зареди операционна система. Работата е оплетена в тези три нива защото компютърните стандарти ограничават размера на програмата, която може да бъде стартирана като дадено ниво. Променяйки задачите на тези три нива, FreeBSD осигурява нужната гъвкавост при първоначално зареждане.

Тогава ядрото (kernel) е стартирано и то започва да тества устройствата и да ги инициализира, подготвяйки ги за употреба. Веднъж след като зареждащият процес на kernel е финализиран, ядрото подава контрола на потребителския (user) процес init(8), който се уверява, че дисковете са в състояние на готовност. init(8) тогава се включва конфигурацията за ниво на потребителски ресурси, която зарежда файлова система, започва да използва мрежова карта, за да комуникира в мрежа, и най-важното - стартира всички процеси, които обикновено се изпълняват при стартирането на FeeBSD система.

Този и други документи можете да намерите в ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

За въпроси относно FreeBSD, прочетете документацията преди да попитате в <questions@FreeBSD.org>.
За въпроси относно този документ, e-mail <doc@FreeBSD.org>.