LINUX.ORG.RU

Можно ли собрать Линукс совсем с нуля?

 


2

1

Лфс требует gcc и вообще toolchain, а если нырнуть глубже, и собрать gcc старым gcc, его ещё более старым, и так до 1.27 (первая версия на x86). А дальше? Дальше мы возьмём какой-нибудь K&R компилятор, да? А его как собрать? На самом дне, наверное, будет какой-то минимальный ассемблер, набранный вручную в кодах? Но его надо будет запустить на какой-то примитивной ос. Dos 1.0? Minix?

Хардмод - сделать всё это, не пользуясь несвободными инструментами.

Не знаю, какие теги ставить, и вообще не лучше ли перенести в development.

Хардмод - сделать всё это, не пользуясь несвободными инструментами.

В широком смысле тебе тогда нужно полностью свободное железо.

И все прошивки и компиляторы, заменяешь свободными или пишешь сам.

Почему вперёд - положи жизнь, сделай.

anonymous
()

Ну вот тут я собрал начиная только с одного лишь статически слинкованного tcc: https://github.com/ZilchOS/bootstrap-from-tcc

Получается, на твоем уровень хардкорности я прошел.

Ещё более хардкорен stage0 от bootstrappable.

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 2)

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

Либо самому вручную в кодах процессора написать компилятор. объем будет примерно таким Margaret Hamilton и написанный ею программный код для проекта Apollo там еще есть приписка «На этой фотографии я стою рядом с исходниками кода, на котором работал Apollo Guidance Computer (AGC). Уточню, что в этой стопке только код — там нет отчётов по устранению багов и логов» :) т.е. отлов багов и допиливание наверное еще такой же объем.

плюс еще такой же объем на операционку :)

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

pfg ★★★★★
()

если интересно самому поковырятся в минималистической работе с процессором напрямую, поищи УМПК-80 в нем аккурат нативная работа с процессором в кодах процессора, с аппаратной отладкой в виде светодиодиков шины адреса, шины данных , а также управляющих сигналов процессора.
лаболаторки помню (точнее непомню %) ) на нем делали эдак очень много лет назад.
рисуешь алгоритм, вручную переводишь его в ассемблер вручную же размещаешь переменные в памяти и регистрах процессора, вручную переводишь ассемблер в hex код процессора, вручную вводишь hex-коды в память процессора и потом потому вручную проверяешь работоспособность, вручную нажимая кнопку следующий шаг процессора и смотришь какие сигналы есть на шине данных, шине адреса…

можно конечно нырнуть еще глубже и найти устройства, в которых алгоритм работы вычислений определяется на наборном поле расстановкой проводников. помню такую лаболаторку на аналоговой вычислительной машине… :)

кстати видел статьи в которых собирали процессор из элементарных логических элементов типа И ИЛИ НЕ. весьма внушительные по объему работы.
но опять же сейчас проще такое написать на VHDL/Verilog и скормить FPGA - получишь полностью свой железный процессор.

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)
Ответ на: комментарий от cobold

линус во-первых взял кучу необходимого инструментария из проекта ГНУ.
во-вторых ему с разработкой до более-менее рабочего состояния основательно помогали. первоначальное ядро имело очень слабые возможности, запускался небольшой набор утилит гну, о чем он и написал.

pfg ★★★★★
()

будет какой-то минимальный ассемблер, набранный вручную в кодах?

Писать на асме не так сложно, да и в коды переоводить можно, когда-то писал под DOS hex-редакторе простейшие .com-файлы. Но на асме вы полностью привязываетесь с окружению (операционной системе), а при переводе в коды и к процессору. Поэтому сразу решайте, что у вас DOS или Minix или EFI :). И, да, современные компы не позволяют тумблерами/клавой набирать инструции, так что вы исходно доверяете операционке, редактору и пр.

Можете присоединится к https://www.gnu.org/software/mes/ .

mky ★★★★★
()
Ответ на: комментарий от pfg

поищи УМПК-80

Какая-то нереалистичная история по ссылке. Я помню подобные «чемоданы», у всех в халм ушатаная клава, невозможно что-то набрать, и время выполнения лабы зависило, от того, насколько повезло с «чемоданом», получится быстро что-то набрать или...

ИМХО, тот ещё квест найти агрегат в полностью исправном состоянии.

mky ★★★★★
()
Ответ на: комментарий от mky

