Работа с файловой системой

Kernel architecture questions
  • Кстати, у меня 160 ядро тоже глючит. Симптомы те же, что и у ядра от Serge прошлой ревизии: не сработал vrr_m, kfar запустился c черной правой панелью, не запускаются многие программы!
  • Вношу поправки.
    Марат, ты нарушил условия лицензии GPL. Распространяя свой драйвер в составе GPL операционной системы ты обязан раскрыть его исходный код.
    b) при распространении или публикации Лицензиатом любого произведения, которое содержит Программу или ее часть или является производным от Программы или от ее части, Лицензиат обязан передавать права на использование данного произведения третьим лицам на условиях настоящей Лицензии, при этом Лицензиат не вправе требовать уплаты каких-либо лицензионных платежей. Распространяемое произведение лицензируется как одно целое;

    к экземпляру должен прилагаться соответствующий полный исходный текст в машиночитаемой форме, который должен распространяться в соответствии с условиями п.п. 1 и 2 настоящей Лицензии на носителе, обычно используемом для передачи программного обеспечения

    В случае если произведение в виде объектного кода или в исполняемой форме распространяется путем предоставления доступа для копирования его из определенного места, обеспечение равноценного доступа для копирования исходного текста из этого же места удовлетворяет требованиям распространения исходного текста, даже если третьи лица при этом не обязаны копировать исходный текст вместе с объектным кодом произведения.
    русский перевод GPL http://www.linux.org.ru/books/GNU/licenses/gplrus.htm
  • Насчёт отсутствия указания авторства Марата - я, разумеется, неправ, необходимые указания будут добавлены. Вот с лицензией будут некоторые проблемы.
    Под VMWare, кстати, тоже не работает. Под Bochs всё прекрасно.
  • А как насчёт чтения дисков больше 128 гигабайт. сейчас такие диски не читаются нормально, или я не прав?
    И что будет при записи на такой диск? Затрется начало? Так что драйвер всё равно нужен. Чтобы не путаться, устройства можно именовать ata0,1,2,3 Кеширующие функции убрать. Пусть этим занимается файловая система. Она лучше знает что кешировать.
  • Ладно парни - забейте. Взяли так взяли - главное авторство укажите.
    Мне сейчас недо того - у меня неделю как брат болеет, если вылечится возможно я продолжу работать в проекте, хотя точно ничего не скажу.
    И никакой я не подлый - немного завышенное самомнение у меня и черезчур обостренное чувство справедливости.
    Удачи.
  • Добавлены комментарии с указанием авторства.
    Уточнение: svn.160 под Bochs работает в режиме PIO (а оригинальное ядро от Марата не работает). Потому что Bochs BIOS не поддерживает функцию B103 прерывания 1A, которую использует ядро для поиска PCI-устройства контроллера. Впрочем, если подставить непосредственное значение, взятое из pcidev, то и в режиме DMA всё работает.
  • svn.161 всё равно не работает. Правда kfar теперь отрисовывает панель, но пишет read error
  • А у меня заработало все
  • Наверное интелловский контроллер не определяется.

    Меня больше интересует LBA 48. Сейчас диски меньше 160Гб не делают. Если файл пересекает границу в 128 Гб и система начнет его записывать то без команд LBA 48 она перепишет начало диска. Такая ситуация возможна, или система от этого защищена?
  • svn.161 и не должно работать, если раньше не работало. Там просто скорректирован стек при выходе в случае ошибок. Вот поэтому kfar и не падает (ибо сам по себе менеджер лоялен к ошибкам, падало ядро). Так что если работает - это несколько странно, но радует :)
    Если не определяется контроллер, то система должна работать как и раньше, в режиме PIO - проверено под Bochs...
    Serge
    По-видимому, возможна. Файловая система работает с 32-битными номерами секторов и соответственно выдаёт процедуре физических чтения/записи 32-битный номер сектора. А при записи в порты старшие 4 бита маскируются => можно считать их нулями.
    Serge wrote: Так что драйвер всё равно нужен. Чтобы не путаться, устройства можно именовать ata0,1,2,3 Кеширующие функции убрать. Пусть этим занимается файловая система. Она лучше знает что кешировать.
    Хочешь переписать полностью всё ядро? Общую структуру памяти от Велика/Menuet, менеджер памяти от Халявина, загрузочный код от меня, работу с жёстким диском ещё от кого-то? Ну если хватит сил и времени и ты уверен, что получится лучше - пожалуйста; но хочу напомнить, что "альтернативное" ядро никак не станет официальным (не будет залито на svn) по причине отсутствия некоторых вещей, так что ненавязчиво рекомендую сосредоточиться на доведении альтернативного ядра.
    Ушёл к умным, знающим и культурным людям.
  • diamond
    Значит получается что если при записи номер сектора 0х10000000 то старшие четыре бита отсекутся и вместо 268435456 будет ноль?

    Если "некоторые вещи" - это отладчик, то теперь он работает. Ядро полностью совместимо с последним дистрибутивом. Я написал письмо Майку и попросил его дать доступ на SVN. Хочу залить код в отдельную ветку. На официальную версию не претендую, об этом написал прямо.
    Переписывать всё тоже не собираюсь. Сделал те изменения что были нужны для создания драйверов и звуковой подсистемы. Драйвер предлагал сделать потому, что Марат заявил об уходе. Надеюсь что он всё же останется и продолжит заниматься файловой системой.
  • Serge
    1) Вероятнее всего код определения базового адреса контроллера IDE хромает. Попробуй вручную забить адрес в код, посмотрев адрес в Виндовс.
    Адрес 16 битный, две последние цифры в любом случае должны быть 0 (для 16-и ричной системы).
    На одном из моих компов адрес 0xff00, на другом 0xf000.

    2) Есть еще одна ошибка связанная с тем что я торопился выложить код и забыл добавить исправленный шедулер, но это не влият на работоспособность, это влияет лишь на распределение приоритетов.
    В нормальном виде повышенный приоритет будет только у приложения работающего в текущий момент с жестким диском, в том коде, который сейчас на SVN, увеличивается приоритет также и у приложений идущих по кольцу на которые переключается шедулер после приложения работающего с жестким диском. Все это свойственно только для DMA режима работы, в PIO режиме распределение приоритетов осталось по старому.

    3) Я не разбирался с проблемой "128 ГБ", но мне кажется просто добавляютсмя ранее зарезервированные байты для 48 битной адрессации. У меня нет литературы по этому вопросу.
  • Mario79
    Попрбовал, не помогло. Наверное дело не в определении контроллера.
    Информацию по ATA можно найти здесь http://www.t13.org
  • Ревизия 162 работает под VMWare.
    Mario79
    1) Интересно... на моей системе он 0xfff0...
    Serge
    А почему бы и не добавить изменения в официальное ядро?
    Что касается жёстких дисков: разве неверно, что стандарт ATA поддерживает только диски до 128 Гб? И наличие/отстутствие драйвера на это никак не влияет?
    Можно добавить несколько строчек в процедуры физического чтения/записи, чтобы они сразу выдавали ошибку в случае запроса сектора >0x0FFFFFFF.
  • Who is online

    Users browsing this forum: Ahrefs [Bot] and 15 guests