воскресенье, 2 декабря 2012 г.

Удаление старых ядер

Если вы хотябы раз в неделю обновляете систему, то имеете большое количество старых версий ядра, которыми чаще всего не пользуетесь. Имеет смысл иметь в запасе возможнось загрузить предыдущую (рабочую) версию ядра, если на новом ядре что-то перестало работать. Но когда их собирается 5 - 10 штук, тогда имеет смысл подумать о том, как бы почистить ситтему от мусора. И здесь оказывается не все просто, потому что каких-то штатных средств для этого не предусмотрено. Но решение есть и оно довольно несложное - несколько команд в консоли от рута.

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

# emerge -ac

Эта команда выведет список подлежащих удалению (по мнению команды) пакетов. Если вы найдете в этом списке используемые вами программы, то просто внесите их в файл /var/lib/portage/world, чтобы emerge не пытался в будущем удалить их, после чего перезапустите команду emerge -ac и согласитесь с предложением. Например, чтобы занести в /var/lib/portage/world программу media-video/mplayer нужно выполнить команду:

# echo media-video/mplayer >> /var/lib/portage/world

Команда emerge -ac удаляет только пакеты программ, но не трогает установленные в систему ядра и их модули. Вот для этой цели и нужны дополнительные телодвижения. Нужно удалить исходники старых ядер. Например, для удаления всех ядер ветки 3.5 нужно выполнить следующее:

# rm -rf /usr/src/linux-3.5.*

а затем удалить директорию с модулями этих ядер:

# rm -rf /lib/modules/*3.5.*

Если у вас каталог /boot на отдельном разделе (обычно небольшого размера 100 - 500 MB), то большое количество старых ядер может помешать установке нового (тупо не хватет места). Это, наверное, является главной причиной для чистки старых ядер. Поэтому удаляем ненужные файлы из каталога /boot:

# rm -rf /boot/*3.5.*

Неиспользуемые версии ядер удалены, но при загрузке все они как-бы доступны. Чтобы исправить это недоразумение нужно обновить конфиг загрузчика Grub, выполнив команду:

# grub-mkconfig -o /boot/grub/grub.cfg

которая заново создаст файл /boot/grub/grub.cfg и запишет туда все существующие ядра и обнаруженные ОСи.

вторник, 13 ноября 2012 г.

Гибернация в Calculate Linux

Возвращаемся к теме спящего режима под Linux. После установки дистрибутива CLD Calculate Linux я столкнулся с проблемой неработоспособности спящего и ждущего режимов. А именно: комп как-будто бы уходил в сон, но при попытке просыпания тупо зависал не реагируя ни на какие мои действия (кроме, конечно, кнопочки перезагрузки на системнике :-)).

Все эти неприятности продолжались до обновления ядра до версии 3.6.6. Методом проб и ошибок была выявлена причина - ветка ядра 3.5 как-то хреново работает с питанием. По крайней мере 4 редакции были протестированы в процессе обновлений - все корявые. Конечно же правка ядра мне пока не под силу, поэтому я сильно порадовался переходу на ветку 3.6.

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

В Calculate для управления питанием используется pm-utils - набор скриптов для взаимодействия с подсистемой управления питанием ядра. Коллекция скриптов свободно модифицируема и позвляет довльно тонко управлять как всей системы так и отдельных модулей. Но в моем случае всех этих тонкостей не понадобилось. А понадобилось найти основной умолчальный конфиг - /usr/lib/pm-utils/defaults и отредактировать его изменив (или добавив) одну строчку:

# nano /usr/lib/pm-utils/defaults

Оказалось достаточным раскоментировать одну строчку, со вполне понятным названием:

HIBERNATE_MODE="shutdown"

По умолчанию эта опция установлена в "platform", который, по идее, и должен выключать комп, но в моей системе, видимо, какие-то странные настройки и при умолчальном значении происходит перезагрузка.

Мне кажется странным выбор умолчального местоположения конфига, тем более, что в каталоге /etc/pm/config.d/ могут быть расположены дополнительные файлы конфигурации. Но разрабам, конечно же, виднее :-)