а шо делать, время… ничто не вечно под луной. отремонтировать :) кнопки заменить. ал307 заменить, они по первой весьма быстро дохли…
я помню лаболаторные платы, у которых на всех 580вм80 рытвина - чип перегрелся и взорвался :)

pfg ★★★★★
()
Ответ на: комментарий от pfg

Ну вот, мы ТС'а и предупредили, что если задумает покупать себе УМПК-80 или что другое железо 30+ лет, то нужны прямые руки, или знакомый, который всё промоет, пропаяет, починит...

mky ★★★★★
()
Ответ на: комментарий от mky

да тут вообще вся тема, о том, что если таким занятся, то будет звездец по усилиям… :)
вопрос лишь в том что посчитать за базу, ниже которой лезть бессмысленно.

на экзамене:
— в давние времена, когда по земле еще ходили динозавры….
— Молодой человек, а какой у вас вопрос ??
— «Устройство радиолампы»…
(с) древний анекдот про «начал издалека» :)

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 2)
Ответ на: комментарий от mky

пропаяет

Припой патентованная вещь, как и вольфрамовая нить в паяльнике. Самый надежный способ - начать с палки, далее нужно как-то дойти до железного века, ну а там и до транзистора не далеко :)

skidphysic
()

Я не знаю, как это делается в случае gcc, но когда я думал на эту тему про свой компилятор, то решение выглядит довольно очевидно:

  1. Проектируется абсолютно минимальный язык.

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

  3. Этот компилятор компилируется «в уме» и руками забивается бинарный файл со скомпилированным кодом компилятора.

  4. Этот бинарный файл запускается на код компилятора и его выхлоп проверяется сам с собой. Он должен отработать и вывод должен совпасть сам с собой.

После этого имеется компилятор, который компилирует сам себя. Его нужно зафиксировать как бинарный артефакт и при дальнейшем развитии компилятора и языка каждая следующая версия должна быть реализована в рамках предыдущей.

Если предположить, что мы живём не в каменном веке, то вместо компиляции «вручную» можно написать интерпретатор на питоне и использовать его для создания первого бинарника на третьем шаге.

vbr ★★★★
()
Последнее исправление: vbr (всего исправлений: 5)
Ответ на: комментарий от pfg

ниже которой лезть бессмысленно

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

skidphysic
()
Ответ на: комментарий от skidphysic

К слову: Первый в мире патент на изобретение был выдан в 1421 г. городской управой Флоренции на имя Филиппо Брунеллески, который изобрел корабельный поворотный кран.

skidphysic
()
Ответ на: комментарий от skidphysic

Патенты истекают. В разных странах по-разному, но в 1421 год лезть точно не надо. В этом, собственно, и смысл патентов - по истечении некоторого времени описываемое патентом изобретение переходит в публичное достояние.

vbr ★★★★
()
Последнее исправление: vbr (всего исправлений: 1)
Ответ на: комментарий от skidphysic

Не совсем понятно, что вы к патентам прицепились? Срок дейстивия патента истёк — пользуйся свободно. Джеймс Уатт же спокойно свои поздние паровые машины с кривошипом выпускал.

mky ★★★★★
()
Ответ на: комментарий от anonymous

Круто. Не знал. То есть люди над этим работают, но там работать и работать ещё… Кстати, все равно же надо на дискетку где-то загрузчик записать, пусть даже набранный вручную. Времена, когда загрузчик можно было выставить тумблерами, прошли :(

true_old
() автор топика
Ответ на: комментарий от vbr

в 1421 год лезть точно не надо

Тогда есть риск, что задача «свободными инструментами» окажется невыполненой, поскольку тс выпил колу в процессе создания своего линукса. От осознания этого ужаса, у тс покраснеют и выпучатся глаза как у мопса а сфинктер охватит мышечный спазм.

skidphysic
()

Стандартное хождение кругами! Пиши тогда свой ЯП, компилятор - далее ты свободен написать свою систему.. с просмотром ютуба и котиков))

 > Будет много ученных людей, но они будут безумны...

P.S. Песочек (для процессора) лучше брать в речпорту, скажешь от меня. Накладут какого надо.

anonymous
()
Ответ на: комментарий от anonymous

Песочек (для процессора) лучше брать в речпорту

Песок-то добыт проприетарщиками. Сам должен найти и накопать. А прежде сам лопату сделать. Штаны и ботинки — тоже сам.

