Как устанавливался Unix в 70-х–80-х годах?

Как устанавливался Unix в 70-х–80-х годах?

Ну, я был с компьютерами с конца 80-х (на самом деле мне было около 3 лет). Прошёл всю милю: Atari Xl-XE, MS-DOS, Windows 3.1, 95 и т. д. Потом начал использовать Linux из-за внешнего вида (да, я знаю,Compiz-Fusionбыла настоящей причиной изучить Linux) и теперь установлена ​​на всех моих машинах. У меня она даже есть в Windows 10.

Раньше я собирал машины с нуля, и всегда можно было загрузить «MS-DOS», это то, что я помню, и это заставило меня задуматься.

Как устанавливался Unix в 80-х или в конце 70-х (я тогда еще не жил)? Это было что-то тривиальное, типа загрузки большой дискеты, или же тут была задействована черная магия?

Бывает так, что я не могу найти никаких ссылок на это, а люди в моей стране просто не понимают, что такое свободное программное обеспечение.

РЕДАКТИРОВАТЬ:

Я пропустил важную часть и чувствую себя глупо, потому что не подумал об этом изначально.

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

Глупые ошибки уводят вас далеко, но вы наверняка учитесь чему-то большему.

решение1

Мой опыт установки Unix в 80-х был на PDP-11, и процесс установки на самом деле довольно интересный. Я на самом деле сделал это сегодня вечером (на эмуляторе), впервые за много лет...

Unix V7 для PDP-11 распространялся на ленте. Лента содержала несколько файлов, один за другим.

  • Первый файл на ленте был загрузчиком. Он состоял из двух частей. Первая часть была загрузочным блоком, и он знал ровно столько, чтобы прочитать вторую часть загрузчика с ленты в память, а затем передать ей управление. Код для этого был меньше 512 байт. Вторая часть была больше, в ней были урезанные «автономные драйверы» для нескольких различных типов дисков и лент, и он знал ровно столько о файловой системе Unix, чтобы иметь возможность находить файлы либо на ленте, либо в корневом каталоге файловой системы на жестком диске, загружать их и запускать. Полный размер загрузчика (общий размер обеих частей) составлял около 8 Кбайт.
  • Второй файл на ленте был автономной catпрограммой. Когда я говорю «автономная», я имею в виду, что она запускалась непосредственно на голом железе (без какой-либо операционной системы вообще); она была написана с теми же автономными драйверами устройств и драйверами файловой системы, что и загрузчик. Вы могли загрузить и запустить ее с помощью загрузчика. Когда она запускалась, вы говорили ей, с какого устройства вы хотите прочитать файл и какой файл читать. Она считывала его, распечатывала и затем завершала работу. Это все, что она делала. Это было ограниченно полезно.
  • Третий файл на ленте был просто текстовым файлом, в котором был список файлов, которые были на ленте. Почти никто никогда даже не смотрел на это. Если вы использовали одну из этих дистрибьюторских лент, вы уже почти знали, что на ней было...
  • Четвертый файл на ленте был автономной mkfsпрограммой. Она была создана с использованием той же библиотеки автономных драйверов устройств и драйверов файловой системы, что и другие автономные программы, и она также работала на голом железе, без операционной системы. Вы могли загрузить и запустить ее с помощью загрузчика, он спрашивал вас, на каком диске (и разделе) вы хотите создать файловую систему, и насколько большой должна быть файловая система, а затем он записывал начальную структуру файловой системы на устройстве и разделе, которые вы ему указали. Затем он выходил.
  • Пятый файл на ленте был отдельной restorпрограммой (да, как и creat()системный вызов, restorбыл написан без «e»…). Вы могли загрузить и запустить его с помощью загрузчика. Опять же, он работал на голом железе, без операционной системы. Он запрашивал файл ленты, содержащий дамп файловой системы, и раздел диска, на который его восстанавливали. И затем он это делал. Затем он выходил.
  • Шестой файл на ленте представлял собой всего лишь дамп корневой файловой системы.
  • Седьмой файл на ленте представлял собой всего лишь дамп файловой системы /usr.

И это все — вот что вы получаете.

