О проблемах с разрешением экрана в Ubuntu

Опишу проблему, с которой мне пришлось столкнуться. После установки проприетарных драйверов nVidia 260.19.xx в Ubuntu 10.10, я перезагрузился, после чего, как обычно, отображается экран входа в систему для конкретного зарегистрированного пользователя. Т.к. разрешение данного экрана было таким, каким нужно (а «родное» разрешение моего монитора 1280×800), то я решил, что драйвера установились корректно (что, кстати, бывает не всегда). После того, как я залогинился и вошел в систему, разрешение автоматически упало (шрифты и элементы рабочего стола стали мутнее и больше). Хм, не уж-то где-то косяк? Полез в настройки монитора, мне сразу же предложили воспользоваться фирменной утилитой от nVidia, значит, драйвера все же установились нормально. Открываю утилиту, лезу в настройки разрешения экрана – стоит 1024×768. Меняю на 1280×800, жму Apply, затем Save to X Confirugation File. Выскакивает ошибка записи файла, т.к .нужны права суперюзера. Ну что же, лезу в консоль, логинюсь под рутом, редактирую файл /etc/X11/xorg.conf, который отвечает на настройки, и тут вижу, что он уже и так настроен под мой драйвер, и даже разрешение указано то, которое нужно для моего монитора:

Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 7000M / nForce 610M"
EndSection

Section "Screen"
# Removed Option "metamodes" "nvidia-auto-select +0+0"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "TwinView" "0"
Option "metamodes" "1280x800 +0+0"

SubSection "Display"
Depth 24
EndSubSection

EndSection

Настройки xorg.conf верны, но тогда почему каждый раз, когда я логинюсь под своей учетной записью, разрешение сбрасывается до 1024×768? Ответ был найден! За разрешение монитора также отвечает еще и файл /home/uername/.config/monitors.xml, в котором, как раз и стояло разрешение 1024×768. Осталось только отредактировать его и потом либо перезагрузиться, либо перезапустить X-сервер.

Шпаргалка по настройке сети в Linux

Что за компьютер без подключения к сети и к Интернету, в частности? Данная шпаргалка поможет настроить сетевые интерфейсы в Линуксе, а для примера будет взят Debian.

И так, в самом начале необходимо удостовериться, что ваша сетевая карта в компьютере обнаружена ОС, для этого выполним команду:

dmesg | grep -i Eth или же  lspci | grep Ether – для поиска вводится начало «eth», т.к. сетевой карте (Ethernet) обычно присваивается интерфейс под названием eth0, где 0 – номер устройства. Если сетевых карт в компьютере несколько, то должно быть, соответственно, eth0, eth1, eth2 и т.д. В итоге на консоль должно быть выведено что-то вроде такого:

[ 1.326482] forcedeth: Reverse Engineered nForce ethernet driver. Version 0.64.
[ 1.328138] forcedeth 0000:00:0a.0: PCI INT A -> Link[LMAC] -> GSI 22 (level, low) -> IRQ 22
[ 1.328225] forcedeth 0000:00:0a.0: setting latency timer to 64
[ 1.853889] forcedeth 0000:00:0a.0: ifname eth0, PHY OUI 0x732 @ 1, addr 00:1d:60:47:8f:78
[ 1.853982] forcedeth 0000:00:0a.0: highdma pwrctl mgmt lnktim msi desc-v3
[ 34.458536] forcedeth 0000:00:0a.0: irq 42 for MSI/MSI-X
[ 34.458756] eth0: no link during initialization.
[ 34.459691] ADDRCONF(NETDEV_UP): eth0: link is not ready

Как видно из приведенного примера, в компьютере  установлена сетевая карта от nVidia c драйвером 0.64 и с присвоенным интерфейсом под названием eth0, правда, он в данный момент не активен, т.к. отсутствует соединение кабеля к сетевой плате.

Теперь можно ввести в консоль следующую команду для отображения информации о сетевых интерфейсах:

ifconfig

На что она нам покажет:

eth0 Link encap:Ethernet HWaddr 00:1d:60:47:8f:78
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:42 Base address:0xa000

lo Link encap:Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:122 errors:0 dropped:0 overruns:0 frame:0
TX packets:122 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:12867 (12.8 KB) TX bytes:12867 (12.8 KB)

Первый интерфейс – это eth0, с MAC-адресом 00:1d:60:47:8f:78. Т.к. в описании интерфейса отсутствует слово RUNNING, то это означает, что сетевой кабель не подключен. Второй интерфейс, присутствующий в списке – это lo, локальный интерфейс  (т.н. называемый Loopback), который имеет фиксированный для всех loopback-интерфейсов IP-адрес 127.0.0.1, маску подсети 255.0.0.0 и статус RUNNING. Из всего приведенного видно, что сетевой интерфейс eth0, который нам нужен для организации сети и выхода в Интернет, не настроен. Сейчас мы этим и займемся.

