Что нам стоит юникс построить
May. 5th, 2025 10:58 pmЕсли уж мечтать, то по крупному. Не взяться ли нам запустить юникс на БЭСМ-6? На виртуальной машине, конечно, то есть на SIMH. Затея была бы масштабная, но тем и интересная. Что для этого нужно с практической точки зрения?
1. Сделать ассемблер, выдающий объектный файл в формате a.out. У нас есть аналогичный ассемблер для Эльбруса-Б - фактически надо его упростить до системы команд БЭСМ-6.
2. Сделать линкер, связывающий объектные файлы и библиотеки в формате a.out. Аналогично, переделываем линкер от Эльбруса-Б.
3. Написать на ассемблере начальный старт машины, инициализацию регистров, выдачу на консоль, обработку прерываний. Отладить на SIMH.
4. Сделать компилятор Си для БЭСМ-6. Это отдельная большая тема. Компилятор должен уметь обработать исходники ядра. Тренироваться можно на исходниках ядра из проекта v7x86.
5. Доработать ядро с учётом особенностей БЭСМ-6. Словная адресация штука коварная.
6. Написать юниксные драйверы для бэсмовской периферии. Оживить таймер, консольный терминал, барабаны, диски.
7. Переписать libc и libm для БЭСМ-6.
8. Перенести основные системные бинарники /etc/init, /bin/sh, /etc/getty, /etc/mount, /etc/fsck и прочие.
9. Сделать утилиту создания образа файловой системы БЭСМ-6 из Линукса. За основу взять fsutil и проекта bkunix.
10. Перенести остальные утилиты из /bin и /usr/bin.
Для переноса на БЭСМ-6 лучше всего подойдёт Unix v7. Размер его ядра на i486 около 50 килобайт. На БЭСМ увеличится до 100 килобайт - вполне поместится в 192 килобайта адресного пространства БЭСМ. Есть два проекта Unix v7, откуда можно заимствовать исходники: v7x86 и 32V.
RetroBSD не кандидат, к сожалению. Там размер около 170 килобайт на mips32, да ещё распухнет немного, да ещё данных надо хотя бы килобайт 60 - никак не лезет.
Фантазий громадьё, но мечты имеют шанс стать реальностью. Мы точно знаем, что юникс на БЭСМ-6 возможен: в конце 80-х Андрей Основич и Коля Молчанов запускали Unix v6. Я своими глазами видел, стоял за пультом той машины. 😀
1. Сделать ассемблер, выдающий объектный файл в формате a.out. У нас есть аналогичный ассемблер для Эльбруса-Б - фактически надо его упростить до системы команд БЭСМ-6.
2. Сделать линкер, связывающий объектные файлы и библиотеки в формате a.out. Аналогично, переделываем линкер от Эльбруса-Б.
3. Написать на ассемблере начальный старт машины, инициализацию регистров, выдачу на консоль, обработку прерываний. Отладить на SIMH.
4. Сделать компилятор Си для БЭСМ-6. Это отдельная большая тема. Компилятор должен уметь обработать исходники ядра. Тренироваться можно на исходниках ядра из проекта v7x86.
5. Доработать ядро с учётом особенностей БЭСМ-6. Словная адресация штука коварная.
6. Написать юниксные драйверы для бэсмовской периферии. Оживить таймер, консольный терминал, барабаны, диски.
7. Переписать libc и libm для БЭСМ-6.
8. Перенести основные системные бинарники /etc/init, /bin/sh, /etc/getty, /etc/mount, /etc/fsck и прочие.
9. Сделать утилиту создания образа файловой системы БЭСМ-6 из Линукса. За основу взять fsutil и проекта bkunix.
10. Перенести остальные утилиты из /bin и /usr/bin.
Для переноса на БЭСМ-6 лучше всего подойдёт Unix v7. Размер его ядра на i486 около 50 килобайт. На БЭСМ увеличится до 100 килобайт - вполне поместится в 192 килобайта адресного пространства БЭСМ. Есть два проекта Unix v7, откуда можно заимствовать исходники: v7x86 и 32V.
RetroBSD не кандидат, к сожалению. Там размер около 170 килобайт на mips32, да ещё распухнет немного, да ещё данных надо хотя бы килобайт 60 - никак не лезет.
Фантазий громадьё, но мечты имеют шанс стать реальностью. Мы точно знаем, что юникс на БЭСМ-6 возможен: в конце 80-х Андрей Основич и Коля Молчанов запускали Unix v6. Я своими глазами видел, стоял за пультом той машины. 😀
no subject
Date: 2025-05-06 07:15 am (UTC)no subject
Date: 2025-05-06 07:36 am (UTC)