Препарирование AVP Z.E.S Linux Глава 2
Я, почему-то, не принял во внимание ясные надписи серым по черному, и попытался распаковать полученный ramdisk, думая, будто бы это стандартный initrd. А почему? Да потому что внимательнее мануалы читать надо, и гуглить лучше, если сам чего-то не знаешь.
Оказывается, при создании дискеты была применена более старая технология создания диска в оперативной памяти
Полученный на прошлом этапе
ramdisk.gz
оказался действительно виртуальным диском в оперативной памяти, сжатым gzip'омПравда, при распаковке в Линуксе, gzip выдал предупреждение:
Пытаемся распаковать ранее вырезанный
ramdisk.gz
:gzip -d ramdisk.gz
gzip: ramdisk.gz: decompression OK, trailing garbage ignored
Так, какой-то "мусор" после конца архива был игнорирован при распаковке. Как позже выяснится, фактически он ни на что не влияет, и на предупреждение gzip'а можно забить.
В конце образа дописано некоторое количество байт
F6
(Ў) и нечто похожее на контрольную сумму и цифровую подпись.
Хотя, для чистоты эксперимента, ничто не мешает получить "чистый" архив, размером 876114 байт:
dd bs=1 count=876114 if=ramdisk.gz of=ramdiskcln.gz
И "мусорный" хвост (остаток размером 133614 байт).
dd bs=1 skip=876114 if=ramdisk.gz of=endimg
Пробую распаковать
ramdiskcln.gz
- никаких предупреждений, распаковка успешна:
Доступ к ramdisk'у и его модификация
Сначала создается точка монтирования:
mkdir /mnt/ramzes
Теперь монтирование распакованного образа:
mount -o loop ramdiskcln /mnt/ramzes

Доступ у ФС ramdisk'а получен
Все успешно примонтировалось, видно структуру каталогов оригинального ramdisk'а AVP Z.E.S Linux. Места, правда, маловато. Всего 3 с хвостиком Мб, а осталось свободными вообще 806 К. Но все равно, кое-что можно сделать, например, для первого раза:
- выкинуть сам AVP (директория
AVP
в opt
, скрипт avp.run
из sbin
, ссылку usr/bin/AVPLinux
и директорию .AVP
из root
)- подправить скрипт
etc/rc.d/rc.sysinit
, чтоб выкинуть команды вызова AVP1. Отмонтируем ramdisk:
umount /mnt/ramzes
2. Запакуем образ ramdisk'а:
gzip -9 ramdiskcln
3. Соберем образ диска обратно. От предыдущих экспериментов должен остаться файл ldrkrnl.img, содержащий начальный загрузчик и ядро Z.E.S. Его нужно скопировать в директорию с измененным и запакованным ramdisk'ом, и просто слить в новый образ с помощью
cat
:ldrkrnl.img ramdiskcln.gz >mbootdisk.img
И все-таки попытку модификации исходного образа удалось завершить, хотя бы для демонстрации того, что "а так можно было?"
Например, в образ добавлен минималистичный текстовый редактор
qed
, написанный на Free Pascal:
Или даже мощный консольный редактор, переделанный из примера, поставляющегося с Free Pascal:

-Размер ramdisk'а сильно ограничен, поэтому некоторый софт, даже статически скомпилированный, туда не влез. Либо нарушалась идея "чтоб влезло на одну дискету".
-Постоянные проблемы с shared-библиотеками даже у того, что влезло. Так понимаю, что какие-то библиотеки устарели настолько, что новое не запускается, а старое, если заменить библиотеки - не работает. Или я что-то неправильно делал.
Поигрались и хватит, все равно для практического применения этот дистрибьютив не совсем подходит. Но есть и плюсы - классно поковырялся, в процессе узнал новое, в общем, удовольствие получено. Осталось даже несколько идей на будущее, например, очень понравился Free Pascal и некоторые возможности Linux, реализуемые им без геморроя, которым страдает программер на C/C++.
Начало
Использование ramdisk в Linux (ramdisk, ramfs, tmpfs)
или препарирование рамдисков
How to Create/Modify an RAM disk Image (на английском), PDF, скачать
Оригинальный образ bootdisk.img
Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2017/12/15/prep