Нам необходимо отредактировать файл конфигурации /etc/init.d/networking, но в Debian’e его нельзя редактировать до тех пор, пока не остановлены сетевые интерфейсы. Поэтому нужно отключить интерфейс:

ifdown eth0

Однако, у нас же еще интерфейс eth0 не сконфигурирован, поэтому мы получим сообщение об ошибке: ifdown: interface eth0 not configured. Тогда, для начала, проверяем существование файла /etc/network/interfaces. Если он не существует, то создадим его, а если существует, то отредактируем:

nano /etc/network/interfaces

На экран консоли должно вывестись примерно следующее:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
#iface eth0 inet dhcp

Если у вас есть маршрутизатор с включенной функцией DHCP (т.е. происходит автоматическая раздача IP-адресов для подключающихся устройств), то достаточно в конфигурационном файле разкомментировать строку #iface eth0 inet dhcp. В противном случае, необходимо привести файл конфигурации к следующему виду:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
#iface eth0 inet dhcp

Adress – это IP-адрес, который вы присваиваете сетевой карте на интерфейсе eth0, netmask – маска подсети, gateway – шлюз, dns-nameservers – адреса DNS-серверов. Теперь необходимо активировать сетевой интерфейс:

ifup eth0

А также перезапустить сетевые службы:

/etc/init.d/networking restart

Теперь можно заново запустить команду ifconfig и убедиться, что интерфейс eth0 настроен, т.е. присутствуют указанные нами сетевые настройки. Для проверки работоспособности, можно пропинговать шлюз или интернет-ресурс, если у вас есть выход в Интернет:

ping 192.168.1.1 -с 5
ping yandex.ru -с 5

Должно быть выведено следующее:

PING yandex.ru (213.180.204.211) 56(84) bytes of data.
64 bytes from yandex.ru (213.180.204.211): icmp_req=1 ttl=50 time=15.1 ms
64 bytes from yandex.ru (213.180.204.211): icmp_req=2 ttl=50 time=14.1 ms
64 bytes from yandex.ru (213.180.204.211): icmp_req=3 ttl=50 time=14.3 ms
64 bytes from yandex.ru (213.180.204.211): icmp_req=4 ttl=50 time=13.8 ms
64 bytes from yandex.ru (213.180.204.211): icmp_req=5 ttl=50 time=13.9 ms

--- yandex.ru ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 13.804/14.286/15.125/0.479 ms

На этом настройка сети в Линуксе завершена.

Рекурсивное выставление владельца в Linux

В заметке «Рекурсивное выставление прав доступа в Linux» был дан совет, как с помощью нехитрых команд можно быстро изменить права доступа для папок и файлов во вложенных директориях. А вот еще одна задачка: нужно произвести манипуляции с изменением владельца папки/файла (через утилиту chown). Для решения поставленной задачи делаем:

chown -R user:group /каталог/

Данная команда изменит владельца на user, группу на group для соответствующей директории с вложенными файлами.

Если необходимо выставить владельца только для директорий, то:

find /каталог/ -type d -exec chown user:group {} \;

Если необходимо выставить владельца только для файлов, то:

find /каталог/ -type f -exec chown user:group {} \;

Рекурсивное выставление прав доступа в Linux

Иногда появляется необходимость установить определенные права доступа к папкам/файлам (через утилиту chmod), которые имеют большую степень вложенности каталогов. Приводимые ниже примеры помогут рекурсивно обойти все обозначенные каталоги и расставить необходимые права:

find /каталог/ -type f -exec chmod 644 {} \; – выставляет права на файлы

find /каталог/ -type d -exec chmod 755 {} \; – выставляет права на папки

Естественно, права нужно изменить на те, которые вам нужны.

Если хочется выставить права на определенные файлы с расширением, то:

find /каталог/ -type f -name \*.php -exec chmod 644 {} \;

*.php изменить на необходимое расширение.

Как прочитать ext3/ext4 из под Windows?

Linux — это хорошо, но иногда приходится переключаться на Windows, чтобы выполнять ряд задач, которые либо нельзя выполнить в Линуксе, либо выполнить можно, но очень геморройно.

