LINUX.ORG.RU

Сообщения drish

 

isolinux

В документе написано:

Copy isolinux.bin, a config file called "isolinux.cfg" (see syslinux.doc for details on the configuration file), and all necessary files (kernels, initrd, display files, etc.) into this directory, then use the following command to create your ISO image (add additional options as appropriate, such as -J or -R):

mkisofs -o <isoimage> \ -b isolinux/isolinux.bin -c isolinux/boot.cat \ -no-emul-boot -boot-load-size 4 -boot-info-table \ <root-of-iso-tree>

Куда надо копировать "all necessary files": в isolinux/boot.cat или в <root-of-iso-tree>? И вообще, что такое boot.cat?

PS: Я забыл, в загрузочном диске Gentoo тоже isolinux используется?

drish
()

Музыка в рекламах

1) Bon Aqua
2) Aqua Minerale
Какая там музыка?

drish
()

Страничная адресация

Мне не совсем понятно.
В i386 используется двухуровневая страничная адресация. По инициализации всё, кажись, понятно.
32-битный адрес задаётся так:

10 бит page directory | 10 бит page table | 12 бит offset

То есть при любом обращении к памяти мне надо будет пользоваться такой структурой вместо физического адреса, как в сегментах?

В Linux трёхуровневая. Если количество членов в page middle directory 1, то поле middle остаётся всегда 0. Дык всё равно не будет совместимо с x86, не так ли?

drish
()

Загрузка

Написал загрузчик с ext2. С драйвером фс проблем нет, всё в порядке. Но
загрузить систему не получается. Загрузчик поделён на две части: первая
находится в MBR, она грузит два сектора с начала указанного ей раздела. Там
в ext2fs выделено место для второго загрузчика. Второй представляет из себя
примерно такую вещь:

/* монтирование файловой системы */

/* открытие файла /boot/cmdline */

/* чтение одного блока и копирование 255 байт в 0x9900:0 */

/* открытие файла /boot/vmlinuz */

// здесь уже поподробнее:

        mov si, vmlinuz+0x7c00 ; в ds 0
	call fopen
	mov bx, 0xa00 ; сегмент, куда читать
	xor eax, eax
	call read_file_block
	xor ah, ah
	mov byte al, [0xa000+0x1f1] ; setup_sects
	inc al

/* итак, setup_sects+1 находится в ax. дальше идёт чтение этих секторов в 0x9000:0 */

/* Дальше выставляем нужные переменные (некоторые ставить необязательно, я
пробовал убирать, но это, по-моему, не так важно) */

	mov bx, 0x9000
	push ds
	mov ds, bx
	mov ax, 0xfffd
	mov word [0x1fa], ax ; video mode
	mov byte [0x210], ah ; type_of_loader
	mov al, 0x81
	mov byte [0x211], al ; loadflags
	mov ax, 0x9000-0x200
	mov word [0x224], ax ; heap_end_ptr
	mov eax, 0x99000
	mov dword [0x228], eax ; cmd_line_ptr
	mov eax, 0x100000
	mov dword [0x214], eax ; code32_start - пробовал ставить 0x18, как
написано в /usr/src/linux/Documentation/i386/boot.txt, но не помогло; пока
оставил 0x100000
	pop ds

/* сдесь высчитывается, сколько блоков надо прочитать на 64 килобайта и
сохраняется в памяти */

	pop ax ; в стеке было сохранено setup_sects+1

	shl ax, 5 ; ax *= 0x20
	mov bx, 0x1000
	sub bx, ax
	mov word [0x8019], bx ; в [0x8019] сохраняется 0x1000-(количество
16-битных кусков на setup и bootsector). Это сегмент, куда будет читаться ядро.
Такой подсчёт требуется для того, чтобы не читать real-mode часть ядра в high
memory; функция move перемещает 64K-куски в high mem из 0x1000:0
	xor eax, eax ; чтение с нулевого сектора
	xor cx, cx ; счётчик
reading_the_kernel:
	call read_file_block
	inc cx
	inc eax
	cmp word cx, [0x8017]
	jz read64K
	add word bx, [0x8015]
	jmp short reading_the_kernel
read64K:
	pushad
	call 0x7c0:move ; это вместо int 0x15
	popad
	cmp eax, edx ; в edx подсчитано количество блоков
	jae allread
	mov word bx, [0x8019]
	xor cx, cx
	jmp short reading_the_kernel
allread:
	mov ax, 0x9000
	mov ss, ax
	mov sp, 0x9000
	mov ds, ax
	mov es, ax
	mov fs, ax
	mov gs, ax
	jmp 0x9020:0