По этой ссылке расположено чуть более подробное описание pm-utils.

воскресенье, 11 ноября 2012 г.

Вывод с заданной точностью в C++

Цель: вывести число с заданной точностью n стандартными средствами C++, т.е. не используя сишную библиотеку stdio.

Для начала установим режим вывода с фиксированной точкой, что делается модификатором std::fixed. Затем, с помощью модификатора std::setprecision(n), устанавливаем точность вывода n. Для работы последнего модификатора необходимо подключить заголовочный файл iomanip. Таким образом код будет выглядеть приблизительно так:
   
#include <iomanip>
//...
std::cout << std::fixed << std::setprecision(n) << something;

Или, чтобы не писать постоянно "std::", так:
   
#include <iomanip>
using namespace std;
//...
cout << fixed << setprecision(n) << something;

воскресенье, 7 октября 2012 г.

Проблемы с Х-ами после обновления

В одной из предыдущих заметок был описан процесс обновления системы Calculate Linux. Если во время этого процесса обновляется также и ядро, то необходимо проделать еще дополнительные действия.

В моем случае после обновления перестала загружаться графика. Это произошло потому, что драйвера для моей встроенной видеокарты Nvidia представлены в виде модуля ядра. Модуль был собран для предыдущей (не обновленной) версии ядра и с новым ядром перестал запускаться. В этом случае помогает пересборка модулей ядра, выполняемая командой:

# module-rebuild -X rebuild

Но такой фокус проходит не всегда. Например, для видеокарты intel (драйвера встроены в ядро) нужно пересобрать несколько пакетов: xorg-server, xorg-drivers и xf86-video-intel. Делается это командой:

# emerge -1 xorg-server xorg-drivers xf86-video-intel

Флаг -1 нужен, чтобы не записывать в world имена устанавливаемых пакетов, поскольку эти пакеты уже содержатся в мета-пакетах дистрибутива. 

Переустановка одного только драйвера xf86-video-intel ситуацию не исправляет.

Могу предположить, что описанные действия (с небольшими изменениями) могут применяться практически для всех видеокарт.

суббота, 6 октября 2012 г.

Добавление Windows в меню загрузки Grub2

При очередной загрузке компьютера было обнаружено отсутствие пункта загрузки Windows в меню Grub. Встал вопрос - как его туда добавить.

После недолгих поисков было выяснено, что в дистрибутиве установлен Grub2. Как известно этот загрузчик не позволяет напрямую редактировать файл конфигурации (вообще-то позволяет, просто при очередном обновлении он его перезапишет) - он создает его автоматически с помощью скриптов, расположенных в каталоге /etc/grub.d. Посмотрим, что там есть:

# ls /etc/grub.d

00_header
10_linux
20_linux_xen  
30_os-prober
39_memtest86+
40_custom
41_custom

Скрипты из этого каталога выполняются по порядку от меньшего номера к большему.

Скрипт 00_header считывает настройки из файла /etc/default/grub. Там содержатся общие настройки вроде разрешения экрана при загрузке, фоновой картинки и т.п.

Скрипт 10_linux проверяет какие есть ядра linux и добавляет их в меню загрузки. 20_linux_xen - специфический скрипт для систем, работающих с XEN виртуализацией.

Скрипт 30_os-prober проверяет наличие других операционных систем, таких как Windows (требует наличия установленного  sys-boot/os-prober), и добавляет их в меню.

Скрипт 39_memtest86+ добавляет в меню пункты для проверки памяти. Ну а номера 40 и 41 предназначены для дополнительных пользовательских скриптов.

Поскольку все скрипты на месте, то нам осталось только сгенерировать конфигурационный файл. Делается это командой:


# grub-mkconfig -o /boot/grub/grub.cfg

которая пересоздаст файл /boot/grub/grub.cfg. Это тот самый файл, который можно отредактировать и вручную, но прийдется это делать после каждого обновления. 

пятница, 5 октября 2012 г.

Обновление системы