В общем, мы перешли на Windows, и хотим что-то скопировать с диска, на котором сохраняли в Linux’е, но тут у новичков возникнет проблема – ведь диски Линукса не отображаются в  Windows, т.к. данная ОС их просто не распознает. Ей не понятно, что это за такая файловая система (к примеру, ext3 или ext4), которая используется в Linux. Ну и что теперь делать? Каждый раз переносить необходимые данные на флешку или другой сменный носитель, когда вы под Linux’ом, и потом снова копировать уже с флешки к себе, когда вы под Windows? Можно, конечно, оставить данные на флешке, и работать с ними напрямую со сменного носителя, но это не всегда бывает целесообразным.

Итак, проблемы обозначены, и теперь необходимо их решить. Они (решения), конечно же, существуют. На свете есть несколько полезных программ (бесплатных), которые как раз и позволяют читать файловую систему Linux из под Windows, совершая операции копирования в файловую систему Windows (но не обратно!). Хотя, этого, в принципе, будет достаточно.

Программы для чтения ext3/ext4 разделов в Windows:

  • Ext2Fsd (поддержка разделов ext2, ext3 и raserFS)
  • Ext2IFS (поддержка разделов ext2, ext3 и raserFS)
  • DiskInternal Linux Reader (поддержка разделов ext2, ext3 и raserFS)
  • ext2explore (поддержка разделов ext2, ext3, ext4 и raserFS)
Программа Ext2explorer

Про текстовый браузер

Сбылась мечта идиота! Именно так можно охарактеризовать то, что вчера я обнаружил. Благодаря установленным хинтам для Ubuntu, узнал, как можно просмотреть веб-сайт через консоль. Я об этом еще давно думал, но все время забывал погуглить данный вопрос. И вот теперь я знаю, как это сделать! Достаточно ввести такую команду (если у вас Ubuntu, то никаких дополнительных пакетов устанавливать не надо):

w3m http://www.yandex.ru

и на консоль будет выведен сайт, страшный, правда, но а чего еще было ожидать? Форматирование, в принципе, не очень сильно едет, к тому же, у браузера w3m есть много опций для настройки отображения веб-страниц.

Порыв в Интернете, нашел еще несколько схожих текстовых браузеров:

  • Elinks
  • Links
  • Emacs/W3
  • Lynx
Текстовый браузер w3m

Хинты для Ubuntu

Есть такой очень интересный пакет, который после установки может выводить подсказки (хинты) по работе с ОС Linux (в частности, с Ubuntu). Подсказок очень много, и будут полезны для изучения не только начинающим линуксоидам, но и даже «продвинутым» пользователям.

Для того, что установить пакет, необходимо ввести в консоль:

sudo apt-get install fortunes-ubuntu-server

Чтобы получить подсказку, достаточно набрать, опять же в консоли, следующую команду:

fortune ubuntu-server

Если хочется лицезреть хинты на русском языке, то:

fortune ubuntu-server-tips-ru

Можно сделать так, чтобы каждый раз при открытии консоли в начале показывалась подсказка:

echo "ubuntu-server-tip" >> ~/.bashrc

Или же тоже самое, но уже на русском (правда, тут есть глюк – сначала выводится хинт на английском, а под ним уже совсем другой хинт, но уже на русском):

echo 'fortune' >> ~/.bashrc

А если хочется получать всплывающие уведомления на своем рабочем столе, то нужно скачать и установить данный пакет.

Вывод хинтов на консоль

Про команду top

Помню, когда у нас в университете была дисциплина под названием «Операционные системы», первая лабораторная была связана с ознакомлением процессов в ОС Ununtu. Преподаватель расхваливал нам Убунту (на тот момент релизом была восьмая версия), говорил, что это очень чудная ОС, которая установилась даже на его старенький лаптоп. Список процессов мы смотрели через команду top.

С командой top придется столкнуться, наверно, всем, кто постигает азы администрирования линуксом. При вводе в консоли команды top, на экран выводится информативная таблица, которая обновляется каждые 2 секунды (по умолчанию, процессы сортируются по проценту использования процессорного времени). Ниже приводится описание столбцов, для чего они нужны и что показывают.

