Как компьютеры узнают, какую операционную систему загружать?

Как компьютеры узнают, какую операционную систему загружать?

Когда я включаю компьютер, какое программное обеспечение выбирает, какую операционную систему загрузить, и как оно принимает решение, когда предлагается несколько вариантов?

А конкретно, что если у меня есть компьютер с несколькими операционными системами, находящимися на одном диске? А что если у меня есть внешние диски — он ищет каждый раздел на всех устройствах хранения для форматов, которые он распознает?

Насколько я понимаю, у каждого диска есть свой собственный загрузочный сектор, содержащий информацию о том, какой раздел компьютера должен загружаться. Но что, если у меня подключено несколько дисков, где у каждого диска свой загрузочный сектор — какой из них он загружает?

При попытке исследовать эту тему я столкнулся с некоторой путаницей, поскольку не все технологии ведут себя одинаково (например, некоторые говорят, что флаг загрузки важен, а другие говорят, что он игнорируется). Было бы очень полезно получить некоторую ясность в том, как работают разные системы.

решение1

К сожалению, с развитием компьютеров это стало сложнее.

Первоначально (т.е. в первых ПК) существовал фиксированный порядок (который зависел от кабелей).

Почти все компьютеры по-прежнему имеют порядок загрузки по умолчанию, который может контролироваться/на который может влиять BIOS. Более новые компьютеры дополняют эту функциональность UEFI, который в некотором роде заменяет BIOS.

Для загрузки BIOS есть предпочтительный порядок. BIOS ищет на каждом диске загрузочные сектора и пытается загрузить их, проходя по списку опций, пока один из них не загрузится.

Для UEFI на диске есть файловая система (небольшой толстый раздел, обозначенный как UEFI, который содержит загрузчик первой стадии и инструкции. В некоторых случаях это дополняется инструкциями, запрограммированными в UEFI (т. е. настройками, хранящимися в nvram, аналогично BIOS)

После того, как загрузчик/раздел UEFI найден, программа берет на себя процесс загрузки, и это может предоставить возможность загрузки в различных режимах или ОС.

решение2

Как уже говорили другие, это стало немного сложнее, но я понимаю это так:

Когда компьютер включается в первый раз, то дело вовсе не в жестких дисках. В чипе на материнской плате есть специальная программа, которая загружается первой, а процессор начинает ее выполнять. Это называется BIOS или UEFI (UEFI на самом деле является преемником BIOS).

Этот код выполняет некоторую работу по инициализации различных частей оборудования, а затем начинает искать следующее, чему передать управление. Что именно это будет, зависит от многих вещей. Существует множество возможных вариантов — ваши внутренние жесткие диски, ваши внешние диски, сетевые адаптеры, RAID-контроллеры, дополнительные карты и т. д.

BIOS/UEFI также имеет настройки, определяющие порядок проверки этих опций. Он пройдет по каждой из них в заданном порядке и спросит: «Вы можете продолжить загрузку?» И устройство скажет «ура» или «нет». Первое, сказавшее «ура», продолжит работу. Затем это устройство передает BIOS фрагмент кода, который загружается в память, и ЦП продолжает выполнение с ним.

В конкретном случае жесткого диска сам диск на самом деле не знает, может ли он загрузиться или нет. Поэтому BIOS считывает самый первый сектор (классически 512 байт) диска и проверяет наличие нескольких специальных байтов в определенном месте сектора. Если они содержат значение 55 AA (в шестнадцатеричном виде), то этот сектор выполняется как код. В противном случае он переходит к проверке следующего диска.

Итак, 512 байт — это не так уж много места, но этого достаточно, чтобы сделать несколько простых вещей. Например, классический DOS помещал туда немного кода, который находил раздел, помеченный как «загрузочный», а затем загружал первый секторчтораздел и затем выполнил его. И этот следующий сектор содержал достаточно кода, чтобы загрузить еще несколько секторов, а затем начать анализировать файловую систему и загружать файлы из нее, и так далее и тому подобное.

Но на самом деле, нет ничего, что говорило бы, что этот код должен делать. Он также мог бы загрузить не активный раздел, а некоторые другие сектора на диске, где находится больше кода. И этот код затем мог бы дать вам меню, которое позволяет выбирать среди нескольких загрузочных разделов или ОС или чего-то еще.

В любом случае, код в первом секторе диска называется "загрузчик". Существуют разные загрузчики. В наши дни мир Linux в значительной степени опирается на grub, у Windows есть свои особенности и т. д. Загрузчик действительно приходитдооперационной системы, но ему необходимо знать, как загрузить операционную систему в память и передать ей управление.

Это делает ситуацию более ясной?

решение3

При запуске ваша материнская плата будет питать все (или большинство) подключенных к ней электронных компонентов. Одним из них является ваш жесткий диск или SSD, называемый системным диском, потому что на нем находится основная операционная система. Если вы не настроили BIOS или (U)EFI на загрузку с другого внешнего диска, будь то USB, FireWire или сеть, то этот диск будет использоваться первым.

На этом диске есть раздел главной загрузочной записи (для упрощения), который обычно доступен только для чтения (хотя его можно редактировать с помощью набора команд bcdedit.exe), и он просматривает все доступные ОС на диске. Одна из них была установлена ​​по умолчанию, либо вами, либо сама по себе при установке, либо на заводе, либо при переустановке/обновлении вашей основной ОС.

Windows не позволяет вам загружаться с USB-накопителяжесткий диск или SSD. Вы можете загрузиться с USB-накопителя.ключ, который размещает определенный USB-контроллер, но загрузка с USB-накопителя, подключенного через кабель, не допускается Windows. Необходимые драйверы не загружаются до тех пор, пока не будут загружены первые службы и процессы Windows (smss.exe и crss.exe), что означает, что сама Windows уже запущена.

решение4

В компьютер встроено программное обеспечение, с помощью которого можно указать, какой диск должен быть первым, вторым (если первый недоступен), третьим и т. д.

Раньше это был "биос", хранящийся в EEPROM (питаемый от батареи). Но сейчас он стал намного сложнее, даже ОС на базе Linux встроена в оборудование (что может сделать ваш компьютер уязвимым для внешних атак).

Каждый диск имеет таблицу разделов, не обязательно загрузочный сектор.

Связанный контент