Итак, если у вас была эта лента, вам нужно было как-то запустить процесс. У некоторых PDP-11 были загрузочные ПЗУ, которые знали, как загрузить первый блок с устройства (например, ленты или диска) и перейти на него. (А для этой ленты первый блок — это менее 512 байт исполняемого кода, который знает, как загрузить остальную часть загрузчика.) Однако у первого PDP-11, который я использовал, не было загрузочного ПЗУ. Каждый раз, когда мы загружали машину, нам приходилось вводить загрузочный код, чтобы загрузить первый блок с устройства и перейти на него. Вручную. В двоичном коде... К счастью, он был довольно коротким (например, код для считывания первого блока с ленточного накопителя TU16 или TE16 и перехода на него составлял всего 6 слов, или 12 байт), и у нас был загрузочный код, записанный на листке бумаги, приклеенном к машине. Само собой разумеется, мы сделали все возможное, чтобы избежать необходимости перезагрузки машины любой ценой...

Итак, учитывая все это... общий процесс установки системы был следующим:

  1. Используйте загрузочное ПЗУ (или введите загрузочный код вручную...), чтобы загрузить в память так называемый «загрузчик нулевого блока», который затем используется для загрузки остальной части загрузчика.
  2. Используйте загрузчик для загрузки автономной mkfsпрограммы (четвертый файл на ленте), чтобы заложить структуру корневой файловой системы на раздел жесткого диска.
  3. Используйте загрузчик для загрузки автономной restorпрограммы (пятый файл на ленте), чтобы восстановить дамп корневой файловой системы (шестой файл на ленте) на жестком диске.
  4. Используйте загрузчик для загрузки ядра Unix из файла в корневой файловой системе на жестком диске (который вы только что восстановили с ленты) и передайте ему управление. На этом этапе Unix уже запущен.
  5. Используйте обычные команды Unix mkfsи restorсоздайте файловую систему /usr на другом разделе жесткого диска и восстановите дамп файловой системы /usr на только что подготовленном разделе.

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

Подобные процедуры использовались для установки многих дистрибутивов Unix в течение длительного времени, в 1970-х и 1980-х годах. Berkeley Unix (4.2BSD и более поздние версии) предоставлял ленту дистрибутива с очень похожей структурой и очень похожей процедурой установки.

Если вы хотите увидеть инструкции Чарльза Хейли и Денниса Ритчи по установке V7 Unix на PDP-11, вы можете найти ихздесь. Я только что следовал этим инструкциям сегодня вечером, и они отлично работают. ;-)

решение2

На моей первой работе в 1989 году мы устанавливали Unix (Interactive, в то время принадлежавшую Kodak) на ПК с процессором Intel 386 с помощью 3,5-дюймовых (около 9 см) дискет.

решение3

Я думаю, вы спрашиваете, какпервоначальная установкаUnix. Многие компьютеры в ту эпоху были разработаны для работы Unix и поставлялись с предустановленной операционной системой на жестком диске или на дискетах. Установка была всего лишь вопросом предоставления диска с соответствующим содержимым.

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

Вот пример. AT&T 3B1, он же "Unix PC", имел ПЗУ, содержащее программу начальной загрузки по адресам 800000-BFFFFF. Когда система сбрасывается, ее процессор Motoroloa 68010 загружает указатель стека с 000000-2, загружает счетчик программ с 000004-6 и переходит. Во время сброса оборудование принудительно устанавливает бит адреса 23 высоким, эффективно отображая ПЗУ в основную память, поэтому система действительно запускает программу в ПЗУ. Эта программа в ПЗУ инициализирует различные аппаратные компоненты, запускает некоторую диагностику и, что особенно важно, загружает операционную систему с дискеты или диска, загружая и запуская загрузочный блок. Код в загрузочном блоке загружал ядро ​​и начинал выполняться init, так же, как это делает современная система.

(Более подробная информация в руководствах, см. зеркало Филипа Пембертона)Эмулятор AT&T 3B1)

Теоретически вы могли бы использовать эти знания для установки чего-то, отличного от Unix, на такую ​​машину. Но не всегда существовал уровень абстракции оборудования, как BIOS на ПК, поэтому загружаемая программа должна была быть более тесно связана с оборудованием.

решение4

На ПК (IIRC) установка Interactive Unix производилась с загрузочной дискеты, а затем "реальная" установка производилась с ленты. Обратите внимание, что ваша карта SCSI должна была поддерживаться Interactive.

На рабочих станциях HP вы загрузились с ленты/DAT и установили.

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