LINUX.ORG.RU

Что нужно для разработчика?


0

0

Товарищи! Нужна помощь опытных линуксоидов. Есть у меня очень старая машина. i486 33Mhz/4Mb RAM/250 MB HDD/1.44 FDD

Надо бы мне на нее Linux поставить (без X-Windows, конечно), да чтоб можно было программировать на C++, C, а также запускать DOS-программы.

Выполнимо ли это? И если да, какие пакеты мне нужны?(у меня есть дистрибутив ASP-Linux 7.2, так что если что как-нибудь перекинуть их туда я смогу)


ни один из современных линуксов на 4 мера памяти не будет ставиться. как вариант - либо выдрать винт и инсталлиться на другой машине, либо добавить на время инсталляции памяти. из старых на 4 м ставился только slackware 3.6 и младше , да и то с шаманскими плясками.

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

Мда... Значит придется под DOS'ю сидеть и юзать DJGPP.

Винт там с каким-то хреновым разъемом: похож на IDE - я так и думал, пока не попробовал подключить - но сами пины меньше и расстояние между ними тоже. Вообще тупая машина: в И-нете про нее нихрена нет. Называется Acer Note 730i.

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

Пойди на kernel.org и утяни оттуда последнее 2.2.x или 2.0.x. Собери его на "большой" машине под i486. При конфигурировании выкинь из ядра все, кроме абсолютно необходимого. Модулями ничего не делай. Закинь ядро на дискету командой "cat filename >/dev/fd0".

Всунь дискету в целевую машину и загрузись с нее. Установишь важный факт: работает ли ядро на ней вообще. Если тебе скажут: "kernel panic: unable to mount root filesystem", или что-то типа того -- значит все ок, можно продолжать дальше. Если машина просто повиснет или перезагрузится -- значит не судьба.

Если ядро работает, значит следующим твоим шагом будет создать 2 раздела: один для swap, другой для ext2. Потом создать root FS. А затем скопировать на нее файлы.

Иди на uclibc.org и качай оттуда готовый имидж rootfs. Смонтируй его через loop, создай на "большой" машине раздел и на нем любую линуксовую FS, затем скинь на этот раздел файлы из rootfs uclibc, туда же забрось сырцы sash, fdisk, mkswap, swapon и mke2fs, потом сам сделай chroot туда. Собери статически sash, fdisk, mkswap, swapon и mke2fs с uclibc.

Выйди из chroot и прочитай Bootdisk-HOWTO. Создай как там написано зипованную rootfs, на которой не будет ничего, кроме sash (под именем /sbin/init), /mnt, /dev/console, /dev/hda, /dev/hda1, /dev/hda2 и /dev/fd0. Укажи ядру на дискете, где у тебя корневая FS (на той же дискете или на другой).

Загрузись с дискеты на целевой машине. Закинь на другую дискету fdisk, mkswap, swapon и mke2fs. Вставь ее в целевую машину. Смонтируй и запусти с нее fdisk, потом mkswap, потом swapon. Если это тебе удалось -- значит, трудности позади. После этого у тебя будет вагон памяти. Правда, виртуальной, но не суть. Дальше создавай корневую FS на HDD, монтируй ее и копируй туда файлы с "большой" машины через дискету.

Если на момент установки не получилось иметь root FS в ОЗУ (из-за нехватки памяти), то можно пойти другим путем. Создай ext2 на дискете, положи туда ядро, скажи ему, что rootfs находится на /dev/fd0, натрави на это ядро lilo. Закинь на эту же дискету все вышеупомянутые программы.

Если все влезло, загрузись с дискеты и выполни вышеперечисленные шаги: создание и подключение swap'а, создание ext2 на HDD и монтирование ее. Скопируй на нее все с дискеты и размонтируй ее. Вставь эту же дискету в "большую" машину. Сотри с нее все кроме ядра. Запиши на нее rdev и lilo, тоже собранные статически с uclibc. Ядру на дискете укажи, что root FS у него теперь на HDD и опять натрави на это ядро lilo. Вставь дискету в целевую машину и перегрузи ее. Выполни вручную swapon. Пропиши lilo в BR раздела или MBR HDD.

