Инженер Дмитрий Гринберг запустил Linux с rootfs-окружением из Debian на процессоре, выпущенном в далёком 1971 году. Речь о модели Intel 4004, включающей 2300 транзисторов и 4 килобайта постоянной памяти. Только для запуска операционной системы чипу потребовалось 8 дней.
Сложность задумки заключалась в том, что Intel 4004 не поддерживает ни одного из существующих компиляторов для языка C. Они позволяют переводить текст, написанный на языке программирования, в машинные коды.
Чтобы решить проблему, Гринберг создал эмулятор на ассемблере, позволяющем выполнять на Intel 4004 окружение на базе ядра Linux. Малая производительность процессора дала о себе знать — обработка одной виртуальной секунды в эмулируемом софте требовала до четырёх часов вычислений на реальной системе.
Например, для отрисовки множества Мандельброта с разрешением 13x40 потребовалось 30 дней. Сама же система запускалась на процессоре восемь дней. Чтобы понимать, насколько это медленно, на видео выше одна секунда хронометража соответствует двум минутам реального времени.
Источник:
Много свободного времени и нетрадиционное хобби.
В современной градации это хорошо или плохо?
Это как доброкачественная опухоль, если не мешает трогать не надо...
Другое дело у комментаторов на 4пда. Такие занятые люди, что кое как находят время написать какую-то бессмысленную фигню в коммент
Конечно, я сижу на унитазе, или перекусываю, или перед сном в качестве развлечения... Это нормально.
Ну вот, а у него такое развлечение, о котором не стыдно рассказать другим людям, в отличии от твоего развлечения
лучше бы он пил и деградировал, чем такое хобби
на холодильнике быстрее будет :)
Побить рекорд, в 12 году он запустил линукс на 8-битном микроконтроллере. В 23 году его рекорд был побит запуском линукса на ещё более дохлой железке. Вот он и решил вернуть свои позиции :)
А современный холодильник, да, он скорее всего будет производительнее 4004.
Она ему не нужна. Это, знаешь, тот уровень программистов, для которых Генту и LFS - это уже скука)
Это точно 😉
Как определить неопытного пользователя линуксов? Он ставит генту и лфс в один ряд))
Генту дистр весьма специфический, а лфс - это linux from scratch... Типа нормальные люди этим не занимаются, обе вещи - это доведение до абсурда.
Генту специфичный дистр, но это не значит, что он не для нормальных людей. Вы очень плохо знаете генту и его преимущества.
Да, компилировать ядро, истинное луниксоводство. Хороший стресс тест для ПК, кстати.
Компилировать ядро - это, кстати, неплохая мера безопасности, если при этом отключить подгрузку модулей.
И это не имеет значения, у генту пакетный менеджер.
Зачем нужно генту, если ты ставишь пакеты?)
Чтобы глубоко конфигурировать те пакеты, которые ты решаешься компилировать из исходников?)) самый очевидный плюс генту - не устанавливаются те зависимости, которые тебе нафиг не нужны и которые подтягиваются из за мелких функций в других зависимостях. Тебе не установится Qt Designer, если ты просто устанавливаешь плазму с небольшим набором приложений кде.
У меня брат историю рассказывал, у них препод в политехе по какому-то айтишному предмету рассказывал про линукс (убунту-дебиан), но сам при этом сидел на генту без гуя, ибо не смог собрать КДЕ из исходников, потому что у него какие-то там библиотеки не вставали (или отсутствовали, хз). Этот препод все 4 года, которые брат учился в шараге, сидел на генту чисто в терминальном режиме)
>>ибо не смог собрать КДЕ из исходников
Мда. Я КДЕ ставил 15 лет назад, когда ещё в школе учился и никсы знал не так хорошо, как сейчас (и юзал генту, потому что это круто). Нормально там все компилировалось.
можно бинарные пакеты в Gentoo ставить
и компиляция ядра это только звучит страшно, мой древний Xeon E3-1265L v3 собирает 6.10.8 (правда с tegra_defocnfig, но в x86_64_defconfig по умолчанию включено еще меньше) всего за 9 минут
Я не компилировал, ибо не было необходимости. Линуксом пользуюсь неправославным - с гуем, ибо терминальных команд почти не знаю (на память), а тот же ADB работает под линью безотказно.
а в генте это всё автоматизировано, просто следуешь инструкции, где надо - немного думаешь.
Ничего сложного, если ты и так работаешь в этой сфере.
Вопрос "зачем" здесь не поднимается. Так надо.
Вот LFS уже совсем другой уровень и я не вижу смысла в этом копаться даже.
А вообще это говорит о том, что даже набора инструкций из 4004 хватит для всего. На сложениях и сдвигах можно сделать любой алгоритм.
Да, это будет медленнее нативного, но все же.
Потому, когда корпорации говорят, что в процессоре 2020 года нет инструкции АБВГД512 и тебе надо пойти купить такой же, но 2021 года, что бы запустить ОС, они... лгут.
>>А вообще это говорит о том, что даже набора инструкций из 4004 хватит для всего
Не-а, в данном случае автору проекта не хватило, ибо у линукса тоже есть некоторые минимальные требования. Он запустил на 4004 эмулятор R3000 на архитектуре MIPS у которого есть поддержка в ядре Linux, а также ему пришлось приделывать к нему эмуляцию MMU другой микросхемой.
И фактически Linux был запущен не на 4004, а на R3000 эмулируемом в 4004 с помощью дополнительной обвязки.
>>Осталось дум в неофетче запустить на нем
Бесперспективняк. Там 8 дней только на запуск ядра, оно то может там и запустится, но…
>>Потому, когда корпорации говорят, что в процессоре 2020 года нет инструкции АБВГД512 и тебе надо пойти купить такой же, но 2021 года, что бы запустить ОС, они... лгут.
Кто такое говорит? Вы уверены в датах?
P.S. Кстати, картинка на превьюшке - не корректная, потому что это был тестовый стенд, а не итоговая плата. И память там эмулировалась с помощью atmega8 (да, когда память производительнее CPU в буквальном смысле). В видео на youtube уже правильная плата
(отредактирован)
Вы не знакомы с программированием и с тем как работает компьютер
Вот допустим у тебя два ЦП, старый и новый
Пусть у старого не будет блока возведения в степень, а тебе надо возвести число n в 128 степень
Как будет выглядеть алгоритм для старого ЦП
А=0
j=n
Пока А меньше 128 (
А=А+1
j=j*n)
Итого этот код будет выполняться за
387 шагов
А в новом у тебя появился блок для вычисления степеней и твой код превратился
pow(n, 128) результат которой выдаётся за пару шагов, потому что имеется аппаратный блок вычисления
Т.е. если код написан на использование того чего нет в старых ЦП, и если его переписать под старые ЦП, то у тебя все будет так тормозить, что смысла не будет в новой ОС
ну это если реально используются и инструкции, а не как игры с SSE определенной версии в свое время, которые через костыли запускали на старых ЦП и они нормально работали
>>Т.е. если код написан на использование того чего нет в старых ЦП, и если его переписать под старые ЦП
Не всегда необходимо переписывание самого когда, частично такое можно компенсировать «умным» компилятором. Но да, производительность будет страдать
(отредактирован)
Я знаком с компьютером.
Я писал программы на трех ассемблерах: AVR, PIC и 8051. Начинал ARM, но сменил деятельность.
Что угодно можно вычислить на чем угодно. В идеале. С костылями в виде ОС и прерываний по таймеру может быть и нельзя.
Ну и собственно тогда к чему был вопрос
Если ПО написано под конкретные инструкции современных процессоров
Соответственно это не будет работать на ЦП где нет этих инструкций
А поддерживать две ветки кода - смысл когда оборудование уже скоро на свалку пойдет
Насколько я знаю, Linux в частности и Unix вообще запускается только на 32-разрядных процессорах и выше.
Поэтому я не понимаю, как Linux можно завести даже не на 16-битном, а на 4-х битном процессоре?!
В данном случае на 4004 запущен эмулятор 32-х разрядного R3000, с внешней памятью и эмулируемым MMU. И уже на R3000 запущен линукс, благо поддержка этого процессора в ядре была
(отредактирован)
Как бы да, но это open source проект, если задача тупо запустить и ты хороший программист - выкидываешь из ядра все лишнее что тебе не понадобится, правишь адрессацию и отключаешь все защищённые режимы, заменяешь все что опирается на 32 битные инструкции процессора программными костылями, компилируешь компилятором под нужный чип, и вот у тебя ядро с минимальной обвязкой работает
Вопрос -нафига это не отменяет, ибо ни одна программа без правки исходников работать не будет
Там полноценное ядро и окружение, будут если их можно скомпилировать под R3000
На YouTube, видео вставлено в новость
(отредактирован)
Вернуть рекорд по запуску линукса на древнем (или слабом) железе - себе. Его прошлый рекорд продержался 9 лет и был побит в 2023м
(отредактирован)