Всё, при попытке загрузить идёт перезагрузка. Драйвер фс проверен! Я
посмотрел setup, перезагрузка идёт уже после прыжка в 0:0x100000.
В чём же проблема?
PS: Если кому-нибудь интересно, могу привести код полностью.
drish
()

Правильно ли я понял?

Загрузка Linux.
0) Инициализировать загрузчик (найти раздел, примонтировать фс и т.д.)
1) Загрузить kernel command line в 0:0x99000 (255 символов)
2) Прочитать 1 блок файла vmlinuz, узнать setup_sects в таблице
3) Прочитать первые (setup_sects+1) _секторов_ файла vmlinuz в 0:0x90000
4) Установить переменные (кстати, какие устанавливает загрузчик?)
5) Далее читать ядро и перемещать в 0x100000 куски по 64K с помощью прерывания 0x15
6) Прыгать в 0x9020:0, отключив прерывания и установив все сегментные регистры и sp в 0x9000.
Что ещё надо делать?

drish
()

ext2

В документации написано, что дескриптор первой группы блоков находится сразу после суперблока. Но практика показывает, что после суперблока есть ещё один свободный блок. Откуда?

drish
()

lilo

У меня вопрос: в mbr.S для чего нужны переменные packet, daddr, addr и serial_no?

drish
()

У кого есть FAT32 разделы, скажите, пожалуйста

Какой там идентификатор (partition type): 0xB (W95 FAT32) или 0xC (W95 FAT32 LBA)?

drish
()

QThreadStorage: thread b7190070 exited after QThreadStorage destroyed

сабж, Segmentation fault. Такая ошибка возникает при компиляции KDE (хотя
это не важно). Важно то, что я собираю систему на отдельном разделе,
ошибка случается только там (после chroot). Но если примонтировать
mount -o bind /mnt/mysystem/usr/X11R6/lib /usr/X11R6/lib, то всё
повторяется и в текущей системе. Я думал, что это X.Org 6.8.1 глючит,
а нет, с 6.8.0 то же самое. До этого пробовал собирать всё в 2.4.24 без
POSIX, всё равно выскакивает. Нашёл в инете:
You forgot to apply the POSIX version to ch5 and ch6 coreutils. As a
result, your gcc is flawed, it thinks that gas has no ".hidden" directive.

Unfortunately, this means that everything you have is miscompiled. You have
to start from scratch.
Я только не понимаю: что такое ch5 и ch6 и причём здесь POSIX, если и
на 2.4 та же фигня. Может кто-нибудь подскажет, в какую хоть сторону
копать? Я уже которую неделю с этим парюсь. Раньше я собирал всё с
gcc-3.3.4, перешёл на 3.3.5. Qt 3.3.3.

drish
()

Kernel headers

В принципе, понятно, что все проблемы с KDE и Qt у меня были из-за POSIX threads. Раз уж так, нах они мне нужны - с linuxthreads всё прекрасно работает. Собственно, вопрос: есть ли какая-нибудь связь версии kernelheaders (2.6 или 2.4) и поддержкой nptl? То есть придётся ли мне брать старые хедеры, если nptl я использовать не буду? Ядро потом поставлю 2.6.10.

drish
()

Konqueror падает после закрытия

Странный глюк, даже не знаю, что сказать (в смысле о системе) и где копать. Ни у кого не было?

drish
()

Qt, KDE

Короче, проблемы. Установил систему (не проверив :( ), настроил, захотел настроить X. KDE, конечно же, не грузится. Проблема в либах. Если запустить ls с LD_PRELOAD=/usr/lib/qt/lib/libqt-mt.so или с любой kde-шной библиотекой, всё падает. Попробовал под рутом - пашет. Но под рутом есть другая проблема:

xterm: Error 32, errno 2: No such file or directory Reason: get_pty: not enough ptys и так далее. fontconfig настроил. Есть мысль попробовать завтра опять поставить X.Org R6.8.0 (сейчас только 6.8.1 поставил), но это вряд ли поможет... Это с POSIX threads может быть связано? gcc компилил с --enable-threads=posix.

drish
()

Права на создаваемых файлах

Где можно указать дефолтные права на создаваемые файлы? А то rw только у юзера.

drish
()

Тип pgoff_t

Его можно заменить на unsigned?

drish
()

Давайте разберёмся :)

