1

Я спросил это в Unix и там предложил спросить здесь.

Я отвечал на вопрос в группе Linux на Facebook, где кто-то спросил, можно ли установить 32-битную ОС на 64-битный ПК. Мой ответ был:

Абсолютно возможно установить 32-битную ОС на 64-битный ПК. Но невозможно установить 64-битную ОС на 32-битный ПК.

Ну, тогда кто-то ответил на мой комментарий:

Это не невозможно, но делать это неправильно.

Итак ... действительно ли возможно установить 64-битную ОС на 32-битный ПК?

5 ответов5

8

Ответ действительно очень прост.

Технически, «32-битный» ПК, как вы его называете, был бы ПК, процессор которого поддерживает 32-битные вычисления, но не поддерживает 64-битные вычисления.

Например, ПК с процессором Intel, который поддерживает IA-32, но не поддерживает EM64T или IA-64, будет «32-битным» ПК. На самом деле вы не сможете установить 64-битную ОС на такой ПК.

5

Это не так и не удастся получить доступ к установщику - по крайней мере, из небольшого образца операционных систем, которые я пробовал. Они были сделаны в virtualbox для удобства скриншотов.

Я попробовал это с несколькими распространенными 64-битными ОС - Windows 10 (у меня была сборка 1511 без дела)

Загрузка в существующую установку выдает очень похожий сбой, запрашивая процессор с поддержкой PAE.

И Windows 7

Может быть, это не просто Windows.

Давайте попробуем Ubuntu 16.04 livecd

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

1

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

Если на вашем компьютере установлена 32-разрядная ОС, а 64-разрядная ОС работает нормально, то вам следует проверить фактический компьютер, потому что иногда 64-разрядные компьютеры поставляются с 32-разрядными ОС.

0

32-битный процессор не может выполнять 64-битный код "по замыслу". Следовательно, он не может загрузить 64-битную ОС, которая по определению содержит 64-битное ядро.

Установщики ОС хорошо знают об этом факте, поэтому в первую очередь отказываются устанавливать 64-битную ОС на 32-битное оборудование.

-1

Возможно, что человек, который ответил на ваш оригинальный комментарий, столкнулся с 64-битной ОС (вероятно, подразумевающей ту, которая использует либо память, превышающую адресуемую вне 32-битного защищенного режима, либо использует 64-битные регистры), которая устанавливает и загружает процессоры ограничен 32-битной памятью или использует более широкие аппаратные регистры. В последнем разделе приведен реальный пример установки 64-битной ОС на 32-битное оборудование. В промежуточных разделах объясняется, почему такую ОС можно не только установить, но и использовать (теоретически).

Технические детали

Есть две основные вещи, которые можно ожидать в 64-битной ОС. Первая - это адресация памяти за пределами 4 ГБ. Поскольку основанные на BIOS 64-разрядные машины загружаются в 16-разрядном режиме (реальный AKA), можно написать операционную систему, которая переходит в режим длинной 64-разрядной памяти для определенных операций (см., Например, https://). www.codeproject.com/articles/45788/the-real-protected-long-mode-assembly-tutorial-, чтобы узнать, как выйти из 64-битного режима). Или, в однозадачной среде, перейдите в длинный режим для определенных программ. Для 32-разрядных программ DOS было обычным входить и выходить из 32-разрядного режима через расширитель DOS для запуска. Научно-вычислительная платформа может также сделать нечто подобное, чтобы получить преимущества в производительности от запуска 32-битного кода (да! 32-битный код может быть быстрее, чем 64-битный код!) кроме случаев, когда это необходимо.

Второе, что можно ожидать в 64-битной ОС, - это 64-битные регистры. Но можно легко оставаться в режиме низкого бита и при необходимости переключаться в режим более высокого бита. Можно иметь одну программу, которая содержит смесь 16-, 32- и 64-битных регистров. Для переключения размеров регистров используется префикс переопределения размера операнда (префиксы кода операции 0x66 и 0x67), хотя об этой последней детали обычно заботится компилятор, и она невидима для большинства программистов.

Теоретический пример

Можно написать операционную систему, которая использует только 64-битные в некоторых частях ОС. Такая ОС легко находится в сфере воображения. 32-разрядная ОС, портируемая на 64-разрядные, может начинаться с того, что только некоторые части ОС будут сделаны 64-разрядными (что делает ее 64-разрядной ОС). Предположим, аудиодрайвер первым портирован; такая ОС может нормально работать, пока не будет воспроизведен аудиофайл. Я предполагаю, что это происходит на сцене любителей ОС с некоторой регулярностью, поскольку кто-то хочет немного поэкспериментировать с 64-битными версиями или хочет повысить скорость выполнения определенного набора операций в ОС.

Реальный пример установки 64-битной ОС на 32-битную машину

Реальным примером сочетания 64-битного и 32-битного кода является MacOS (версии ~ 10.5-10.7). На 64-разрядном процессоре Intel Mac эти версии MacOS могут загружаться с ядром в 32-разрядном режиме и запускать 64-разрядные приложения с кодом 64-разрядной операционной системы. На 32-разрядной машине компьютер все еще загружается. Однако вместо сбоя компьютера при попытке запустить только 64-битные приложения MacOS просто отказывается запускать приложение.

Обратите внимание, что на 32-разрядных и 64-разрядных компьютерах Mac установлена одна и та же дисковая ОС. Вы можете установить MacOS на 32-битный Mac, вынуть диск и поместить его в 64-битный Mac и загрузить 64-битное ядро. И, конечно же, сцена Hackintosh доказывает, что вы можете установить MacOS на обычную 32-битную машину.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .