LINUX.ORG.RU

Сообщения AndreyMust19

 

Как писать текст прямо в буфер терминала

Форум — Development

Решил попробовать - как программы (текстовые редакторы) прокручивают текст. Как вы знаете, такие программы при перемещении курсора "вверх/вниз" и вводе текста не распечатывают весь обновленный экран заново, а изменяют его содержимое. То есть они каким-то образом пишут прямо в буфер терминала. Решил узнать как это делается. В гугле все тихо - может не так вопрос задаю? "Как писать прямо в буфер терминала?", "Прокрутка текста". Не нашел. Решил покопаться в исходниках. У меня были HTEditor и Biew. У первого исходники очень запутанны, поэтому сказу принялся за второго. Нашел файлы keyboard.c и vio.c. Первый устанавливает режимы терминала перед началом работы, а второй вроде бы выводит текст на экран. Как он это делает я не нашел. Но понял одно - у программы есть 2-мерный массив, она изменяет его содержимое и вместе с этим изменяется содержимое экрана. Вспомнил что ee тоже так должен делать. Посмотрел его исходники. Есть new_curse.c, к-й выполняет некоторые функции curses'а (очень полезно кстати посмотреть - на предмет как работают нек. из них). А при компиляции есть выбор - либо new_curses.h, либо curses. Его смотрел я Си-файл, но опять ничего не нашел. Уж больно большой. Из всех вызовов - только ioctl, устанавливающий / получающий флаги терминала и fcntl, к-й тоже самое делает с открытым файлом. Подскажет кто-нибудь, как это сделать? Или правильный вопрос, нужные curses-функции или системные вызовы.

AndreyMust19
()

Как ожидать нажатия любой клавиши без curses

Форум — Development

Искал я, искал, но везде только примеры с getch. А я не хочу использовать проклятую curses. Ведь getch как-то делает это, значит, можно сделать и другими средствами. Пробовал ioctl, fcntl, tcgetattr. Переводил ввод в небуферезированный вид, отключал каноническое что-то, включал N_DELAY и NONBLOCK. Ничего не работает. Всегда требуется нажатия Enter. А надо чтобы буква попадала в поток ввода сразу после нажатия клавиши. Сдается мне, что вместо терминала придется обращаться к клавиатуре.

AndreyMust19
()

Пытался поставить Linux вручную. Не получилось...

Форум — Linux-install

А давно ставил UNIX'ы пользуясь установочными программами и только недавно понял что поставить систему можно из командной строки другой системы. Все установки я провожу в виртуальной машине Sun xVM Virtual Box 2.0.2.

Сначала надо было создать разделы и отформатировать FS'ами и подмонтировать к себе. С этим проблем нет.

Далее скопировал ядро, вписал конф. файлы fstab, passwd, lilo.conf. Затем пытался поставить lilo в MBR нового диска. при: lilo Отвечает что-то про Реид: Fatal: ... RAID1 (non)... Точный текст сейчас привести не могу (может позже). Не знаю - почему lilo думает про какой-то RAID-массив, ведь у меня его нет. Может в настройках Virtual что-то не так?

Т. о. лиловый не ставиться решил поставить грубого. Поставил, загружаю новую систему. Появляется грубый, вхожу в командную и ввожу: kernel /boot/vmlinuz (vmlinuz - само ядро). Говорит что ядро загрузил, но когда пишу: boot Ядро дохнет кернел паникой на этапе монтирования корневой FS.

В итоге я решил что бесполезно сначала ставить ядро, загрузчик, а потом грузить. Сначала надо поставить какие-то пакеты, без которых ядро загрузится, но не заведется. Итак, у меня пробел в знаниях что происходит на следующем пути: kernel->mount->init->login Я не знаю - как загружается UNIX-ядра и Linux в частности, в каких этапах и что им требуется. В качестве ядра используется Debian Insert с liveCD. Из статей есть LBS (Собираем Линукс из ничего). Там подробно разобрана возня с пакетами, но нет данных о том - что нужно для инициализации системы и как оно происходит.

AndreyMust19
()

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