Для поддержания системы в актуальном состоянии необходимо обновлять установленные программы. Для установки программ (равно как и их обновления) используется программа emerge. Но сначала необходимо обновить локальную базу прорграмм с помощью команды

# eix-sync

Эта команда выполняет последовательно обновление оверлеев, портежей и базы пакетов eix.

По умолчанию в Calculate используется бинарный профиль - он подойдет для тех, кто не любит особенно заморачиваться, поскольку отлично работает. Но настоящий линуксоид хочет получить все. Чтобы узнать какой профиль выбран в нашей системе нужно выполнить команду

# eselect profile list

Она выдаст нумерованный список доступных профилей, где звездочкой помечен выбранный для нашей системы. Бинарные профили помечены "binary". Чтобы изменить профиль выполним команду

# eselect profile set X

где X - номер профиля.

Теперь можно обновлять систему. Запускаем команду

# emerge -uDNa --keep-going world

Флаг -u, собственно, и означает, что мы хотим обновить систему.

Флаг -D (или --deep) заставляет emerge обновлять не только явно установленные нами пакеты, но и их зависимости.

Если мы меняли USE-флаги, то нужно добавить флаг -N (или --newuse). Тогда Portage проверит требует ли изменение устрановки новых пакетов или перекомпиляции существующих.

Флаг -a (--ask) перед обновлением выведет список пакетов и спросит разрешения продолжить установку.

Обычно при установке если какой-нибудь пакет собирается с ошибкой, команда emerge выводит эту ошибку в консоль и завершается. Флаг --keep-going заставляет emerge пересчитать зависимости заново после ошибки и продолжить установку тех пакетов, для которых ошибочный пакет не является необходимым.

После обновления может случиться нарушение зависимостей. Чтобы найти и исправить их можно (или даже нужно) выполнить команду:

# revdep-rebuild

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

# dispatch-conf

После запуска программа будет выводить на экран содержимое подлежащего изменению файла с пометками "+", если эта строка добавлена в новом файле и "-", если строка в новом файле удалена. Чтобы согласится с изменениями и использовать новый конфигурационный файл нужно нажать "u", а чтобы пропустить изменение настроек - "z".

Источник здесь.

четверг, 4 октября 2012 г.

Оптимизация Calculate

На днях удалил Debian со своего домашнего копа и установил дистрибутив Calculate Linux 12.0.3 (номер версии не важен - у дистриба непрерывный цикл обновлений). Не потому, что Debian так уж плох, просто Gentoo-подобные дистрибутивы вызывают в моей душе больший трепет.

В этой статье дан своеобразный каркас для проведения оптимизации Gentoo подобного дистрибутива. Это значит, что небольшие изменения будут описаны прямо здесь, а изменения сложные, требующие пояснений, многочисленные и т. п. будут описаны в отдельных статьях. Здесь будут приведены ссылки на эти статьи - своего рода оглавление.

Начнем настройку производительности с инструкции на сайте дистрибутива.

Первым делом прописываем параметр rc_parallel="YES" в файле /etc/rc.conf, что позволит (как обещают разработчики) выиграть несколько секунд при загрузке благодаря "распараллеливанию" запуска процессов.
  
Добавляем PRELINKING="yes" в файл /etc/conf.d/prelink, но там уже все есть :-) Prelink - это механизм предварительного связывания пакетов.

И, наконец, самое главное - флаги компиляции. Это то, в чем вся сила Gentoo-подобных дистрибутивов - возможность влиять на зависимости, размер, доступные функции (и т. п.) устанавливаемого (точнее, компилируемого) ПО. В общем, вся та гибкость которую предоставляет Linux (свободное ПО). Начать стоит с настройки файла /etc/make.conf.

Для повышения быстродействия большое значение имеют параметры жесткого диска HDD. Здесь есть два пути. Первый - настройка таблицы разделов, файловых систем на разделах, и файла /etc/fstab. Второй - настройка параметров жесткого диска с помощью программы hdparm. Если у вас диск SSD, то настройка производится по другим правилам - многое не имеет смысла, что-то работает по другому, присутствуют параметры отсутствующие для HDD.

