Подписка на блог

делю на ноль, обогащаю уран
Позднее Ctrl + ↑

Быстро и просто добавить пользователя

# useradd -m -G users,audio,wheel test -p 123456

-m — создать домашний каталог

-G — сделать членом нескольких групп. Группа audio позволит работать с звуковыми платами, группа wheel позволит выполнять команду su

test — тут любое имя пользователя.

-p 123456 — это пароль

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

Для начала нужно обновить локальное дерево портежей. В дереве имеются ebuild-ы, которые отвечают за правильную сборку пакета. Это аналогично обновлению сорс-листа aptitude update в debian-based системах. Собственно:

# emerge --sync

Теперь обновляется сама система:

# emerge --update --ask world

Параметр `—ask` выведет сначала на экран список пакетов, которые будут обновлены и спросит нужно ли обновляться. C `—update` и `world` понятно.

Еще можно делать так:

# emerge --update --deep world

Параметр `—deep` дает указание обновиться полностью, с зависимостями, когда просто `—update` обновляет пакеты, которые явно установлены мною.

Второй пример стоит делать изредко. Первый — хоть каждый день.

Столкнулся с тем, что emerge уведомил о том, что нужно обновить еще конфигурационные файлы *.conf, которые находятся в `/etc`:

 * IMPORTANT: 2 config files in '/etc' need updating.
 * See the CONFIGURATION FILES section of the emerge
 * man page to learn how to update config files.

Обновляется с помощью `etc-update` либо `update-etc`, что по сути одно и тоже, которые покажут примерно такое:

polatov-desktop / # etc-update
Scanning Configuration files...
The following is the list of files which need updating, each
configuration file is followed by a list of possible replacement files.
1) /etc/locale.gen (1)
Please select a file to edit by entering the corresponding number.
              (don't use -3, -5, -7 or -9 if you're unsure what to do)
              (-1 to exit) (-3 to auto merge all remaining files)
                           (-5 to auto-merge AND not use 'mv -i')
                           (-7 to discard all updates)
                           (-9 to discard all updates AND not use 'rm -i'): 

Можно выбирать каждый пакет по его порядковому номеру, просматривать, обновлять, отменять и прочее. А можно набрать `-1`, чтобы просто выйти. `-3` — обновит все автоматически, но будет задавать вопросы про каждый конфиг отдельно, отвечать на вопросы с помощью букв `y` и `n` (да и нет соответственно). `-5` обновит без вопросов. `-7` удалит все, но будет спрашивать, `-9` удалит предложенные обновления конфигурационных файлов без вопросов.

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

Конфигурирование nfs-клиента в OpenBSD

Имеется nfs-ресурс, который нужно монтировать. Делается так:

  1. Меняем значение переменной. Здесь указывается количество одновременных потоков ввода-вывода.
    sysctl -w vfs.nfs.iothreads=4
  2. Далее раскомментируем строку `vfs.nfs.iothreads=4` в `/etc/sysctl.conf`. Второй раз это делается для того, чтобы не делать этого вручную как в первый раз, после перезагрузки системы.
  3. В `/etc/fstab` задал опции монтирования nfs-ресурсов:
    10.100.100.253:/srv/smb/mail /samba/shares/mail nfs ro,auto,dev,async,nouser,suid 0 0

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

В OpenBSD нет общей опции `defaults`, как в Linux, в которую входит набор нескольких опций сразу. Поэтому тут я поименно указал опции, которые входят в `defaults`.

Захотелось разузнать поподробнее об этих опциях `ro,auto,dev,async,nouser,suid`. Вот что мне удалось узнать/понять:

  • `ro` — read-only. Понятно, монтирование в режиме «только чтение».
  • `auto` — разрешает монтироваться по команде `mount -a`. Проще говоря, автомонтирование.
  • `dev` — позволяет различать файловые системы символьно-специальных и блочно-специальных устройств. Которые в свою очередь означают:
    • блочно-специальное устройства — устройства с файловой системой, использующие кластер-блок (магнитные диски, флешки и т.п).
    • символьно-специальные устройства — устройства, не использующие кластер-блок (терминал, некоторые виды магнитной ленты и т.п.). На самом деле, это очень сложная тема, о которой, может быть, я почитаю позже.
  • `async` — все операции ввода/вывода будут выполняться асинхронно. Думаю, это должно облегчать потоки «туда-сюда». Становится легче обмениваться потоками информации.
  • `nouser` — запрещает обычному пользователю (не-root) монтировать эту файловую систему.
  • `suid` — разрешает SUID и SGID.

