LINUX.ORG.RU

Cборка старого ядра linux-1.1.95


1

4

Приветсвую, нужно собрать старое ядро линукс. Для чего? Нужно немножко разобраться в учебных целях и модифицировать его тоже в учебных целя. Дело в том, что в работе нового ядра разобраться труднее, 1000 исходников, а то и больше. А вот старое, подходит в самы раз. Но собрать его труднее, то библиотеки слишком новые, то параметр такой gcc уже не принимает, то еще что. Может кто подскажет, где взять rootfs тех времен, чтобы можно было chrootнуться туда и собрать ядро?



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

Скажите хоть парочку ключевых слов. Не нашел)

denisnet
() автор топика

Скачать с рутрекера какой-нибудь древний дистрибутив по вкусу

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

Да хороший материал, но не решило проблемы со сборкой. Кто посоветует, какой дистр можно найти, с gcc и библиотеками того времени?

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

До сих пор где-то в антресолях слака 3.5 лежит - там ведро 2.0.34 - помнится запиливание на нее 2.2.* казалос аццким трешем во мгле :) Наверняка можно найти более несвежие дистры и обмазаться :)

slackwarrior ★★★★★
()

Чем некрофильствовать, лучше взяли бы Minix како-нибудь, или NetBSD на худой конец

annulen ★★★★★
()

Это мои кривые записи на клига.ру :)

Сейчас ковыряюсь в ядре 2.0.18. Собираю как раз в виртуалбоксе под Slackware.

По сути: в ядре много зависит от версии gcc. (ты сам наверное понял ).

Тех кусков которые я вынул из 1.0 не хватит для обучения?

Вообще какие подсистемы интересуют?

tlx ★★★★★
()

где взять rootfs тех времен, я не знаю, но могу порекомендовать альтернативы, выгодно отличающиеся наличием книжек, содержащих исчерпывающее описание ядра:

1. http://en.wikipedia.org/wiki/Lions'_Commentary_on_UNIX_6th_Edition,_with_Sour... — сейчас уже есть полный (и даже собираемый) исходный код, и эмуляторы хоть на жс (http://pdp11.aiju.de/)

2. http://lsub.org/who/nemo/9.pdf + http://plan9.escet.urjc.es/plan9jun.tgz — это тоже немного устарело, но существенная часть применима и к текущей системе (http://9fans.net/)

anonymous
()

не согласен, разбираясь с 1.1 - толку ровно ноль, бери сразу 3.8 и изучай не по исходникам, а для начала какую-нибудь книгу

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от denisnet

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

Простите за мою, возможно, непрофессиональную лексику.

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

Это ты сейчас смешно спросил.
Вот есть, скажем, автогонщик, чемпион Формулы-1. Он долго и упорно учился, совершенствовал свое умение водить спортивные автомобили, чтобы с ним подписали контракт в Ф-1. Еще дольше он работал, чтобы выиграть свой первый чемпионат, а затем второй и третий.

А тут пришел ты и сказал: «Я вот ездить на машине не умею, но хочу за три дня стать чемпионом Формулы-1».

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

Да, я сам отлично понимаю, что надо много времени упорно изучать. Но в данный момент, мне как можно быстрее. Хотя мне не все надо, а изучить переход из реального режимы в защищенный режим, страничную сегментацию.

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

По режимам смотри вики (например http://wiki.osdev.org/Real_Mode). По памяти можешь почитать, например, Understanding The Linux Kernel (UTLK) или Professional Linux Kernel Architecture. И не заморачивайся со старьем, не забивай ненужными вещами время.

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

>> из реального режима в защищенный режим

Из защищеннного в long mode (х86_64) а в ARM вообще всё по другому.

Начальная загрузга хорошо опсана в «Ядро Linux в коментариях» Максвела. На примере 2.4, но для обзора хватит.

В защищеный режим (в случае с Linux) систему переводит загрузчик. В современных ядрах его нет. Страничную адресацию включает тоже он, но ядро позже переделывает каталоги.

У меня это есть и примеры небольшие собраны на примере 1.0.

Задавай любые вопросы по старым ядрам. C радостью отвечу то, что знаю.

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

Т.е. как, ядро уже с декомпресии начинает работать в защищенном? А загрузчик настраивает страничную сегментацию... и переводит систему в защищенный режим?

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

В защищенном да. На счет страниц с перепутал спросонья :). Сегменты (не страницы) готовит загрузчик, потом ядро их инициализирует еще раз. А каталог страниц создается всё же в в ядре - paging_init().

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