greenman ★★★★★
()
Ответ на: комментарий от greenman

сам лопату сделать

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

Shushundr ★★★★
()
Последнее исправление: Shushundr (всего исправлений: 1)

Хардмод - сделать всё это, не пользуясь несвободными инструментами.

Большая часть свободных инструментов создана в несвободной среде с помощью несвободных инструментов.

Докопирайтные инструменты 1950-х - 1960-х подойдут?

Дальше мы возьмём какой-нибудь K&R компилятор, да? А его как собрать?

Сделать from scratch сборщик K&R компилятора на mksh или на python?

vM ★★
()
Последнее исправление: vM (всего исправлений: 1)
Ответ на: комментарий от true_old

Питон типа проще чем компилятор C?

Ну вообще да, python проще чем Си.

В Си есть статическая проверка типов, а в питоне всё ламерски проверяется в рантайме.

Shushundr ★★★★
()
Последнее исправление: Shushundr (всего исправлений: 2)
Ответ на: комментарий от true_old

Ну так то мы должны у тебя спросить об этом диффе. В конце то концов, кто дерзнул взяться за такой проект⁉️😀️

Мы то, так, помешать тебе нас запрячь на пустую трату времени))

anonymous
()

А чем не нравится собрать stage3 самому, а дальше в Gentoo? Можно конечно и в досе это делать и в старом линуксе на виртуалке типа Slackware где код был минимален можно все делать. Можно тот же Plan9 или 9front взять для таких извращений, но ничего не поменяется от того что ты сишный код в облаке компилять станешь на куче серверных процессоров не часами, а за секунду.

anonymous
()
Ответ на: комментарий от anonymous

— Я вам помогу, — сказал Остап. — Мне приходилось лечить друзей и знакомых по Фрейду. Сон — это пустяки. Главное — это устранить причину сна. Основной причиной является самое существование советской власти. Но в данный момент я устранять ее не могу. У меня просто нет времени. Я, видите ли, турист-спортсмен, сейчас мне надо произвести небольшую починку своего автомобиля, так что разрешите закатить его к вам в сарай. А насчет причины вы не беспокойтесь. Я ее устраню на обратном пути. Дайте только пробег окончить.

Свой процессор с нуля ни ТС, ни я, ни большинство лоровцев в данный момент сделать не можем, а вот линукс собрать — можем. Отсюда и вопросы ТСа.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от pfg

Ну и в третьих, времени это у Линуса всё равно отняло дохрена, конечно, помогал энтузиазм первопроходца, у ТСа, боюсь, с мотивацией будет посложнее…

hobbit ★★★★★
()
Ответ на: комментарий от mky

Помню-помню, мы на таких лабы по ЦОС делали на 4 курсе. И у нас, вроде, они достаточно стабильно работали. Год был примерно 1992.

Я к тому времени уже активно писал на ассемблере под свой «Партнёр», и когда я начал бодренько загонять в шайтан-машину всякие C3 и C9, преподаватель был приятно удивлён.

hobbit ★★★★★
()
Ответ на: комментарий от vM

Ну лично я возьмусь только из готовых. Но тут такое дело, мне времени жалко до нуля доходить. Время можно потратить на что-то более конструктивное, в том числе и из области линуксостроения. :)

Если же ТС хочет именно с нуля — почему бы и нет. Поаплодируем!

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от hobbit

Чтобы разобраться во внутрянке еще бывает полезно не столько с нуля собирать, сколько попытаться доделать что-нибудь к уже имеющемуся.

Я вот сейчас занят тем, что пытаюсь современные пакеты собрать для Ubuntu 8.04.

Кстати, система с GNOME и с убунтовскими сервисами по дефолту потребляет что-то около 130 МБ после входа в графический сеанс.

В старом браузере можно открыть 6-7 страниц, и общее потребление системы не превышает 250 МБ.

Какие-то фантастические технологии.

wandrien ★★
()
Ответ на: комментарий от wandrien

Кстати, система с GNOME и с убунтовскими сервисами по дефолту потребляет что-то около 130 МБ после входа в графический сеанс.

Примерно столько у меня сейчас потребляет arch + i3. Может чуть меньше, но где-то в районе 100 Мб.

Какие-то фантастические технологии.

Ага. Даже не верится что GNOME когда-то мог столько.

anonymous
()