Следующий не менее важный, но самый сложный этап - настройка ядра.

Получаем слудующее оглавление:

  1. Настройка /etc/make.conf.
  2. Настройка HDD.
  3. Настройка ядра.

воскресенье, 16 сентября 2012 г.

Увеличение Swap'а

В определенный момент стало не хватать раздела подкачки объемом 2ГБ (это при 2 же ГБ оперативной памяти). Не хватать в основном при гибернации - не всегда удавалось удачно уйти в спящий режим. Решено было увеличить swap до 4 ГБ, как везде советуют удвоенный размер ОЗУ.

Возможности увеличения существующего раздела нет, поэтому создадим новый раздел (размером те же 2 ГБ). Я воспользовался для этого программой cfdisk:

# cfdisk /dev/sda

Команда покажет список разделов диска /dev/sda. Там у меня припасено порядка 60 ГБ свободного места в конце диска. Наводим выделение на свободное пространство (стрелочками "вверх", "вниз"). Выбираем в меню пункт "new" (стрелками "влево", "вправо") и указываем размер раздела в мегабайтах. После этого выбираем пункт меню "Write" для записи изменений на диск (соглашаемся вводом "yes"), а затем выбираем "Quit".

Теперь создадим раздел подкачки:

# mkswap /dev/sdaX

X - номер созданного раздела. Теперь можно подключить раздел:

# swapon /dev/sdaX

и проверяем подключен ли новый раздел:

# cat /proc/swaps

Команда покажет список подключенных swap разделов.

Ну и нелишним будет прописать раздел в файл /etc/fstab, чтобы подключался при загрузке:

# nano /etc/fstab

и дописываем в файл строчку:


/dev/sdaX  none  swap  sw  0  0

Вместо /dev/sdaX можно (и даже нужно) указать UUID раздела. UUID раздела выдает команда mkswap при создании swap'а. Если этого не произошло, то можно воспользоваться командой blkid:


# blkid /dev/sdaX

Ну вот и все, задание выполнено.

Разборки с Гибернацией

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

На моей системе для спящего режима используется команда s2disk из пакета uswsusp. Судя по всему что-то не так в конфигурационном файле программы.

Настройки uswsusp хранятся в файле /etc/uswsusp.conf. Открываем его на редактирование в любимом редакторе с правами root'а:

# nano /etc/uswsusp.conf

Интересующая нас опция - shutdown method - задает действие, выполняемое после записи образа памяти на диск. По умолчанию значение опции - "platform". Нам нужно указать значение "shutdown":

shutdown method = shutdown

Теперь все в порядке компьютер нормально выключается.

Из полезных параметров конфигурационного файла стоит отметить еще resume device. Его значение  - это имя swap раздела, на который сохраняется образ оперативной памяти. В моей системе - это /dev/sda5:

resume device = /dev/sda5

Статья, натолкнувшая меня на написание сегодняшней заметки находится здесь. Ну и, конечно, главный источник справочной информации в Linux - команда man:

# man uswsusp.conf 

P. S. Через пару дней снова начались проблемы. Комп уходил в сон, но потом загружался с нуля. А еще через пару дней я снес дома Debian и поставил Calculate. Теперь наслаждаюсь перезагрузкой после сна вместе с отсутствием восстановления из спящего режима. Вобщем, в ближайшем будущем предстоят разборки теперь уже с pm-utils.

суббота, 15 сентября 2012 г.

Оптимизация подкачки

Работая в Linux я заметил, что раздел подкачки используется в том же объеме как и оперативная память. И это не смотря на то, что оперативной памяти еще много( приблизительно половина от имеющейся). Тогда у меня возник вопрос: как на это можно повлиять? Ну а то, что повлиять можно, я не сомневался - это же Линукс и здесь все можно настроить.

Вообще-то я не сильно заморачивался по этому поводу пока не встретил на форуме интересное замечание. Там была рекомендация выставить значение параметра vm.swappiness=10.