Ну а дальше -- все так же, копируй софт через дискету. Если софта много, можно собрать ядро с поддержкой PPP, перенести это ядро на целевую машину, сказать rdev и lilo. Перенести pppd и копировать все остальное по сети. В изначально собираемое (для дискеты) ядро PPP лучше не совать, потому что памяти у тебя и так поначалу (до активации swap'а) маловато.

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

Хорошо, хоть кому-то пригодилось, не зря по клаве стучал. А вообще-то путано написано, хреновый из меня писатель. Вот тебе список неуказанных граблей:

1) Когда компилишь ядро, его root fs по умолчанию равно текущему root сборки. Когда копируешь ядро на другую машину (или дискету), root, прописанный в ядре, не меняется. Отсюда следует, что ядро, будучи запущенным на другой машине, скорее всего не сможет смонтировать root fs и впадет в панику. Для изменения root в имидже ядра используется rdev (man rdev). Если загрузка идет через lilo, то можно указать root fs в ком.строке ядру: "linux root=/dev/hda1". Первое слово -- чего должен загружать lilo (указывается label), дальше -- аргументы ядру. Если lilo стартует сразу, и невозможно чего-то ему сказать, следует включить CapsLock до того, как lilo начнет загрузку. Включенный CapsLock отменяет тайм-аут в lilo.

2) По умолчанию при сборке ядра задается, что root fs будет монтироваться ядром в ro. Если это зипованный имидж на дискете, и на ней нет ни mount, ни sash, то не получится чего-либо создать в root fs, потому что она смонтирована в ro. С помощью rdev можно задать в имидже ядра, что root fs будет монтироваться ядром в rw. Это имеет смысл, если root fs должна быть развернута в ОЗУ.

3) У sash (Stand Alone SHell) своеобразный синтаксис для встроенных команд. Рекомедуется распечатать ее man и иметь его перед собой во время использования этой оболочки. Кроме того, sash не является POSIX shell, и попытки запускать с ее помощью программы из-под mc не приведут ни к чему хорошему. Она не поддерживает "sh -c cmd [arg]".

4) Root FS должна иметь файл /dev/console. Если его нет, ядро впадет в панику по причине невозможности открыть стартовую консоль для init'а. Каждая программа имеет 3 стандартных потока ввода/вывода. Эти потоки подключаются ядром к /dev/console при запуске им /sbin/init.

5) Ядро хочет, чтобы существовал файл /sbin/init. Если он есть, он запускается ядром на выполнение. Если его нет, ядро впадает в панику. Что содержит этот файл -- ядру по барабану, главное чтобы он был, и был исполняемой программой. При загрузке ядра с помощью lilo можно указать другую программу вместо init в ком.строке ядра: "linux init=/bin/bash".

6) В 4 метра ОЗУ скорее всего не влезет ядро + rootfs в ОЗУ + sash + fdisk. Поэтому наверняка придется иметь root fs на дискете. На одну дискету тоже могут не влезть все программы, которые необходимы для создания rootfs на HDD. В этом случае на дискете можно иметь ядро + sash + одна программа. Этой "одной программой" сначала будет fdisk, потом mkswap, потом swapon + mke2fs. Выполняется программа, дискета вынимается, на нее копируется другая программа, целевая машина перегружается, процесс повторяется. Не следует fdisk и другие программы записывать на дискету под именем /sbin/init, потому что им нужны аргументы в ком.строке, которые ядро им не передаст. Теоретически, при инсталяции lilo в BR дискеты, можно указать аргументы для fdisk & Co. Ядро передает /sbin/init'у все аргументы ком.строки, которые не понимает. Т.е. оно можно, но это способ for hackers only. Когда завершается процесс, выполняющий /sbin/init (PID = 1), ядро завершает работу, а это не есть гуд.

Если будут вопросы -- можно задавать их по мылу: a72 at hotbox dot ru. Если ты в Мурманске, я тебе могу помочь и руками. Мне самому такой трах интересен. Последнее, с чем приходилось трахаться таким образом -- это был IBM PS/2 с 5 Мб ОЗУ и с диском, несовместимым ни с чем, кроме самого себя (т.е. хрен вставишь его в свой PC). Зато у этой машины был ROM BASIC :).

nobody ★★
()

ставь седьмую слаку или ниже. Мозгов хотя бы до 8 метров добей

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