Конечно, опций монтирования очень много, но я остановился только на тех опциях, которые входят в linux-опцию `defaults`.

Сеть в Gentoo

Сеть у меня настроенна таким образом:

  1. В модеме прописан локальный адрес 192.168.1.1, при маске 255.255.255.0
  2. Также в модеме прописан DNS
  3. Интернет модем получает по DHCP
  4. В настройках интерфейса, модем у меня стоит гейтом (шлюзом)

Теперь вопрос: Почему Ubuntu c DNS работает без проблем, то есть забирает его с модема? Почему этого не может сделать Gentoo? В обоих системах файлы resolv.conf пустые.

Ответ: Потому что в Ubuntu по умолчанию чтоит dhcp-клиент (не знаю как он называется), а в Gentoo его нет. Модем работает в двух режимах: по статике — отдает\принимает пакеты, по DHCP раздает DNS.

DHCP-клиент входит в состав минимального установочного диска Gentoo, но в установленную систему не входит. Этим объясняется, почему при установке не обязательно вписывать адреса DNS-серверов в resolv.conf в данном случае.

Сеть настраивается в `/etc/conf.d/net`. Мой файл выглядит так:

config_eth0=( "192.168.1.4 netmask 255.255.255.0 brd 192.168.1.255")

routes_eth0=( "default gw 192.168.1.1" )

Вообще широковещательный адрес тут не нужен. Но оставлю.

DNS-серверы вписываются в `/etc/resolv.conf`. У меня выглядит так:

nameserver 82.200.130.232

nameserver 212.19.128.4

Все.

Порядок монтирования и смены корневого каталога из под существующей системы

Из под существующей (установленной) системы делается так:

1) Монтируем раздел с Gentoo.

# mount /dev/sda3 /mnt/gentoo/

2) Монтируем каталог /proc, чтобы ядро могло общаться с системой и наоборот.

# mount -t proc none /mnt/gentoo/proc

3) Монтируем каталог /dev, для определения системой устройств.

# mount -o bind /dev /mnt/gentoo/dev

4)Здесь указывается, что при создании переменных сред, нужно игнорировать все, кроме `$HOME` и `$TERM` Вторая часть, начиная с `/usr` меняет корневой каталог. То есть происходит тот самый chroot

# env -i HOME=$HOME TERM=$TERM /usr/sbin/chroot /mnt/gentoo /bin/bash

5) Создадим новые перменные среды. Без этого система может не найти путь к какому-нибудь бинарнику.

# /usr/sbin/env-update

6) Собственно загрузим только что созданные перменные среды.

# source /etc/profile

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

# export PS1="(chroot) $PS1"

Выпишу команды без комментариев, чтобы выглядело нагляднее.

# mount /dev/sda3 /mnt/gentoo/
# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev
# env -i HOME=$HOME TERM=$TERM /usr/sbin/chroot /mnt/gentoo /bin/bash
# /usr/sbin/env-update
# source /etc/profile
# export PS1="(chroot) $PS1"

Параметры grub

Так как я выбрал нестандартный путь установки — установка из под существующей основной системы Ubuntu, были сложности с правкой menu.lst

На заметку самому себе:

строка типа root (hd0,2) должна указывать тот раздел, где лежит ядро системы, которое я хочу загрузить

Например так:

title                      Gentoo
root                 (hd0,2)
kernel                   /boot/kernel-2.6.27-gentoo-r7 root=/dev/sda3 ro

Как проверить архитектуру процессора? (2-ая часть)

Сегодня столкнулся с тем, что вывод uname -m не всегда (а может даже редко) показывает правду.

Для определения архитектуры лучше использовать

$ lshw

или обычный

$ cat /proc/cpuinfo

В последнем случае битность выведется в строке `clflush`

smbd, nmbd при старте системы

Поскольку для контроллера домена удобно, чтобы демоны smbd и nmbd при старте-перезагрузке системы поднимались сами, без посторонней помощи. В `rc.local` пишется такой скрипт:

if [ -x /usr/local/libexec/smbd ]; then
echo -n ' smbd'
/usr/local/libexec/smbd
fi
if [ -x /usr/local/libexec/nmbd ]; then
echo -n ' nmbd'
/usr/local/libexec/nmbd
fi

ssh и разные кодировки

OpenBSD у меня использует локаль KOI8-R. Захожу на него, обычно с машин, использующих utf8. Соответственно получаются проблемы при чтении файлов с кириллицей.

На помощь приходит следующее:

luit -encoding "KOI8-R" ssh xxxxxxx
Ранее Ctrl + ↓