Swappiness - это параметр, контролирующий перемещение процессов ядром из физической памяти в своп раздел. Понятно, что оперативная память быстрее, чем жесткий диск. Поэтому хотелось-бы, чтобы оперативная память использовалась по максимуму.

Значения параметра swappiness - это число от 0 до 100. Значение 0 означает, что своп не будет использован, пока физическая память не заполнится до предела. Значение 100 заставляет ядро агрессивно свопировать процессы на диск.

Чаще всего значение параметра по умолчанию устанавливается равным 60. Значение равное 10 представляется мне более оптимальным. А теперь о том, как это значение выставить.

Для начала узнаем каково же значение параметра выставленное по умолчанию:

# cat /proc/sys/vm/swappiness

Для того, чтобы установить значение параметра, открываем из под учетной записи root на редактирование файл /etc/sysctl.conf:

# nano /etc/sysctl.conf

и добавить в него строку:

vm.swappiness=10

После перезагрузки значение параметра изменится на указанное нами. Чтобы изменить значение до перезагрузки необходимо выполнить (под root) следующую команду:

# sysctl vm.swappiness=10

Указанные операции должны пойти на пользу повышению быстродействия среднестатистическому компьютеру.

пятница, 14 сентября 2012 г.

Отключение IPv6 в ядре Debian Linux

Занимаясь настройкой шлюза на Debian машине ко мне пришло понимание, что у меня присутствует лишняя функциональность в виде поддержки протокола IPv6. Заметок в интернете по этому поводу существует довольно много, но все-таки и я решил внести свою лепту.

Итак цель - отключить поддержку IPv6 в ядре Linux. Способ подходит для владельцев ядер 2.6.31 и выше. В этих ядрах предусмотрена возможность отключить IPv6 опцией при загрузке. Однако сначала необходимо убедиться что IPv6 включен. Пишем в консоли под root'ом:


# ifconfig | grep inet6

Если указанная команда ничего не вывела на экран, значит IPv6 у вас не используется, иначе читаем далее.

Если у вас установлен загрузчик GRUB Legacy(не прогрессивный но понятный), то в конфигурационном файле /boot/grub/menu.lst в опциях загрузки ядра дописываем ipv6.disable=1.

Если же вы счастливый обладатель прогрессивного загрузчика GRUB2, тогда идем в /etc/default/grub и ищем строку с опциями загрузки ядра по умолчанию (что-то вроде "quiet splash"). Дописываем к имеющимся опцию ipv6.disable=1.
Затем запускаем от root'а:

# update-grub

Затем перезагружаем компьютер и проверяем настройки с помощью утилиты ifconfig. В выводе не должно быть IPv6 адресов. 
Еще один способ проверки:

# netstat -npl | grep -E "tcp6|udp6" | wc -l

Если в выводе команды "0", значит все в порядке и IPv6 отключен.

Настройка iptables для шлюза

В предыдущей заметке мы настроили сетевые интерфейсы на компьютере шлюзе. Сегодня сделаем возможным прохождение пакетов через шлюз к клиенту. Делается это с помощью встроенного в ядро Linux файервола iptables.

Умолчальные настройки нас не устраивают. На мой взгляд лучшее решение - собрать все настройки iptables в одном файле. И перво наперво этот файл нужно создать. Все дальнейшие действия выполняются под личиной Суперпользователя.

Создаем файл /etc/init.d/rc.firewall:

# touch /etc/init.d/rc.firewall

Наш файл является сценарием оболочки, поэтому делаем его исполняемым следующей командой:

# chmod 755 /etc/init.d/rc.firewall

Чтобы все работало после перезагрузки, помещаем наш скрипт автозагрузку при помощи команды:

# update-rc.d rc.firewall start 40 S . stop 89 0 6 .

Вместо непонятных буковок "start 40 S . stop 89 0 6 ." можно написать default, но так больше контроля.

Если в дальнейшем нам понадобится удалить скрипт из автозагрузки пишем следующее:


# update-rc.d -f rc.firewall remove

