On Thu, May 26, 2005 at 10:04:37AM +0400, Aleksey P. Karelin wrote: > Слабо надеюсь на ответ, но все-таки... > Есть индустриальный компьютер MSMP3SEN. ALT Linux 2.4 Master встал на > него почти без проблем (есть некоторые шероховатости, но это мелочи). К > этому компьютеру имеется флеш-диск DiskOnChip 2000, на адаптере > MSMF104-2D. Есть драйвера. (Кстати для windows они не нужны - система > видет этот девайс как жесткий диск и покойно на него пытается > установиться). Win98? Там, скорее всего, работа с таким диском идёт через BIOS. > 1. Проинсталировать linux при установленном DiskOnChip не получается > инсталятор виснет на 1%, виснет намертво. На 1% при загрузке ядра? > У меня здесь одно объяснение - нехватка базовой памяти. Вместо 640 кБ, > свободно остается 574 кБ. Да, это вполне вероятно - одно время с DiskOnChip по этой причине не работали ни GRUB, ни LILO (а к драйверам для Linux прилагались какие-то альтернативные бут-блоки для самого DiskOnChip, а также патченая версия lilo). Вроде бы в GRUB это правилось. В принципе можно попытаться сделать загрузочную дискету с GRUB, положив на неё ядро со стандартной дискеты для установки и скопировав параметры ядра из конфигурации syslinux (в GRUB вроде бы можно организовать ожидание смены дискеты для загрузки initrd). > 2. Если установить linux без DiskOnChip на обычный винчестер, а затем > его воткнуть, то стартовать систему можно только с помощью загрузочной > дискеты. Подоразумеваю, что опять-таки нехватка памяти при старте > штатным lilo на жестком диске. На самом деле тут ещё может быть конфликт с самим DiskOnChip - возможно, система пытается грузиться именно оттуда. > При этом наличие девайса в компьютере никак не обозначено. Вполне естественно - это же фактически ISA-устройство, для которого нет нормального механизма распознавания. В принципе в ядре уже есть драйвер для DiskOnChip, но, возможно, в ядрах 2.4.x он несколько устарел. Нужно загрузить следующие модули: 1) modprobe docprobe (этот модуль должен определить тип DiskOnChip и загрузить соответствующий драйвер - doc2000 или doc2001); 2) modprobe nftl (этот модуль обеспечивает работу со структурами NFTL, используемыми в DiskOnChip для эмуляции обычного блочного устройства). Файлы устройств /dev/nftl* в стандартном пакете dev отсутствуют - их нужно создать самостоятельно: mknod /dev/nftla b 93 0 mknod /dev/nftla1 b 93 1 ... mknod /dev/nftla15 b 93 15 mknod /dev/nftlb b 93 16 mknod /dev/nftlb1 b 93 17 ... После этого с /dev/nftla можно будет работать как с обычным диском (создавать на нём разделы и т.д.). Замечание по поводу создания initrd: там нужно сначала загрузить модуль doc2000, а после него - docprobe (поскольку механизм автозагрузки нужного модуля, используемый в docprobe, в initrd не сработает из-за отсутствия там modprobe, да и mkinitrd не определит необходимость добавления модуля doc2000 в initrd автоматически). Свободный драйвер nftl не совсем хорош - там не реализован wear leveling, что в принципе может сократить срок службы устройства. Хотя неизвестно, что на самом деле реализовано в закрытом драйвере от M-Systems, поскольку исходников нет. Теоретически можно вообще обойтись без NFTL, используя вместо этого файловую систему jffs2; при этом придётся заменить и загрузчик - в MTD CVS есть патчи для GRUB. http://www.linux-mtd.infradead.org/source.html > 3. Как говорил, есть драйвера под linux. Процедура установки: [skip] > На пункте 2.2 я как начал - так и остановился. Даю команду: > > patch -p1 -d /usr/src/kernel/sources < linux-2_4-patch Это неправильно - в /usr/src/kernel/sources лежат упакованные исходники ядра, а патч должен применяться к распакованным исходникам. В принципе можно создать пакет kernel-feat-drivers-diskonchip с этим патчем, после чего собрать пакет ядра с применением этого патча. Однако вполне вероятно, что можно собрать этот драйвер и отдельным модулем, немного поработав напильником.