Не люблю ограничения, ни в чем, особенно если эти ограничения ничем не оправданны. От оправданных ограничений никуда не денешься, и ничего с ними не поделаешь.
Мое ядро загружается с помощью GrUB, который не умеет загружать ядро или модули ниже мегабайта. И это накладывает на меня ограничение - одного мегабайта памяти просто не хватит GrUB'у. Но двух мегабайт должно хватать и мне и ему.
Но неладно что-то в датском королевстве...
Попытавшись поставить 2 мегабайта для bochs я услышал от GRUB следущее:
GNU GRUB version 0.96 (639K lower / 4193279K upper memory)
Хех, очень забавно... То же самое я увидел запустив qemu... И что самое интересное, что то же самое GRUB докладывает моему ядру.
Попробуем поднять планку до 4 мег.
GNU GRUB version 0.96 (639K lower / 1984K upper memory)
bochs и qemu вновь единодушны, но где еще один мегабайт??? Ведь по логике вещей должно быть 3М upper...
8M: GNU GRUB version 0.96 (639K lower / 6080K upper memory)
16M: GNU GRUB version 0.96 (639K lower / 14272K upper memory)
Нет, надо с этим что-то делать...
PS: Одно место обнаружилось в bochs bios, он от размера памяти отнимает ACPI_DATA_SIZE, но это не может послужить причиной пропажи целого мегабайта, ACPI_DATA_SIZE имеет значение 64к.
PPS: Эх, чуть чуть недотестировал...
17M: GNU GRUB version 0.96 (639K lower / 16320K upper memory)!
Ошибка скрывалась в Биосе bochs в функции 0xe820, int 0x15. Если памяти больше 16 мегабайт, то анализируется количество 64-х килобайтных блоков после 16 мегабайт, 16 мегабайт прибавляем. А если памяти ровно или меньше 16 мегабайт, то анализируется количество килобайтных блоков после мегабайта... А вот мегабайт прибавить забыли.
QEMU использует биос из комплекта bochs, поэтому проблема присутствует и там.
Построить Qt из исходников под Linux
7 месяцев назад
2 коммент.:
Привет.
Сообщил разработчикам о косяке?
..bw
Сообщил, только вот опоздал маленько, но зато указал разработчикам на другую проблему с памятью..
Исправление ошибки уже можно обнаружить в cvs bochs'а.
Отправить комментарий