Т.е. ядра всех ос, которые работают в защищенном режиме запускаются уже в нем?... И для того, чтобы отследить, как ядро туда переходит, нужно копаться в исходниках загрузчика, например grub?

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

LiLo проще.

В старых ядрах (1.0) есть make floppy. Могу ответить на все вопросы по этому способу загрузки.

Там всё, что тебе нужно: Загрузочный сектор возможность загрузится с декомпрессией и без нее. Плюс куски кода, которые собираю современным gcc после моих кривых модификаций.

Есть еще 0.1 который собирается целиком + bash от китайского хакера. Есть хорошая книга на английском по 0.1 и плохая на русском (моя, которую я ни как не соберусь структурировать, исправить ошибки и пунктуацию).

Если у тебя будет потом время. Предлагаю тебе заняться ее правкой. Скажем за пару тысяч рублей. Можно разбить сумму по главам.

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

Я вообще думал отдать человеку, не занимающемуся программированием. А ты еще и вопросы по теме будешь задавать, а я внесу ответы в книгу. Книга от этого только выиграет.

Пиши если заинтересован.

Посмотрел еще раз make файлы. Цель называлась не floppy, а disk, точнее в 1.0 zdisk (только упакованные ядра).

В 3.0 fdimage(наверно).

Я свой make-файл писал поэтому забыл точное название.

В общем если ты еще не разобрался в 1.0:

 tools/build boot/bootsect boot/setup zBoot/zSystem $(ROOT_DEV) > zImage

tools/build - бинарник который вставляет несколько строк конфигурации в начало загрузчика.

boot/bootsect - просто копирует содержимое дискеты в память.

boot/setup (не линкуется с ядром) - подготавливает систему так, чтобы она могла исполнять код на Си, т.е. подготавливает сегменты, включает защищенный режим и т.д. .

zBoot/zSystem - само ядро на Си, включая распаковщик.

Я кстати обошелся без распаковщика.

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

Оказывается спам бот потер 1-ю главу.

Там как раз были черновики про загрузку. Я восстановил . Видишь, уже помог :)

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

Программирование на ассемблере на платформе x86-64: Руслан Аблязов

там и про сегментацию, и по переход в защищённый режим

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

А может кто пальцем тыкнет в миних 1.0 версии, который работал еще в реальном режиме процесора, и книгу к нему.?

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

Думаешь он современным компилятором соберется?

Зачем это тебе вообще? Как звучит задание?

Реальный режим остался только в FreeDOS для recovery сборок и кое-где в производстве (на станках).

Сейчас х86 грузятся через uefi. Иногда вообще без загрузчика.

Тебе надо реальный режим проскочить вместе с загрузчиком в изучении. Ядро может быть загружено десятком способов.

Что кстати не понятно про переход в защищенный режим в моей главе? Кроме дурацкого стиля изложения конечно.

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

На сколько мне известно, ядро линукс начинает загружаться уже в защищенном режиме.

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

В задании надо, в какой-либо ОС найти место перехода в защищенный режим, и внести некоторые изменения. Также нужно внести некоторые изменения при сегментации.

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

В чем проблема?

Возьмем linux 0.1, который собирается современным gcc и внесем любые изменения. Там загрузочный сектор есть. Переход просто сделан. Я исходники его знаю почти наизусть.

Пиши что надо сделать здесь или на мыло rtlx73(a)gmail.com

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

В офтопике 95 тоже вроде не было. Интересная история с выключением в Linux связана с днями рождения детей Линуса.

А потеме, копай в сторону ACPI.

tlx ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.