"Ночные" сборки KolibriOS

Share your distros and discuss others'
  • То есть что-то наподобие http://builds.kolibrios.org/.test/kolibri1.iso ?
  • Mario
    замаскировал вызов check_ATAPI_device_event и тормоза в QEMU чудесным образом исчезли.
  • CleverMouse
    Да, грузится отлично. Для начала подходит обычный образ без всяких изменений. Я посмотрел последний LiveCD от diamond-а. Там не так много дополнительных программ и весь дискеточный дистрибутив в корне CD.
  • Serge
    CleverMouse
    Поскольку на 99% код для ATAPI и iso9660 (joliet) написан мной, то я объясню непонятные места.

    1) Joliet потому что мне лень было писать поддержку для ASCII имен. При том что у меня не было ни одного диска (из 300 штук) на тот момент отличающихся от Joliet. Код тупо ищет нужный ему описатель и использует его - ничего не мешает дописать поиск другого описателя (Кулаков Владимир "Дисковая подсистема ПК" в помощь) и написать код работающий с ASCII именами. Только вот от поддержки символов отличных от латиницы на системном CD диске (раз уж оно будет формироваться по старому стандарту) тогда вспоминать не нужно - впрочем их вроде и так нет. У меня нет времени, возможности и честно говоря я этим кодом никак не заинтересован, но любой желающий может сделать. Вообще на диски куча подстандартов и я удивляюсь почему мне еще никто не предъявил претензии насчет поддержки UDF -наверное потому что MPEG2 плеера для DVD дисков у нас еще нет. :lol:

    2) Насчет тормозов в Qemu - да они есть. Об этом я уже писал на форуме. Все потому что производители ATAPI устройств не озаботились повесить событие нажатия кнопки на прерывание. В результате приходится тупо читать состояние порта. На реальных компьютерах это не вызывает никаких проблем - проверено на Cyrix233 (187 МГц). В Qemu почему то опрос с периодичностью 0,1 секунды вызывает жуткий ступор - очевидно код реализующий эту часть написан крайне неэффективно.

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

    Если кто-найдет решение чтобы и овцы целы и волки сыты и пастух жив - я буду рад за вас. :mrgreen:
  • Mario

    Может тебе посмотреть внимательней check_ATAPI_device_event. Там наверное с таймингами или с флагами проблема.
  • Serge
    Вообще-то когда я обнаружил эту фичу с Qemu - а нашел я это гораздо раньше чем все остальные, то я ковырял код как мог. С точки зрения логики там все нормально и я не вижу причину такого мутного поведения. Про крайне неэффективный код - это были слова про Qemu.

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

    Чтение CD в qemu не тормозит, хотя там pio. И в никсах проблем не было. Я в qemu инсталлировал убунту с iso livecd.
  • Это называется "С точки зрения логики там все нормально и я не вижу причину такого мутного поведения"?
    Qemu - если не брать совсем последнюю версию - не знает про ATAPI-команду GET_EVENT_STATUS_NOTIFICATION, так что отзывается на неё ошибкой. Тем не менее, код чтения ответа от устройства эту ошибку игнорировал и долго ждал, пока не появятся данные, причём в основном потоке ядра - отсюда тормоза. Я переставила код проверки ошибки во внутренний цикл ожидания в r1909 - тормоза исчезли.
    http://builds.kolibrios.org/.test/kolibri2.iso - пока так.
    Сделаем мир лучше!
  • Ну, я рад за тебя. Всяко приятно в чужом коду соринку найти. :lol:
    В оправдание могу только сказать, что в доступной документации не совсем четко было расписано. По крайней мере на тот момент.
  • Команда входит в список обязательных для всех устройств. Эмуляторы :twisted:
  • Вот так вот в результате и появляются всякие kqemu для Linux, которые работают исключительно при поддержке драйвером со стороны гостевой ОС, а всем остальным - фиг вам ускорение и прочие вкусности, в результате лишний код.
  • Поскольку возражений по поводу LiveCD не поступало, я настроила автосборку на генерацию дополнительно образа LiveCD.
    Сделаем мир лучше!
  • CleverMouse

    Спасибо, всё отлично работает. Осталось определится с генерацией ID для LiveCD. Можно использовать версию svn и текущее время или аналог mktemp() ?
  • Serge, разве не проще определять физическое размещение CD через int 13h/ah=48h? Код в bootcode.inc уже давно пользуется этой функцией для определения, идёт ли загрузка дискеты с реальной дискеты или с CD, но функция возвращает всю нужную информацию.
    При выполнении мейкфайлов есть и сведения о текущей версии svn, и все возможности шелла, в том числе date и mktemp.
    Сделаем мир лучше!
  • Who is online

    Users browsing this forum: No registered users and 33 guests