29 января 2011 г.
20 января 2011 г.
Сессия подходит к концу
02. В конце прошлого года начал работать над дипломом. Защита будет летом, в Москве.
03. Понял, что возможности текстовых процессоров по работе с _текстом_ меня не устраивают. Не хватает клавиатурных комбинаций Emacs, которые уже стали привычными. Заметил, что если мне нужно записать какой-то текст, будь то лекция или статья - то я запускаю Emacs и автоматически начинаю записывать в HTML, расставляя необходимые теги. К возможностям текстового процессора обращаюсь в редких случаях. В связи с этим, начал изучать систему компьютерной вёрстки LaTeX, параллельно с написанием дипломной работы.
Думаю, знание LaTeX мне пригодится в будущем.
04. Мне нравится браузер Mozilla Firefox. Однако последнее время, в основном, использую браузер Conkeror. Мне нравится дизайн его интерфейса и система управления.
05. Серьёзно занялся изучением программирования. Столько я не программировал за все годы обучения в ВУЗе. Обнаружил, что понимание работы программы - это столь же здорово, как и понимание работы той или иной части ОС. В этом неоспоримое преимущество свободного программного обеспечения - вас не ограничивают в изучении, и вы можете достичь сколь угодно глубокого понимания, вплоть до основ (если таковые есть). Вы можете не только изучить, но и исправить то, что на ваш взгляд нуждается в исправлении. Вы можете добавить дополнительную функциональность, которой вам не хватает, и поделиться результатами своей работы (если захотите).
Мне нравится реализовывать алгоритмы, которые вырисовываются в воображении в процессе понимания поставленной задачи. Если этот алгоритм не работает с первого раза, то я могу провести много времени, перечитывая код программы и мысленно моделируя её работу: вот сейчас эта переменная увеличилась на единицу, а сейчас цикл совершил новую итерацию и вот этот указатель теперь содержит адрес следующей ячейки массива... В конечном счёте, как правило, мне удаётся решить возникшую проблему. Это здорово.
Сегодня я наконец-то решил освоить азы работы с отладчиком GNU Debugger. Благодаря ему, я смог найти ошибку в программе, из-за которой она не работала задуманным образом.
7 января 2011 г.
Мой новый проект
Теперь о главном. Поскольку я сейчас вновь достаточно активно изучаю язык программирования Си - на курсах в НИИТе и самостоятельно дома - то решил запустить новый проект.
http://memory-pool.blogspot.com/
Цель проекта - собрание в одном месте различных интересных задач по программированию, которые мне попадались на курсах (или которые я нашёл/придумал сам), и их решений. Проект по сути образовательный, и будет расти вместе с познаниями автора. Надеюсь, что смогу живо и интересно преподнести такую сухую материю, как программирование.
Использование свободного драйвера nouveau с NV GeForce 6600 (kernel 2.6.36)
Моя видеокарта:
> su
> lspci -k | grep -i vga
01:00.0 VGA compatible controller: nVidia Corporation NV43 [GeForce 6600] (rev a2)
Моя система:
> uname -a
Linux gentoo 2.6.36-gentoo-r5 #18 SMP Fri Jan 7 05:54:56 MSK 2011 i686 Intel(R) Pentium(R) 4 CPU 1.70GHz GenuineIntel GNU/Linux
Следую этой инструкции:
http://en.gentoo-wiki.com/wiki/Nouveau
Из ядра так же нужно убрать NVIDIA Framebuffer:
Device Drivers --> Graphics support -->
--> Support for frame buffer devices:
< > nVidia Framebuffer Support
Поправил /etc/make.conf
> nano /etc/make.conf
...
#VIDEO_CARDS="nvidia"
VIDEO_CARDS="nouveau"
...
Чтобы корректно удалить из системы проприетарные драйвера nvidia-drivers, нужно пересобрать несколько пакетов с поддержкой nouveau - чтобы разрешить зависимости. Что я и сделал:
> emerge -av media-libs/mesa media-gfx/imagemagick x11-base/xorg-drivers
Теперь можно спокойно удалить проприетарные драйвера
> emerge -av --depclean x11-drivers/nvidia-drivers
Собрал
> emerge -av x11-drivers/xf86-video-nouveau
Настроил Иксы:
> nano /etc/X11/xorg.conf
Section "Module"
...
Load "dri2"
Load "dri"
EndSection
Section "Device"
...
Driver "nouveau"
BusID "PCI:1:0:0"
EndSection
...
Section "ServerFlags"
Option "AIGLX" "off"
EndSection
Section "DRI"
mode 0666
EndSection
Теперь о настройке framebuffer'a. Мне нужно разрешение 1280x1024. Посмотрел доступные варианты с помощью утилиты hwinfo:
> hwinfo --framebuffer
02: None 00.0: 11001 VESA Framebuffer
[Created at bios.459]
Unique ID: rdCR.MH8719d4NL7
Hardware Class: framebuffer
Model: "NVIDIA nv43 Board - p277h1"
Vendor: "NVIDIA Corporation"
Device: "nv43 Board - p277h1"
SubVendor: "NVIDIA"
SubDevice:
Revision: "Chip Rev"
Memory Size: 256 MB
Memory Range: 0xd0000000-0xdfffffff (rw)
...
Mode 0x031b: 1280x1024 (+5120), 24 bits
...
Вот оно. 0x031b - шестнадцатиричный код разрешения.
Поправил настройки загрузчика GRUB. Удалил опцию ядра "video", оставил только "vga". Получилось следующее:
> nano /boot/grub/grub.cfg
...
menuentry "Gentoo GNU/Linux, with Linux 2.6.36" --class gentoo --class gnu-linux --class gnu --class os {
...
linux /kernel-2.6.36 root=/dev/sda4 ro vga=0x031b
}
...
Загрузился с пересобранным ядром и драйвером nouveau. Иксы работают, разрешение в консоли и в Иксах - 1280x1024.
На этом всё. Хорошего дня.
5 января 2011 г.
31 декабря 2010 г.
Сказ о потерянных раскладках
Хочу рассказать я вам о некоторых проблемах, возникших при очередном обновлении ОС Gentoo Linux. Только две упомяну, остальные не столь интересны были - да и не упомнишь всего. Итак, начну с главного, а именно - с ядра операционной системы.
Далее в тексте упоминается одно из самых сильных и, вместе с тем, опасных заклинаний - команда su. Даёт эта команда нам власть над миром нашим, пусть и виртуальным. А большая власть - большой осторожности и ответственности требует.
1. Давно я собирался обновить систему на ноуте и на ПК. На дворе уж год две тысячи десятый заканчивается, а я всё со старым ядром 2.6.32 работаю... Не дело это. А тут ещё обновлений немеряно нашлось после очередного выполнения
> emerge --sync && eix-update && eix -uc
Посмотрел я на списки обновлений, посмотрел на версии новые, и решил - время пришло. Благо ноут есть, для опытов. Начал с него. Потом взялся за ПК. Настроил ядро новое, версии 2.6.36.
А на ПК у меня жёсткие диски именовались так:
hda1, hda2 .... hdaN
И не грузилась система с новым ядром. Видел я лишь сообщения об ошибках. Тогда стал искать причину, и нашлась она рядом - в файле /etc/fstab. В новом-то ядре жёсткие диски именуются, как
sda1, sda2 .... sdaNОтсюда и ошибки при монтировании - нет устройств таких, что перечислены в fstab! Исправил я ошибку эту - заменил hda на sda. Загрузилась система, да не может всё равно примонтировать разделы c файловой системой ext4! А проблема известная, и решается она следующим образом:
http://www.nkuttler.de/post/filesystem-with-huge-files-cannot-be-mounted-read-write-without-config_lbdaf/
После этого система загрузилась благополучно.
Кстати, считаю нужным упомянуть здесь о интересном нововведении, а именно об опциональной возможности использования в ядре драйвера ФС ext4 для работы и со старыми версиями данной ФС - ext2 и ext3. Так как других ФС, кроме перечисленных, на ПК и на ноуте я не имею, решил испробовать данную возможность. Пока проблем не замечено.
2. Система загрузилась, только вот раскладку переключить не мог я. Сочетание клавиш Alt+CapsLock, мной для переключения раскладки назначенное, не работало. Что ни делал, ничего не помогало. И опции в /etc/X11/xorg.conf менял, и Иксы пересобирал... Долго ли, коротко ли - нашлось решение этой проблемы: с помощью сети Интернета выловил я информацию по проблеме моей. Сказано было: в новом xorg'e способ настройки изменился, теперь настройки клавиатуры, мыши, тачпада и прочих устройств внешних - всё должно храниться в файлах отдельных, в каталоге /etc/X11/xorg.conf.d/. А там - пусто, да и каталога этого и в помине нет... Как нет? Примеры настройки должны быть. Поищем, команда для этого есть специальная:
> su
> updatedb
> locate xorg.conf.d
Что же это за строки таинственные? В первую очередь, права необходимые получаем. А во второй строке у нас обновление базы данных mlocate, индекса системы нашей. Тут все пути и все имена хранятся. А в третьей команде мы запрос к базе данных делаем, словно к зеркалу волшебному - и ответ получаем:
/usr/share/X11/xorg.conf.d
/usr/share/X11/xorg.conf.d/10-evdev.conf
/usr/share/X11/xorg.conf.d/50-wacom.conf
Знаем мы теперь, где примеры хранятся, и недалече это - всего на расстоянии одной команды консольной. Ну, теперь можно просто скопировать найденный каталог с файлами в /etc/X11/. Одна команда для этого нужна, и вот она:
> cp -r /usr/share/X11/xorg.conf.d /etc/X11/
Просто, да не всё это. Теперь пришло время перенести настройки клавиатуры нашей в новое место, в каталог /usr/share/X11/xorg.conf.d
Убираем лишние строки из /etc/X11/xorg.conf путём их комментирования с помощью "#" (в принципе, эти строки можно вообще удалить):
Section "ServerLayout"
...
# InputDevice "Keyboard0" "CoreKeyboard"
...
EndSection
...
#Section "InputDevice"
# Identifier "Keyboard0"
# Driver "kbd"
# Option "XkbLayout" "us,ru"
# Option "XkbVariant" ",winkeys"
# Option "XkbOptions" "grp:alt_caps_toggle"
#EndSection
...
А вот, что получилось в /etc/X11/xorg.conf.d/10-evdev.conf. Здесь со строки, знаком "#" начинающейся, иначе комметарием называемой, номер строчки добавленной указан - чтобы понятнее было:
...
Section "InputClass"
Identifier "evdev keyboard catchall"
MatchIsKeyboard "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev" # 1
Option "XkbLayout" "us,ru(winkeys)" # 2
Option "XkbOptions" "grp:alt_caps_toggle" # 3
EndSection
...
Теперь бы и перезагрузиться нам, чтобы изменения в настройках эффект возымели - но зачем время тратить, рестарт системы производить? Лучше Иксы перезапустить, это проще и быстрее будет.
Иксы перезапускать - наука не сложная. Переключаемся на консоль - произносим заклинание и нажимаем на Ctrl+Alt+F1. Так попадаем мы на первую консоль. Снова получаем права суперпользователя, в простонаречии - root'a:
> su
И осталось лишь X-сервер перезапустить, чтобы увидеть результат действий наших - правильно ли мы настройки Иксов прописали?
> /etc/init.d/xdm restart