На днях я решил снова пересобрать Linux, довести его до ума, переписать сборочные скрипты и т.д. За одно я хотел поставить FreeBSD, посмотреть. Затарил корневой каталог, скинул на второй HDD, забэкапил нужные файлы, с винта все разделы удалил. Поставил FreeBSD, но удалил, так как она мне не понравилась. После этого временно переразбил диск (только на время сборки и переписки скриптов), разархивировал систему, проверил - всё работает отлично. Покачал свежих патчей, скрипты переписал, обновил ядро на 2.6.10 (ИМХО, первое несырое ядро из всей ветки), начал собирать систему. Не обошлось, конечно, без мелких ошибок (всякой мелочи, все возможные ошибки выполнения я подобрал до этого и с ними разобрался). В общем, вчера исправлял ошибки, заодно и проводил компиляцию. Но вдруг увидел странную вещь: configure у gcc неправильно использовал опции trap. Я решил, что опять какая-нибудь фигня. bash переустановил, не помогло. Перезагрузился с ядром 2.4.24, вообще все проги перестали работать (висли). Подумал, что случайно установил glibc (собирал с nptl) в /, а не в /mnt/newsystem. Загрузился в 2.6 с Gentoo LiveCD, счрутился туда, все все программы зомбируются после запуска. Проверил даты на системных библиотеках - на /usr/lib/ldscripts стоит вчерашня дата, но время раньше, чем началась лажа. В принципе, проблема не большая - я в любое время могу переразбить винт и всё разтарить заново, но разобраться было бы интересно.

drish
()

shell-скрипт

Как завершить работу скрипта, в for?

drish
()

mkfs.vfat

К какому пакету принадлежит mkfs.vfat?

drish
()

--prefix, --sysconfdir

Когда устанавливаешь программу на другую систему, используя --prefix=/my/prefix, какой должна быть sysconfdir: /my/prefix/etc или /etc? Хочу, чтобы настройки хранились в /etc, а не в /usr/etc.

drish
()

localedef

$ localedef --verbose -i ru_RU -f KOI8-R ru_RU
/usr/share/i18n/locales/ru_RU:23: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:24: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:25: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:27: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:30: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:31: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:32: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:33: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:35: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:36: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:37: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:38: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:39: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:40: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:41: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:42: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:43: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:44: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:45: non-symbolic character value should not be used
/usr/share/i18n/locales/ru_RU:50: non-symbolic character value should not be used
/usr/share/i18n/locales/i18n:1107: non-symbolic character value should not be used
/usr/share/i18n/locales/i18n:1313: non-symbolic character value should not be used
/usr/share/i18n/locales/i18n:1345: non-symbolic character value should not be used
/usr/share/i18n/locales/i18n:1373: non-symbolic character value should not be used
/usr/share/i18n/locales/translit_neutral:10: non-symbolic character value should not be used
/usr/share/i18n/locales/translit_neutral:11: non-symbolic character value should not be used
/usr/share/i18n/locales/translit_neutral:12: non-symbolic character value should not be used
/usr/share/i18n/locales/translit_neutral:13: non-symbolic character value should not be used
/usr/share/i18n/locales/translit_neutral:14: non-symbolic character value should not be used
/usr/share/i18n/locales/translit_neutral:15: non-symbolic character value should not be used
/usr/share/i18n/locales/translit_neutral:16: non-symbolic character value should not be used
/usr/share/i18n/locales/translit_neutral:17: non-symbolic character value should not be used
LC_NAME: field `name_gen' not defined
LC_NAME: field `name_mr' not defined
LC_NAME: field `name_mrs' not defined
LC_NAME: field `name_miss' not defined
LC_NAME: field `name_ms' not defined
LC_ADDRESS: field `country_name' not defined
LC_ADDRESS: field `country_post' not defined
LC_ADDRESS: field `country_car' not defined
LC_ADDRESS: field `country_isbn' not defined
LC_ADDRESS: field `lang_name' not defined
LC_ADDRESS: field `lang_term' not defined
LC_ADDRESS: field `lang_ab' not defined
LC_ADDRESS: field `country_num' not defined
LC_ADDRESS: field `country_ab2' not defined
LC_ADDRESS: field `country_ab3' not defined
LC_TELEPHONE: field `int_select' not defined
LC_IDENTIFICATION: field `audience' not defined
LC_IDENTIFICATION: field `application' not defined
LC_IDENTIFICATION: field `abbreviation' not defined
LC_IDENTIFICATION: no identification for category `LC_MEASUREMENT'
no output file produced because warning were issued
Установка новой glibc поможет?

drish
()

NVIDIA

Странно, после установки драйвера 6629 (на 2.6.10) glxgears не находит расширение GLX. Load glx в конфиге прописано.

drish
()

RSS подписка на новые темы