Теперь можно приступить к написанию самого скрипта:

# nano /etc/init.d/rc.firewall

Для начала сообщим ядру, что оно имеет дело со сценарием. Делается это добавлением в начало файла строки

#!/bin/sh

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

IPT="/sbin/iptables"    # переменная, задающая путь к файлу запуска iptables

INET_IFACE="eth0"    # ваш внешний сетевой интерфейс

Мы делаем крутую программу, поэтому реализуем возможность задавать параметры. Запихнем правила для iptables в функцию start_fw():


start_fw()
{             # начало функции

Первым делом включим перенаправление пакетов через ядро:

echo 1 > /proc/sys/net/ipv4/ip_forward

Сбросим правила и удалим цепочки:

$IPT -F
$IPT -X

Зададим политики по умолчанию:

$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT

Разрешить все движения пакетов не самое удачное решение, но поскольку мой компьютер является как шлюзом так и рабочей машиной, то пускай будет так. Настройку защиты от всякого рода опасностей себя любимого мы пока не рассматриваем. Для нас важно разрешающее правило для проходящих пакетов(FORWARD), хотя и это можно настроить. Но для простейшего случая сойдет.

Ну и наконец самое главное правило:

$IPT -A POSTROUTING -t nat -s 192.168.1.0/24 -o $INET_IFACE -j MASQUERADE
}         # конец функции start_fw()

Здесь создается новое правило постмаршрутизации таблицы NAT со всей локальной сети черев внешний интерфейс. Все компьютеры локальной сети теперь имеют доступ в интернет без ограничений. Хотя имеет смысл заметить, что DC клиенты, допустим, могут соединятся только в пассивном режиме. Для работы в активном режиме необходимо настроить прозрачный NAT. Но тема пребует более глубокого осмысления.
MASQUERADE позволяет корректно работать с динамическим внешним ip адресом.

Переходим к реализации параметров. Прийдется немного попрограммировать. Пишем:


case "$1" in

Для того, чтобы наш файервол можно было запустить командой /etc/init.d/rc.firewall start пишем следующую ветвь условия case:


start)   echo -n "Starting firewall"
            start_fw
            echo "."
            ;;

Чтобы можно было остановить файервол(когда возникнет такое желание) командой /etc/init.d/rc.firewall stop пишем:


stop)    echo -n "Stopping firewall"
            iptables -F
            iptables -X
            echo "."
            ;;

Ну и, на всякий случай, защита от неправильных параметров:


*)         echo "Usage: /etc/init.d/rc.firewall start | stop"
            exit 1
            ;;
esac    # закрываем условный оператор
exit 0   # успешное завершение

Вот и все. Простейший шлюз настроен. Полностью файл /etc/init.d/rc.firewall будет выглядеть так:


#!/bin/sh

IPT="/sbin/iptables"    # переменная, задающая путь к файлу запуска iptables
INET_IFACE="eth0"    # ваш внешний сетевой интерфейс

start_fw()
{             # начало функции

echo 1 > /proc/sys/net/ipv4/ip_forward

$IPT -F
$IPT -X

$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT

$IPT -A POSTROUTING -t nat -s 192.168.1.0/24 -o $INET_IFACE -j MASQUERADE
}         # конец функции start_fw()
  
case "$1" in

stop)    echo -n "Stopping firewall"
            iptables -F
            iptables -X
            echo "."
            ;;

stop)    echo -n "Stopping firewall"
            iptables -F
            iptables -X
            echo "."
            ;;

*)         echo "Usage: /etc/init.d/rc.firewall start | stop"
            exit 1
            ;;

esac    # закрываем условный оператор
exit 0   # успешное завершение

Следует также заметить, что если у вас в локальной сети не реализован DNS сервер, то в настройках клиента нужно указать DNS сервера провайдера, или, например, DNS сервер Google(8.8.8.8)

четверг, 13 сентября 2012 г.

Настройка Debian шлюза