Вывод информации о процессах через команду top
  • PID (process ID) — идентификатор процесса.
  • USER — пользователь, от которого запущен данный процесс (root — суперпользователь).
  • PR — текущий приоритет процесса. Чем меньше цифра, тем выше приоритет.
  • NI — приоритет, который можно выставить командой nice. Может быть от −20 (наивысший приоритет) до 19.
  • VIRT — общее количество виртуальной памяти, используемой программой (в килобайтах).
  • RES — текущее использование оперативной памяти.
  • SHR — количество разделяемой (shared) памяти программы (в килобайтах).
  • S — состояние процесса. Может быть:
    • D — состояние ожидания;
    • R — процесс выполняется процессором или стоит в очереди на выполнение;
    • S — состояние «сна»;
    • T — выполнение процесса приостановлено;
    • Z — состояние «зомби».
  • %CPU — процент доступного времени процессора, которое использовала запущенная программа.
  • %MEM — процент доступной памяти, которое использовала запущенная программа.
  • COMMAND — название команды, под которой работает процесс.

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

  • Загрузка системы (первая строка):
    • текущее время;
    • up time — время работы системы после включения питания;
    • user — количество пользователей, которые в данный момент работают в системе;
    • load average — средняя загрузка системы  (минута, пять минут и пятнадцать минут назад).
  • Процессы (вторая строка):
    • total — общее количество процессов в системе;
    • running — количество процессов, выполняемых процессором или стоящих в очереди на выполнение;
    • sleeping — количество процессов, ожидающих какого-либо события ввода-вывода;
    • stoped — количество приостановленных процессов;
    • zombie — количество процессов, находящихся в состоянии «зомби».
  • Состояние процессора (третья строка):
    • us — процент использования процессорного времени программами пользователей;
    • sy — процент использования процессорного времени процессами ядра Linux;
    • ni — процент использования процессорного времени программами с измененным приоритетом;
    • id — простой процессора;
    • hi — процент времени, которое процессор тратит на обработку прерываний на уровне железа (IRQ);
    • si — то же, что и hi, только для софт-прерываний;
    • st — процент «уворованного» времени.
  • Использование оперативной памяти (четвертая строка):
    • total — общее количество оперативной памяти;
    • used — количество использованной оперативной памяти;
    • free — количество свободной оперативной памяти.
  • Использование swap-пространства (пятая строка):
    • total — общее количество swap-пространства;
    • used — количество использованного swap-пространства;
    • free — количество свободного swap-пространства.

Управлять top’ом можно, используя следующие команды:

  • a — переключить количество одновременно выводимых на экран окон (по умолчанию показывается одно окно);
  • d или s — установить значение задержки перерисовки экрана (по умолчанию 3 секунды);
  • l — включение/выключение поля «средняя загрузка системы» в заголовке;
  • t —  включение/выключение полей описания процессов и загрузки процессора в заголовке;
  • m — включение/выключение полей, описывающих использование оперативной памяти и файла подкачки;.
  • b — включение процессов, выполняемых процессором (состояние Run);
  • c — включение/выключает отображение имени программы/полной командной строки в поле COMMAND;
  • i — включение отображение только процессов, выполняемым процессором, или всех процессов системы;
  • x — включение/выключает подсветку колонки, по которой происходит сортировка процессов;
  • z — включение/выключает цвет;
  • u — показать процессы, выполняемые определенным пользователем;
  • k — послать сигнал процессу;
  • r — изменить значение поля nice (приоритет процесса);
  • Пробел — заставить программу перечитать список процессов (т.е. обновить экран).

У команды top есть аналоги, но о них в следующий раз.

Шпаргалка по командам в Debian

Официальная памятка по наиболее часто используемым командам в ОС Debian располагается по этому адресу. Пригодится новичкам, которые только постигают азы линукса.

О том, как удалить осиротевшие пакеты в Linux

Когда мы устанавливаем какие-нибудь программы (пакеты), то часто требуется установить и зависимые пакеты, без которых программа просто не установится. С установкой все предельно понятно, для этого достаточно выполнить команду:

apt-get install имя_пакета

Когда программа нам больше не нужна, целесообразно ее удалить, для этого можно сделать так:

apt-get remove имя_пакета

Опция remove удаляет файлы пакета, но оставляет файлы конфигурации (настроек). Плюс в таком удалении очевиден: возможно, через какое-то время вы захотите снова установить данную программу, и вам уже не придется поновой производить ее настройки, т.к. все файлы с настройками у вас уже имеются. Если же вы точно знаете, что не будете повторно устанавливать программу, то в системе остается мусор, который никому не нужен. В связи с чем, в такой ситуации рекомендуется удалять программы следующим образом:

apt-get purge имя_пакета

Тогда удалится сам пакет и его настройки.

А теперь вернемся к зависимым пакетам. Они все равно останутся, если даже вы удалите программу. Поэтому, чтобы удалить зависимые пакеты, которые уже системе не нужны, следует ввести следующую команду:

apt-get autoremove

Если при установке/удалении возникли фатальные ошибки, то можно ввести команду apt-get check, которая обновит кэш и проверит целостность зависимостей пакетов.

Более подробно о командах управления пакетами можно прочитать здесь.