Недавно мой сосед приобрел себе компьютер. А поскольку входной канал интернета только один(а второй заводить не резон), пришлось настраивать шлюз на домашнем компе(Debian). Решение временное, будет работать до покупки роутера.

Начинать следует с установки второй сетевой карты. Этот этап не должен вызвать затруднений: берем сетевую карту и совмещаем контактную планку с PCI разъемом материнской платы. Естественно это следует делать при отключенном электропитании ПК(глупые разработчики PCI порта не позаботились о горячем подключении :-) ).

Загружаемся и настраиваем сетевуху. Сетевая карта подключенная к Инету называется у меня eth0(адрес и настройки выдаются автоматически с привязкой к MAC адресу сетевой карты), а карта смотрящая в локальную сеть - eth1. Сетевые интерфейсы настраиваются в файле /etc/network/interfaces.

Вводим под рутом(суперпользователем, root): 

# nano /etc/network/interfaces

И приводим файл к виду:

auto lo  
iface lo inet loopback  

auto eth0 

auto eth1 
iface eth1 inet static 
address 192.168.1.1  
netmask 255.255.255.0 

Пояснения к содержимому:
  • lo, eth0, eth1 - сетевые интерфейсы: lo - интерфейс обратной связи(нам сейчас не нужен), eth0 - подключение к интернет, eth1 - в локальную сеть;
  • auto - означает, что интерфейс будет инициализирован при загрузке компьютера;
  • static - фиксированный ip-адрес(не динамический);
  • address - адрес, присваиваемый интерфейсу;
  • netmask - маска сети(для локальной сети самое оно).

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

# /etc/init.d/networking restart

После всего этого локальная сеть работает, но нужно еще настроить прохождение пакетов через шлюз. Для этого используем встроенный в ядро файервол iptables, но про это в следующий раз.

По ходу дела возникло сильное желание отключить работу IPv6(ну не нахожу я ему применения), но об этом тоже в следующий раз.

среда, 4 июля 2012 г.

Первый ознакомительный

Поздравляю себя с началом ведения блога.

В этом блоге будут описаны рецепты решения проблем, возникающих при работе в Линухе - те решения, которые применил я. Эти записи нужны в первую очередь мне - чтобы не забыть чего-нибудь, и долго потом не вспоминать. Ну и конечно же, мне будет очень лестно узнать, что мои писульки пригодились еще кому-либо.

Немного о себе. Моя деятельность напрямую не связана с Линухом. Я занимаюсь обслуживанием печатающей техники(в основном заправкой картриджей). Но, по мере сил, стараюсь поддерживать на работе работоспособность нескольких компьютеров(с установленной свободной ОСью).

О знакомстве с Линухом. Первое знакомство состоялось во время учебы в университете в начале нулевых(о как прекрасен был GNOME в то время - не чета нынешнему). Дистрибутив, помнится, был АльтЛинукс. Побудительным мотивом стал вопрос "а есть альтернатива мелкомягким окнам пиратского происхождения?" И альтернатива есть!

Каюсь. Даже сейчас, когда меня практически полностью удовлетворяет Linux,  на моем домашнем компьютере второй системой установлена пиратская Винда, а на ней - пиратские игрушки. Игрок я не великий, поэтому загружаюсь в Винду очень редко. Есть у меня и лицензионные Окна - предустановленные на нетбуке. Посещаю я их так же часто как и пиратскую версию. Отсюда простой вывод. То, что мне хотят продать Операционку(которую я могу скачать с какого-нибудь трекера бесплатно) не делает ее ценнее истинно свободной Оси в потребительском смысле.

На данный момент я использую два дистрибутива - Calculate Linux и Debian(testing). Calculate Linux установлен на нетбуке. Он основан на знаменитом "конструкторе" Gentoo. Все программы и систему можно собрать из исходников(даже на таком недопроцессоре, как Atom), но существует и бинарный репозиторий. Debian же используется дома. На обоих дистрибутивах установлен десктоп KDE - теперешний ГНОМ убог, Xfce непригляден, LXDE не исследован, а с менеджерами окон как-то не складывается, хотя тема интересная.