RuNetBSD


Руководство

Глава 13. Драйвер криптографического устройства

Русский перевод: Михаил Сгибнев

Содержание

13.1. Введение
13.1.1. Почему используется шифрование диска?
13.1.2. Драйвер логического диска
13.1.3. Доступность
13.2. Компоненты системы Crypto-Graphic Disk
13.2.1. Драйвер псевдо-устройства ядра
13.2.2. Алгоритмы шифрования
13.2.3. Методы верификации
13.3. Пример: зашифровываем диск
13.3.1. Подготавливаем диск
13.3.2. Очистка диска
13.3.3. Создание cgd
13.3.4. Модифицирование файлов конфигурации
13.3.5. Восстановление данных
13.4. Предложения и предупреждения
13.4.1. Использование random-key cgd для шифрования файла подкачки
13.4.2. Предупреждения

Драйвер cgd предоставляет возможность использовать диски или разделы для хранения зашифрованной информации. После аутентификации зашифрованная информация становится доступна через псевдо-устройство cgd.

13.1. Введение

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

13.1.1. Почему используется шифрование диска?

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

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

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

13.1.2. Драйвер логического диска

Устройство cgd видно системе и ведет себя точно также как и любое другое дисковое устройство. Драйвер cgd не занимается непосредственно управлением работой диска, а лишь обеспечивает функции шифрации/дешифрации. Для создания и конфигурирования устройства cgd существует специальная утилита cgdconfig.

В состав NetBSD входят несколько подобных логических устройств, каждое из которых реализует некоторую функцию. Например, cgd предоставляет возможность шифрования дисков и разделов; с помощью vnd возможна организация дисковых разделов внутри файла, а raid позволяет защитить данные в случае отказа жесткого диска. Соединив эти технологии можно добиться высоких показателей защиты от несанкционированного доступа и надежности в работе.

После создания cgd диска, Вы можете использовать команду disklabel для разделения его на разделы. Команда swapctl позволяет создать область подкачки на этом диске, команда newfs организовывает файловую систему, с помощью команды mount мы монтируем диск для дальнейшего его использования, как и любой другой диск.

13.1.3. Доступность

Драйвер cgd был написан Roland C. Dowdeswell, и анансирован в NetBSD-current между релизами 1.6 и 2.0. В результате, он не был включен в релиз 1.6, но представлен в релизе 2.0

13.2. Компоненты системы Crypto-Graphic Disk

Для того, чтобы сделать эффективной систему cgd вместе должно работать много компонентов.

13.2.1. Драйвер псевдо-устройства ядра

Для использования cgd Вам необходима поддержка в ядре псевдо-устройства cgd. В файле конфигурации ядра должна присутствовать следующая строка:

pseudo-device   cgd     4       # cryptographic disk driver

Число указывает на количество одновременно примонтированных устройств cgd. После внесения изменений в ядро, необходимо его перекомпилировать, установить и перезагрузить систему.

13.2.2. Алгоритмы шифрования

Драйвер cgd поддерживает следующие алгоритмы шифрования:

  • aes-cbc: AES (Rijndael).В AES используется 128 размер блока и принимает ключи длиной 128, 192 или 256 бит
  • blowfish-cbc:В Blowfish используется 64 размер блока и принимает ключи длиной 128 бит
  • 3des-cbc:В Triple DES используется 64 размер блока и принимает ключи длиной 192 бит (в настоящий момент для шифрования используется ключ 168 бит)

Все три шифра используются в режиме цепочки блоков шифротекста (Cipher Block Chaining). Это означает, что к каждому блоку применяется XOR с предыдущим зашифрованным блоком перед кодированием. Это снижает риск обнаружения образца и, соответственно, риск взлома.

13.2.3. Методы верификации

Другой аспект cgd, который нуждается в рассмотрении – это методы верификации, обеспечиваемые утилитой cgdconfig. Они используются для проверки правильности ключевой фразы. Доступны следующие:

  • none: без проверки. Это опасно, так как ключ не проверяется вообще. cgdconfig примонтирует cgd устройство нормально, но данные окажутся разрушенными в случае ввода неправильного ключа (расшифровка блоков с неправильным ключом приведет к появлению совершенно непредсказуемых данных)
  • disklabel: cgdconfig сканирует сответствие раздела. Если и раздел и ключ верны, то верификация будет пройдена
  • ffs: cgdconfig сканирует файловую систему. Если файловая система и ключ верны, то верификация будет пройдена

13.3. Пример: зашифровываем диск

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

  1. Подготовим диск и разделы
  2. Уничтожим все данные
  3. Создадим cgd
  4. Напишем файл конфигурации
  5. Восстановим данные на шифрованный диск

13.3.1. Подготавливаем диск

Сперва определимся, какие файловые системы Вы хотите зашифровать. Сразу оговоримся, что необходимо оставить / в незашифрованном виде, для того чтобы загрузить ядро и выполнить init, cgdconfig и скрипт rc.d для конфигурирования устройства cgd. В нашем примере будем шифровать все, за исключением корневой (/) файловой системы.

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

Загрузив систему в однопользовательском режиме, примонтируйте / для чтения/записи и отмонтируйте все остальные файловый системы, используя команду disklabel удалите все разделы, которые вы хотите переместить в cgd.

Затем создайте один единственный новый раздел на все пространство, которое вы будете использовать, например, на wd0e. Установите в качестве типа раздела ccd (поскольку нет кода для cgd, но они похожи). Хотя это и не имеет никакого значения, цель этого состоит в том, чтобы напомнить вам, что вы используете не совсем обычную файловую систему. Когда закончите, сохраните новую таблицу разделов.

13.3.2. Очистка диска

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

Мы можем использовать команду dd, для записи /dev/zero поверх раздела wd0e, но тогда мы получим полный диск нулей, за исключением самого зашифрованного раздела. Это может помочь злоумышленнику определить блоки с данными, что не входит в наши цели. Нам необходим «шум». Так что для решения этой проблемы создадим временное устройство cgd со случайным, неизвестным нам ключом.

Сначала конфигурируем cgd на использование случайного ключа:

# cgdconfig -s cgd0 /dev/wd0e aes-cbc 128 < /dev/urandom 

Теперь записываем нули в раздел cgd (/dev/rcgd0d в NetBSD/i386, /dev/rcgd0c на некоторых других платформах):

# dd if=/dev/zero of=/dev/rcgd0d bs=32k

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

# cgdconfig -u cgd0

13.3.3. Создание cgd

Для управления устройством cgd применяется программа cgdconfig, использующая файлы конфигурации для хранения информации о типе шифрования, длине ключа, соли пароля (параметр, позволяющий увеличить энтропию) и других параметров. Эти файлы очень важны, без них невозможна будет дешифровка данных!

Сейчас мы составим файл конфигурации и поместим его в каталог по умолчанию (в каталог /etc/cgd, права доступа к нему поставим 700):

# cgdconfig -g -V disklabel -o /etc/cgd/wd0e aes-cbc 256

Эта операция создаст файл /etc/cgd/wd0e, описывающий cgd, использующий метод шифрования aes-cbc, проверку по disklabel и длину ключа в 256 бит. Смотреться это будет примерно так:

algorithm aes-cbc;
iv-method encblkno;
keylength 256;
verify_method disklabel;
keygen pkcs5_pbkdf2/sha1 {
	iterations 6275;
	salt AAAAgHTg/jKCd2ZJiOSGrgnadGw=;
};

Замечание

Помните, что вам необходимо позаботиться о безопасности этого файла.

Подсказка

При создании файла конфигурации cgdconfig читает /dev/random для создания соли пароля. Это действие может быть заблокировано, если в пуле случайных чисел не будет создана достаточная энтропия. Если вы выполнили действия по перезаписи диска, указанные выше, то вероятность блокировки черезвычайно мала. Но если это произошло, нажмите клавиши на консоли и/или двигайте мышью, пока устройство rnd не наберет достаточную энтропию.

Теперь подошло время создания cgd, для чего нам необходима кодовая фраза. Эта фраза нам потребуется при каждом открытии cgd, например, после перезагрузки. Убедитесь, что запомнили пароль и он не является очевидным для посторонних.

Теперь необходимо сконфигурировать cgd, поскольку у нас не имеется раздела на логическом устройстве:

# cgdconfig -V re-enter cgd0 /dev/wd0e

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

Теперь, когда мы имеем новое устройство cgd, нам необходимо создать разделы и файловые системы . Создадим точно такие же разделы как и были, с теми же самыми именами.

Подсказка

Не забудьте использовать аргумент disklabel -I, так как вы создаете метку инициализации для нового диска.

Замечание

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

Затем, используя команду newfs, создаем файловые системы на всех разделах. Теперь требуется указывать имена дисков, относительно cgd:

# newfs /dev/rcgd0h

13.3.4. Модифицирование файлов конфигурации

Поскольку мы переместили несколько файловых систем на другой (логический) диск, нам необходимо обновить записи в /etc/fstab. Каждый раздел будет обозначаться прежней буквой, только в качестве диска вместо wd0 будет использоваться cgd0. Окончательный вариант /etc/fstab будет выглядеть так:

  /dev/wd0a   /     ffs     rw,softdep    1 1
  /dev/cgd0b  none  swap    sw            0 0
  /dev/cgd0b  /tmp  mfs     rw,-s=132m    0 0
  /dev/cgd0e  /var  ffs     rw,softdep    1 2
  /dev/cgd0f  /usr  ffs     rw,softdep    1 2
  /dev/cgd0h  /home ffs     rw,softdep    1 2

Замечание

/tmp должнна быть отдельной файловой системой типа mfs или ffs, расположенной внутри cgd, если вы не хотите, чтобы ваши временные файлы не сохранялись в виде открытого текста.

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

Вставьте следующие строки в /etc/cgd/cgd.conf:

  cgd0    /dev/wd0e

Это укажет использовать файл конфигурации /etc/cgd/wd0e для cgd0.

В заключении, установим cgd на активацию при начальной загрузке, добавив в /etc/rc.conf:

  cgd=YES

Теперь, каждый раз при старте /etc/rc необходимо вводить кодовую фразу для /dev/cgd0.

13.3.5. Восстановление данных

Затем, с помощью команды mount монтируем новые файловые системы и восстанавливаем данные, используя команду restore. Часто бывает полезным иметь примонтированую /tmp, так как restore может использовать временные файлы при распаковке большого файла дампа.

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

13.4. Предложения и предупреждения

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

  • Используйте различные устройства cgd для различных данных, монтируя зашифрованные разделы по мере необходимости.
  • Конфигурируйте cgd перед vnd из файла удаленных файловых систем (NFS, SMBFS, CODA, etc) и не сохраняйте данные на общих файловых системах.

13.4.1. Использование random-key cgd для шифрования файла подкачки

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

Мы создавали временное устройство cgd со случайным ключом в примере выше, для того, чтобы очистить диск от наших старых данных, а параметр cgdconfig -s указывал нам не создавать файл конфигурации.

Файл конфигурации cgdconfig включает в себя метод генерации ключа «randomkey». Это облегчает задачу «постоянного» использования случайного ключа и предоставляет возможность работы в автоматическом режиме.

Для примера, если вы хотите сконвертировать существующий раздел /dev/wd0b в cgd1, использующий случайный ключ, выполните следующую команду для генерации /etc/cgd/wd0b:

# cgdconfig -g -o /etc/cgd/wd0b -V none -k randomkey blowfish-cbc

Когда используется случайный метод генерации ключа, может использоваться только метод верификации «none», потому что содержимое нового cgd будет случайно после каждой перезагрузки (так как предыдущие данные зашифрованы случайным ключом). Аналогично, новый диск не будет иметь метки или разделов и команда swapctl будет жаловаться на конфигурирование устройство подкачки, не имеющего раздела.

Чтобы автоматизировать процесс разметки диска, подготовьте список разделов и сохраните его в файл, для примера в /etc/cgd/wd0b.disklabel. Пожалуйста, изучите disklabel(8) для получения более подробной информации.

Для восстановления разделов в новом устройстве cgd после каждой перезагрузки, создайте файл /etc/rc.conf.d/cgd, как показано ниже (спасибо Lubomir Sedlacik):

swap_device="cgd0"
swap_disklabel="/etc/cgd/wd0b.disklabel"
start_postcmd="cgd_swap"

cgd_swap()
{
	if [ -f $swap_disklabel ]; then
		disklabel -R -r $swap_device $swap_disklabel
	fi
}

Та же самая методика может быть применена и при использовании newfs, при пересоздании файловой системы ffs для /tmp, если вы не хотите использовать mfs.

13.4.2. Предупреждения

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

Хранение данных на зашифрованном диске, это конечно хорошо, но что делать с другими копиями, например резервными? Использование конвеера для команды dump на инструмент шифрования файлов gpg может стать одним из решений данной проблемы, только убедитесь, что у вас наличествуют ключи и необходимые утилиты для предварительной расшифровки перед выполнением команды restore.

Подобно любой программной реализации алгоритма кодирования, ключ cgd находится в памяти ядра, когда устройство сконфигурировано к нему может получить доступ привилегированный пользователь или программа, такая как /dev/kmem.

Когда раздел cgd примонтирован, то он становится доступен, как любая другая файловая система. Позаботьтесь о правах доступа к файлам, защите от программных и сетевых атак.

Избегайте частого отключения/присоединения, особенно для ноутбуков с функциями BIOS suspend-to-disk. Если злоумышленник сможет получить доступ к вашей машине с ключом в памяти или прочитает из памяти образ suspend-to-disk, использование cgd потеряет смысл.

Глава 12. Работа со сменными носителями

Содержание

12.1. Инициализация и использование флоппи-дисков
12.2. Использование диска ZIP
12.3. Чтение данных с CD в NetBSD
12.4. Чтение мульти-сессионных CD в NetBSD
12.5. Доступ непривилегированных пользователей к CD
12.6. Монтирование образов ISO
12.7. Использование video CD с NetBSD
12.8. Использование audio CD в NetBSD
12.9. Создание файлов MP3 (MPEG layer 3) из audio CD
12.10. Использование CD-R для записи данных
12.11. Создание диска с аудио-данными
12.12. Создание audio CD из mp3s
12.13. Копирование audio CD
12.14. Копирование CD, имея два привода
12.15. Использование CD-RW rewritables
12.16. Поддержка DVD
12.17. Создание ISO образа из CD
12.18. Получение информации о диске с CD и ISO образа

12.1. Инициализация и использование флоппи-дисков

Флоппи-диски, как и прочие дисковые устройства, очень похожи на жесткие диски, за исключением того, что нуждаются в первоначальном низкоуровневом форматировании. Для использования обычной 1440 KB дискеты, вставленной в первый дисковод, сперва (с правами пользователя root) отформатируйте ее::

# fdformat -f /dev/rfd0a

Затем, создайте единственный раздел, используя disklabel(8):

# disklabel -rw /dev/rfd0a floppy3

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

# newfs -m 0 -o space -i 16384 -c 80 /dev/rfd0a

Теперь дискета может быть смонтирована как любой другой диск. Если у вас имеется дискета с уже созданной на ней файловой системой MS-DOS и вы хотите сделать ее доступной из NetBSD, то воспользуйтесь следующей командой:

# mount -t msdos /dev/fd0a /mnt

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

# tar cvfz /dev/rfd0a file1 file2 ...

При работе с дискетами MS-DOS, как вариант, можно использовать пакет sysutils/mtools, который позволит избежать опасностей, связанных с извлечением неотмонтированной файловой системой.

12.2. Использование диска ZIP

  1. Убедитесь, что в вашей системе установлен привод ZIP:
    # dmesg | grep -i zip
    sd0 at atapibus0 drive 1: <IOMEGA  ZIP 100       ATAPI, , 14.A> type 0 direct removable

    Так, один видим, он отображается sd0, как любой другой SCSI диск. Тот факт, что ZIP подключен к ATAPI, не имеет значения – SCSI ZIP определится точно также. ZIP помечен командой «removable», что позволяет использовать команду:

    # eject sd0
  2. Вставьте ZIP диск
  3. Проверьте состояние разделов ZIP:
    # disklabel sd0
    # /dev/rsd0d:
    type: ATAPI
     ...
    8 partitions:
    #        size   offset     fstype   [fsize bsize   cpg]
      d:   196608        0     unused        0     0         # (Cyl.    0 - 95)
      h:   196576       32      MSDOS                        # (Cyl.    0*- 95)
    disklabel: boot block size 0
    disklabel: super block size 0
    Раздел d
    обозначает весь диск, что традиционно для i386.

    Раздел h
    то, что вы ищете. Вы можете видеть, что на разделе используется файловай система MS-DOS.

    Следовательно, для доступа к диску, используйте раздел /dev/sd0h.

  4. Примонтируйте его:
    # mount -t msdos /dev/sd0h /mnt
  5. Получите доступ к файлам:
    # ls -la /mnt
    total 40809
    drwxr-xr-x   1 root  wheel     16384 Dec 31  1979 .
    drwxr-xr-x  28 root  wheel      1024 Aug  2 22:06 ..
    -rwxr-xr-x   1 root  wheel   1474560 Feb 23  1999 boot1.fs
    -rwxr-xr-x   1 root  wheel   1474560 Feb 23  1999 boot2.fs
    -rwxr-xr-x   1 root  wheel    548864 Feb 23  1999 boot3.fs
    -rwxr-xr-x   1 root  wheel  38271173 Feb 23  1999 netbsd19990223.tar.gz
  6. Отмонтируйте ZIP:
    # umount /mnt
    #
  7. Выньте ZIP:
    # eject sd0
    #

12.3. Чтение данных с CD в NetBSD

Data CD могут содержать программы, музыку (mp3, wav), фильмы (mp3, quicktime), исходные тексты, текстовые файлы и т.д. Перед тем, как получить доступ к этим файлам, CD должен быть подмонтирован к каталогу, подобно жесткому диску. Точно так же как и жесткие диски, имеющие различные файловые системы (ffs, lfs, ext2fs, …), CD так же имеет файловую систему, называемую «cd9660″. Реализованная в NetBSD файловая система cd9660 может использоваться как с поддержкой расширений Rockridge и Joliet, так и без них.

Устройства CD именуются как /dev/cd0a для SCSI и IDE (ATAPI).

Вы можете начать, имея эту информацию:

  1. Убедитесь в наличии привода CD:
    # dmesg | grep ^cd
         cd0 at atapibus0 drive 0: <CD-R/RW RW8040A, , 1.12> type 5 cdrom removable
         cd0: 32-bit data port
         cd0: drive supports PIO mode 4, DMA mode 0
         cd0(pciide0:1:0): using PIO mode 0, DMA mode 0 (using DMA data transfers)

    Здесь показано, что у вас имеется одни диск, «cd0″. Это устройство IDE/ATAPI находится на шине atapibus0. Конечно, это устройство является сменным. Смотрите ниже.

  2. Вставьте CD
  3. Вручную примонтируйте CD:
    # mount -t cd9660 /dev/cd0a /mnt
    #

    Эта команда ничего не выводит. Она указывает системе примонтировать CD, находящийся по адресу /dev/cd0a, используя файловую систему «cd9660″ к точке монтирования «/mnt», которая при этом, обязательно должна существовать.

  4. Проверьте содержимое CD:
    # ls /mnt
    INSTALL.html INSTALL.ps   TRANS.TBL    boot.catalog
    INSTALL.more INSTALL.txt  binary       installation
    #

    Все просто здорово! Конечно, это NetBSD CD :)

  5. Отмонтируйте CD:
    # umount /mnt
    #

    Учтите, что если какая-либо программа обращается к этому каталогу (например «cd» с другой консоли), то эта команда не сработает. Если вы выключаете систему, то диск отмонтируется автоматически, не волнуйтесь.

  6. Создайте запись в /etc/fstab:

    Если вы не хотите каждый раз вводить полностью команду «mount», то есть возможность внести соответствующие значения в /etc/fstab:

    # Device        mountpoint      filesystem  mount options
    /dev/cd0a       /cdrom          cd9660      ro,noauto

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

    # mkdir /cdrom
    #

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

    # mount /cdrom
    #

    Доступ к диску и его отмонтирование осуществляется как и прежде.

    CD не будет примонтирован во время начальной загрузки, если указать опцию «noauto». Эта функция достаточно полезна, так как вы не будете все время иметь диск в приводе. Для получения дополнительной информации, обратитесь к man.mount.8; и mount_cd9660(8).

  7. Открыть CD:
    # eject cd0
    #

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

12.4. Чтение мульти-сессионных CD в NetBSD

Используйте mscdlabel(8) для добавления всех сессий к метке диска и затем используйте соответствующую ноду устройства для монтирования интересующей вас сессии. Возможно, вам придется создать необходимую ноду в /dev вручную. Например:

# mscdlabel cd1
track (ctl=4) at sector 142312
 adding as 'a'
track (ctl=4) at sector 0
 adding as 'b'
# ls -l /dev/cd1b
ls: /dev/cd1b: No such file or directory
# cd /dev
# ls -l cd1*
brw-r-----  1 root  operator       6,  8 Mar 18 21:55 cd1a
brw-r-----  1 root  operator       6, 11 Mar 18 21:55 cd1d
# mknod cd1b b 6 9

создаст /dev/cd1b. Проверьте права доступа для всех создаваемых вами устройств:

# ls -l cd1*
brw-r-----  1 root  operator       6,  8 Mar 18 21:55 cd1a
brw-r--r--  1 root  wheel          6,  9 Mar 18 22:23 cd1b
brw-r-----  1 root  operator       6, 11 Mar 18 21:55 cd1d
# chgrp operator cd1b
# chmod 640 cd1b
# ls -l cd1* 
brw-r-----  1 root  operator       6,  8 Mar 18 21:55 cd1a
brw-r-----  1 root  operator       6,  9 Mar 18 22:24 cd1b
brw-r-----  1 root  operator       6, 11 Mar 18 21:55 cd1d

Теперь вы можете монтировать их.

# mount /dev/cd1b /mnt

12.5. Доступ непривилегированных пользователей к CD

По умолчанию, в NetBSD только пользователь «root» имеет право монтировать файловые системы. Если вы хотите дать такую возможность пользователям, то выполните следущее:

  • Дать права доступа к устройству.
    # chmod go+rw /dev/cd0a
  • Указать NetBSD, что пользователи имеют право монтировать файловые системы.
    # sysctl -w vfs.generic.usermount=1

    Обратите внимание, что это будет работать для всех устройств и файловых систем, а не только для CD с файловой системой ISO 9660.

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

$ cd $HOME
$ mkdir cdrom
$ mount -t cd9660 /dev/cd0a `pwd`/cdrom

Пожалуйста, посмотрите mount(8) и, в качестве альтернативы, amd(8). Файлы примеров можно найти в /usr/share/examples/amd.

12.6. Монтирование образов ISO

Иногда бывает необходимо примонтировать образ ISO9660 файла перед тем, как прожечь его на диск. Если вы ранее работали с Linux, то знаете, что там это делается с помощью специальной файловой системы loop. В NetBSD испольуется другой путь: псевдо-диск vnode.

Иллюстрируем это примером. Предположим, что у вас есть ISO образ в вашем домашнем каталоге, называемый «mycd.iso»:

  1. Запустим новую vnode, «указав» на файл ISO:
    # vnconfig -c vnd0 ~/mycd.iso
  2. Монтируем vnode:
    # mount -t cd9660 /dev/vnd0a /mnt
  3. Ух ты! Содержимое образа стало доступно в /mnt! Идите в этот каталог и работайте с образом.
  4. Отмонтировать образ можно следующим образом:
    # umount /mnt
  5. Затем, отконфигурируем vnode:
    # vnconfig -u vnd0

Обратите внимани, что этот метод может быть применен к любому файлу, содержащему файловую систему, а не только к образу ISO.

Для получения дополнительной информации обратитесь к vnd(4) и vnconfig(8).

12.7. Использование video CD с NetBSD

Для проигрывания MPEG Video, примонтируйте CD как обычный диск с данными (смотрите Раздел 12.3, «Чтение данных с CD в NetBSD») и затем воспользуйтесь пакетами graphics/mtv, multimedia/xine-ui, multimedia/mplayer or multimedia/gmplayer для воспроизведения mpeg файлов, сохраненных на CD.

12.8. Использование audio CD в NetBSD

Есть два способа работать с аудио компакт-дисками:

  1. Указать приводу проигрывать диск через наушники или звуковую карту, к которой привод CDROM должен быть непосредственно подключен. Для этого используйте такие программы, как cdplay(1), audio/xmcd, «kscd» из пакета audio/kdemultimedia, миксеры mixerctl(1), audio/xmix, audio/xmmix, базирующуюяся на Curses audio/cam или kmix, также являющейся частью пакета audio/kdemultimedia.

    Обычно, это работает на всех типах приводов – SCSI и IDE (ATAPI) CDROM, CDRW и DVD.

  2. Читать («rip») аудиотрэки в бинарном виде без цифро->аналогового преобразования. Для этого существует несколько программ:
    • Для большинства приводов ATAPI, SCSI и некоторых пропиетарных стандартов может использоваться пакет audio/cdparanoia. С помощью этого пакета, данные могут быть сохранены в файл или направлены на стандартный выход в формате WAV, AIFF, AIFF-C или raw. В настоящее время, для версии cdparanoia, используемой в NetBSD, требуется указание опции -g. Приедем пример, где мы сохраняем 2-ой трэк диска в формате WAV:
      $ cdparanoia -g /dev/rcd0d 2 track-02.wav

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

      $ cdparanoia -g /dev/rcd0d -B
    • Для приводов ATAPI или SCSI CD-ROM может быть использован пакет audio/cdd. Для распаковки 2-го трэка с помощью cdd необходимо:
      # cdd -t 2 `pwd`

      Эта команда поместит файл, называемый track-02.cda в текущий каталог.

    • Так же, для приводов SCSI может использоваться пакет audio/tosha. Для распаковки 2-го трэка с помощью tosha необходимо:
      # tosha -d CD-ROM-device -t 2 -o track-02.cda

    Полученные данные могут быть затем кодированы в поток MP3 (смотрите Раздел 12.9, «Создание файлов MP3 (MPEG layer 3) из audio CD») или записаны на CD-R (смотрите Раздел 12.11, «Создание диска с аудио-данными»).

12.9. Создание файлов MP3 (MPEG layer 3) из audio CD

Основными шагами, необходимыми для создания файла MPEG layer 3 (MP3) из audio CD (используя программное обеспечение из коллекции портов NetBSD) являются:

  1. Распаковка (rip) аудио данных с CD как указано в Раздел 12.8, «Использование audio CD в NetBSD».
  2. Конвертация CD audio в формат WAV. Для этого просто необходимо дать задание необходимой программе (такой как tosha или cdd).
    • Используя пакет audio/sox выполните:
      $ sox -s -w -c 2 -r 44100 -t cdr track-02.cda track-02.wav

      она конвертирует track-02.cda из raw CD format в track-02.wav формата WAV, используя signed 16-bit words with 2 channels at a sampling rate of 44100kHz.

  3. Кодирование WAV файла в формат MP3.
    • Используя пакет audio/bladeenc, выполните:
      $ bladeenc -128 -QUIT track-02.wav

      Эта команда кодирует track-02.wav в файл track-02.mp3 формата MP3 с битрейтом 128kBit/sec. В документации на bladeenc найдется дополнительная информация.

    • При использовании пакета audio/lame введите:
      $ lame -p -o -v -V 5 -h track-02.wav track-02.mp3

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

Готовый файл можно прослушать одним из следующих пакетов: audio/gqmpeg, audio/maplay, audio/mpg123 или audio/splay.

12.10. Использование CD-R для записи данных

Процесс записи разделяется на два шага, первый заключается в создвнии образа диска, а второй – непосредственно в записи его на носитель.

  1. Чтоение существующего ISO образа
    # dd if=/dev/rcd0a of=filename.iso bs=2k
    #

    Вы можете самостоятельно создать образ:

  2. Создание ISO образа

    Поместите исходные данные в один каталог. Образ диска содержит данные, помещаемые на диск в том виде, в котором они будут отображаться, используя формат ISO 9660. Базовый формат ISO 9660 пониает только имена 8+3 (имя и расширение). Поскольку это не соответствует практике Unix, то используется расширение «Rockridge Extension», поддерживающее длинные имена. В мире Microsoft так же есть подобное расширение, оно называется Joliet.

    Образ диска создается командой mkisofs из пакета sysutils/cdrecord.

    Пример: если ваши данные находятся в каталоге /usr/tmp/data, вы можете создать образ /usr/tmp/data.iso следующей командой:

    $ cd /usr/tmp
    $ mkisofs -o data.iso -r data
    Using NETBS000.GZ;1 for  data/binary/kernel/netbsd.INSTALL.gz (netbsd.INSTALL_TINY.gz)
    Using NETBS001.GZ;1 for  data/binary/kernel/netbsd.GENERIC.gz (netbsd.GENERIC_TINY.gz)
      5.92% done, estimate finish Wed Sep 13 21:28:11 2000
     11.83% done, estimate finish Wed Sep 13 21:28:03 2000
     17.74% done, estimate finish Wed Sep 13 21:28:00 2000
     23.64% done, estimate finish Wed Sep 13 21:28:03 2000
     ...
     88.64% done, estimate finish Wed Sep 13 21:27:55 2000
     94.53% done, estimate finish Wed Sep 13 21:27:55 2000
    Total translation table size: 0
    Total rockridge attributes bytes: 5395
    Total directory bytes: 16384
    Path table size(bytes): 110
    Max brk space used 153c4
    84625 extents written (165 Mb)
    $

    Обратитесь к странице руководства man mkisofs(8), для получения дополнительной информации по опциям утилиты. Документ Bootable CD ROM How-To поможет вам создать загрузочный CD.

  3. Запись образа на CD-R

    После того, как вы создали образ диска, необходимо записать его на CD. Это делается с помощью команды «cdrecord» пакета sysutils/cdrecord package. Вставьте пустой диск в привод и выполните:

    # cdrecord -v dev=/dev/rcd0d data.iso
    ...
    #

    В процессе выполнения вам будет показано много информации о приводе, диске и образе. Также идет обратный 10-ти секундный отсчет, что дает последнюю возможность отменить прожиг (при нажатии ^C).

    Обратите внимание, что cdrecord(8) работает как со SCSI, так и с IDE (ATAPI) приводами.

  4. Проверка

    Подмонтируйте записанный CD и проверьте доступность данных, смотрите Раздел 12.3, «Чтение данных с CD в NetBSD».

12.11. Создание диска с аудио-данными

Если вы хотите сделать резервную копию одного из ваших аудио компакт-дисков, то можно извлечь («ripping») данные с диска и записать их на новый диск. Конечео, все прекрасно работает и в случае, если вы берете трэки с разных дисков, то есть вы можете создать диск, содержащий выбранные вами композиции!

Последовательность действий следущая:

  1. Взать («rip») аудио-трэки руководствуясь Раздел 12.8, «Использование audio CD в NetBSD», в результате чего получим файл .wav
  2. Запишем файл .wav, используя sysutils/cdrecord:
    # cdrecord -v dev=/dev/rcd0d -audio -pad *.wav

12.12. Создание audio CD из mp3s

If you have converted all your audio CDs to mp3 and now want to make a mixed CD for your (e.g.) your car, you can do so by first converting the .mp3 files back to .wav format, then write them as a normal audio CD.

Необходимые шаги :

  1. Cоздаем .wav из .mp3:
     $ mpg123 -w foo.wav foo.mp3

    Сделайте это для всех mp3 файлов, которые вы хотите иметь на вашем аудио компакт-диске. Имена файлов .wav, которые вы используете, не имеют значения.

  2. Записать .wav на CD, как описано в Раздел 12.11, «Создание диска с аудио-данными».

12.13. Копирование audio CD

Копировать аудио компакт-диск без пауз, как это определяется стандартом CDDA вы можете используя утилиту cdrdao.:

# cdrdao read-cd --device /dev/rcd0d data.toc
# cdrdao write   --device /dev/rcd1d data.toc

12.14. Копирование CD, имея два привода

Если у Вас на машине установлен и CD-R и CD-ROM, то Вы можете скопировать диск следующей командой:

# cdrecord dev=/dev/rcd1d /dev/rcd0d

Здесь CD-ROM (cd0) содержит компакт-диск, который Вы хотите копировать и CD-R (cd1) содержит чистый диск. Обратите внимание, что это работает только с компьютерными дисками, которые содержат некоторый вид данных, и не работает с аудио компакт-дисками! На практике Вы можете захотеть добавить такой параметр, как «speed=8» чтобы ускорить поцесс.

12.15. Использование CD-RW rewritables

Вы можете работать с приводом CD-RW точно так же, как и с приводом CD-R (смотрите Раздел 12.10, «Использование CD-R для записи данных»), создавая образы с помощью mkisofs(8) и записывая их с помощью cdrecord(8). Если Вы хотите очистить диск, Вы можете выбрать опцию «blank«:

# cdrecord dev=/dev/rcd0d blank=fast

Есть еще несколько способов стереть CD-RW диск, их можно посмотреть вызвав cdrecord(8) с опцией «blank=help«. Смотрите руководство cdrecord(8) для получения дополнительной информации.

12.16. Поддержка DVD

В настоящее время NetBSD поддерживает DVD через ISO 9660, используемую для приводов CD-ROM. Новая файловая система UDF, представленная на DVD, в настоящее время не поддерживается. DVDs, DivX и другие avi файлы можно просмотреть с помощью multimedia/ogle или multimedia/gmplayer.

Некоторые советы по созданию DVD смотрите в статье о growisofs и в этой статье, посвязенной записи CD и DVD в NetBSD.

12.17. Создание ISO образа из CD

Для создания ISO образа и контрольной суммы:

# readcd dev=/dev/cd0d f=/tmp/cd.iso

Или используйте dd(1):

# dd if=/dev/cd0d of=/tmp/cd.iso bs=2048

Если диск содержит ошибку, то вы можете попытаться восстановить сохранившееся:

# dd if=/dev/cd0d of=/tmp/cd.iso bs=2048 conv=noerror

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

# mount -t cd9660 -r /dev/cd0d /mnt/cdrom

Во вторых, получить образ:

# mkhybrid -v -l -J -R -o /tmp/my_cd.iso /mnt/cdrom/

12.18. Получение информации о диске с CD и ISO образа

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

# file -s /dev/cd0d

Вы можете прочитать информацию об ISO образе следующей командой:

# isoinfo -d -i /tmp/my_cd.iso

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

# cd-discid /dev/cd0d

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

# cdrecord -v dev=/dev/cd0d -toc

Глава 11. Печать

Русский перевод: Михаил Сгибнев

Содержание

11.1. Активация демона печати
11.2. Конфигурирование /etc/printcap
11.3. Конфигурирование Ghostscript
11.4. Команды управления принтером
11.5. Удаленная печать

В этой главе мы рассмотрим настройку печати для принтера HP Deskjet 690C, подключенного к первому параллельному порту, используя систему печати lpd, входящей в состав NetBSD. Сперва система должна быть сконфигурирована для печати текстовых документов, затем последует настройка печати документов PostScript, используя программу Ghostscript. Пожалуйста, обратите внимание на то, что в коллекции пакетов доступны альтернативные системы печати, такие как lprng и Common Unix Printing System (CUPS). Они не будут рассматриваться в этой главе.

11.1. Активация демона печати

Сразу после завершения установки печать невозможна, так как не активирован демон печати lpd. Для его активации необходимо изменить в /etc/rc.conf следующую строку:

lpd=NO

на

lpd=YES

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

# sh /etc/rc.d/lpd start

Проверить, запущен ли lpd можно следующей командой:

# ps ax | grep lpd
  179 ??  Is     0:00.01 lpd

Если вы не увидели строку для lpd в выводе предыдущей команды, то демон не активен.

Конфигурирование lpd происходит с помощью /etc/printcap. Перед началом конфигурирования будет хорошей идеей провести тест принтера, в ходе которого будет возможность проверить правильность физического соединения и работоспособность самого принтера. В этом тесте на принтер посылаются некие данные. В нашем примере используется принтер, подключенный к параллельному порту, поэтому мы будем использовать устройство /dev/lpt0; в случае работы с USB-принтером, необходимо обращаться к устройству /dev/ulpt0. Пожалуйста, проверьте страницы руководства man для этих устройств (lpt(4), ulpt(4)) для получения более полной информации.

Выполним проверку:

# lptest 70 5 > /dev/lpt0

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

# lptest 70 5
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef
"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg
#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh
$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi
%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij

Часто встречающейся проблемой является то, что принтер некорректно выводит столбцы, это обычно означает то, что принтер сконфигурирован начинать новую строку после получения символов <CR> (carriage return, ASCII 13) и <LF> (line feed, ASCII 10). NetBSD посылает только символ <LF>. Для устранения этой проблемы есть два пути:

  • изменить конфигурацию принтера
  • использовать фильтр (описано ниже)

Замечание

В предыдущем примере не используется спулер lpd, потому что программа посылает данные непосредственно на устройство принтера (/dev/lpt0) и не ставится в очередь.

11.2. Конфигурирование /etc/printcap

В этом разделе мы сконфигурируем принтер для печати текстовых документов.

Принтер должен иметь запись в файле /etc/printcap; она содержит идентификатор (имя) и описание принтера. По умолчанию, многими программами используется идентификатор lp. Рассмотрим пример:

Пример 11.1. /etc/printcap

lp|local printer|HP DeskJet 690C:\
        :lp=/dev/lpa0:sd=/var/spool/lpd/lp:lf=/var/log/lpd-errs:\
        :sh:pl#66:pw#80:if=/usr/local/libexec/lpfilter:

Формат файла и доступные опции подробно описаны в printcap(5). Пожалуйста, обратите внимание на то, чтобы был определен input filter (с опцией if), который будет бороться с проблемой ступенчатости:

if=/usr/local/libexec/lpfilter

Драйвер принтера и принтеры HP

Для обозначения принтера в Пример 11.1, «/etc/printcap» использует устройство lpa0 (polled driver) вместо lpd0 (interrupt driven driver). Использование прерываний вызывает проблемы на некоторых принтерах и HP Deskjet 690C из их числа, то есть печать идет очень медленно и печать одной страницы в формате PostScript может занять часы. Для решения этой проблемы и предназначен драйвер lpa. Этот драйвер также может быть включен в состав ядра.

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

# cd /var/spool/lpd
# mkdir lp
# chown daemon:daemon lp
# chmod 770 lp

Единственная отсутствующая у нас часть — это фильтр lpfilter, который еще предстоит написать. Этот фильтр предназначен для конфигурирования принтера, чтобы устранить проблему ступенчатой печати.Принтер, используемый в этом примере требует следующей строки инициализации: «<ESC>&k2G».

Пример 11.2. /usr/local/libexec/lpfilter

#!/bin/sh
# Treat LF as CR+LF
printf "\033&k2G" && cat && exit 0
exit 2

После того, как вы сохраните этот скрипт, убедитесь, что он выполним:

# chmod 755 /usr/local/libexec/lpfilter*

Замечание

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

if=/usr/libexec/lpr/lpf:

Этот фильтр намного сложнее предыдущего. Он написан для обработки вывода утилиты nroff, отображения подчеркивания и сноски, символов табуляции и конвертации LF в CR + LF. Исходный текст этой программы может быть найден в /usr/src/usr.sbin/lpr/filters/lpf.c.

После выполнения вышеуказанных действий можно снова запустить утилиту lptest, на сей раз используя команду lpr, которая сначала пошлет данные в очередь печати lpd, а затем выполнит фильтр и отошлет данные на принтер:

# lptest 70 5 | lpr -h

Программа lpr печатает текст, используя спулер для посылки данных на принтер; опция -h отключает печать титульного листа (не является необходимой в виду наличия опции sh в /etc/printcap). Пользователи, больше знакомые с системой печати System V могут использовать в качестве альтернативы команду lp(1) вместо lpr(1).

11.3. Конфигурирование Ghostscript

Теперь, когда настроены начальные функции печати, можно добавить возможность печатать файлы PostScript. Принтер, используемый в этом примере, достаточно примитивен и не обладает встроенной поддержкой печати файлов PostScript, поэтому мы должны обеспечить конвертацию команд документа PostScript в последовательность команд, понимаемых принтером. Программа Ghostscript может быть найдена в коллекции портов (смотри Глава 30, Коллекция пакетов). В этом разделе мы рассматриваем конфигурирование lpd для использования Ghostscript, с помощью которой осуществляется печать документов PostScript на принтер HP Deskjet 690C.

Необходимо создать второй идентификатор принтера в /etc/printcap: он будет использовать другой входящий фильтр, который будет вызывать Ghostscript для непосредственной печати документов PostScript. Поэтому, текстовые документы будут печататься на принтере lp, а документы PostScript на принтере ps, то есть используется один физический принтер с разными фильтрами.

Тотже самый результат может быть достигнут при использовании разных конфигураций. Для примера, может быть использован одна запись с одним фильтром, но сам фильтр в этом случае должен быть способен распознавать формат входящего документа. Этот подход требует более сложного фильтра, для его реализации стоит рассмотреть программу magicfilter из коллекции портов.

Для нашего случая, файл /etc/printcap будет выглядеть так:

Пример 11.3. /etc/printcap

lp|local printer|HP DeskJet 690C:\
        :lp=/dev/lpa0:sd=/var/spool/lpd/lp:lf=/var/log/lpd-errs:\
        :sh:pl#66:pw#80:if=/usr/local/libexec/lpfilter:

ps|Ghostscript driver:\
        :lp=/dev/lpa0:sd=/var/spool/lpd/ps:lf=/var/log/lpd-errs:\
        :mx#0:sh:if=/usr/local/libexec/lpfilter-ps:

Опция mx#0 очень важна для печати документов PostScript, так как устраняет ограничения на размер входящего файла, так как такие документы могут быть очень большими. Опция if указывает на новый фильтр, так же указывается новый каталог очереди печати.

Следующим шагом мы создадим каталог очереди печати и программу-фильтр. Порядок создания каталога представлен ниже:

# cd /var/spool/lpd
# mkdir ps
# chown daemon:daemon ps
# chmod 770 ps

Фильтр для PostScript более сложен, чем фильтр обработки текста: печатаемый файл должен сперва быть конвертирован в последовательность команд, понимаемых принтером, после чего будет послан на принтер. Итак, мы вплотную подошли к тому, чтобы превратить дешевенький принтер в устройство, понимающее язык PostScript, используя при этом операционную систему NetBSD и несколько свободно распространяемых пакетов. Опции для конфигурации Ghostscript подробно описаны в документации: cdj550, поскольку именно это устройство обычно используется для управления принтерами HP.

Пример 11.4. /usr/local/libexec/lpfilter-ps

#!/bin/sh
# Treat LF as CR+LF
printf "\033&k2G" || exit 2
# Print the postscript file
/usr/pkg/bin/gs -dSAFER -dBATCH -dQUIET -dNOPAUSE -q -sDEVICE=cdj550 \
-sOutputFile=- -sPAPERSIZE=a4 - && exit 0
exit 2

Подведем итоги: мы создали два различных описания одного физического принтера, использующего разные опции, фильтры и каталоги очереди печати. Могут печататься текстовые файлы и файлы PostScript. Печать файлов PostScript осуществляется с помощью установленного нами пакета Ghostscript, входящего в коллекцию пакетов.

11.4. Команды управления принтером

В этом разделе приведен список наиболее распространенных команд BSD для управления принтером и заданиями печати. Помимо уже упомянутых нами команд lpr и lpd у нас имеются:

lpq
выводит список заданий на печать.

lprm
удалает задание из очереди принтера.

lpc
проверяет систему печати, включает/отключает принтеры и их дополнительные функции.

11.5. Удаленная печать

Система печати может быть настроена для посылки документов на принтер, подключенный к удаленному хосту. Для примера, пусть мы работаем за компьютером с именем wotan, а принтер подключен к компьютеру loge. Файл /etc/printcap на хосте loge соответствует файлу Пример 11.3, «/etc/printcap». Возможность печати с хоста wotan мы будем реализовывать с помощью Ghostscript на loge.

Первый наш шаг будет заключаться в том, что мы должны указать хосту loge принимать задания на печать, посланные с wotan. Для этого мы должны добавить строку с именем wotan в файл /etc/hosts.lpd на loge:

# hostname
loge
# cat /etc/hosts.lpd
wotan

Формат этого файла предельно прост: в каждой строке указывается имя машины, которой разрешено печатать на локальном принтере. По умолчанию, демон lpd прослушивает только локальные сокеты UNIX и не принимает сетевых подключений. Для прослушивания сетевого трафика так же необходимо добавить параметр в /etc/rc.conf:

lpd_flags=""

Затем необходимо отредактировать файл /etc/printcap на машине wotan, чтобы тот посылал задания на loge. Для примера:

lp|line printer on loge:\
	:lp=:sd=/var/spool/lpd/lp:lf=/var/log/lp-errs:\
	:rm=loge:rp=lp

ps|Ghostscript driver on loge:\
	:lp=:sd=/var/spool/lpd/ps:lf=/var/log/lp-errs:\
	:mx#0:\
	:rm=loge:rp=ps

Есть четыре основных отличия этой конфигурации от представленной на Пример 11.3, «/etc/printcap».

  1. Отсутствует определение «lp».
  2. Запись «rm» (удаленная машина) определяет имя хоста, к которому подключен принтер.
  3. Запись «rp» (удаленный принтер) определяет имя принтера, подключенного к удаленной машине.
  4. Нет необходимости определять фильтры, так как они уже определены на машине loge.
  5. Каталог очереди печати должен быть определен на хосте wotan:
    # cd /var/spool/lpd
    # mkdir lp
    # chown daemon:daemon lp
    # chmod 770 lp
    # mkdir ps
    # chown daemon:daemon ps
    # chmod 770 ps

Теперь задания на печать для очередей «lp» и «ps» с хоста wotan будут автоматически посылаться на принтер, подключенный к loge.

Глава 10. Звук

Русский перевод: Михаил Сгибнев

Содержание

10.1. Введение в аппаратную часть
10.2. Настройка BIOS
10.3. Конфигурирование устройства
10.4. Конфигурирование аудиокарты в ядре
10.5. Дополнительные команды
10.5.1. audioctl(1)
10.5.2. mixerctl(1)
10.5.3. audioplay(1)
10.5.4. audiorecord(1)

В этой главе коротко рассказывается об использовании звуковых устройств в NetBSD (кому нужен глухой компьютер?)

10.1. Введение в аппаратную часть

Для того, чтобы появился звук, как минимум, необходимо наличие звуковой карты. Как это не печально, но достаточно часто не удается точно узнать производителя или модель звуковой карты, поэтому необходимо хотя бы знание чипсета. Ядро NetBSD способно распознать довольно много чипсетов, вы можете взглянуть на вывод команды dmesg и, возможно, Ваша карта напишет пару строк о себе.

Сделать это можно так:

# dmesg | more

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

Иногда так бывает, что карта не работает из-за того, что не обнаружена или не настроена. Поскольку звуковые карты сейчас довольно дешевы, можно рассмотреть вопрос о покупке карты, точно поддерживаемой NetBSD, но перед этим давайте попробуем выполнить несколько простых шагов.

10.2. Настройка BIOS

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

Интерфейсы ISA и PCI.

Звуковые карты ISA Plug and Play настраиваются несколько более хитро из-за особенностей взаимодействия с BIOS компьютера.

На более новых материнских платах (произведенных после 1997) есть опция BIOS, которая может причинить много головной боли при настройке устройств ISA Plug and Play (не только звуковых карт): Эта опция называется «PNP OS Installed» и находится обычно в меню «PNP/PCI Configuration» (может отличатся для различных версий BIOS). При работе с NetBSD эту опцию лучше всего отключить. Попробуйте поменять номера используемых прерываний таким образом, чтобы на прерывании, используемым звуковой картой ничего другого не было.

Замечание

Но на многих системах все превосходно работает и с включенной опцией «PNP OS Installed». Это сугубо индивидуально для каждой системы.

10.3. Конфигурирование устройства

При установке NetBSD создаются файлы устройств в каталоге /dev. Нам интересны сейчас следующие:

/dev/audio
/dev/sound
/dev/mixer

Если их нет, придется создать:

# cd /dev
# ./MAKEDEV all

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

Теперь аудио-карта, скорее всего, готова к использованию.

Вы можете устроить маленькую проверку и послать аудиофайл на устройство (такие файлы обычно имеют расширение .au). Если такого файла под рукой нет, то пошлите туда текстовый или бинарный файл, хотя ничего приятного для слуха в этом случае вы не услышите. Используйте /dev/audio или /dev/sound:

# cat filename > /dev/audio

или

# cat filename > /dev/sound

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

10.4. Конфигурирование аудиокарты в ядре

Как уже упоминалось, NetBSD поддерживает широкий диапазон звуковых карт. В ядре GENERIC они уже прописаны, но порой бывает необходимо вручную прописать IRQ и DMA для ISA карт, не поддерживающих стандарт PnP.

Замечание

Когда вы редактируете файл конфигурации ядра, для работы звуковой карты необходимо скопировать соответствующие строки из файла конфигурации GENERIC, для получения более полной информации смотрите Глава 28, Компиляция ядра.

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

Многие чипсеты используют режим совместимости с SoundBlaster и OPL, так же достаточно большое число звуковых карт поддерживает эмуляцию WSS.

OPL является MIDI синтезатором производства Yamaha; есть несколько реализаций этого стандарта (OPL2, OPL3SA, OPL3SA2 и другие). Многие карты имеют этот или совместимый компонент. Для примера, чипы производства Crystal (среди них довольно распространенный CS423x) реализуют в себе эту технологию и хорошо работают с NetBSD.

Аббревиатура WSS является сокращением от Windows Sound System. WSS является драйвером ядра NetBSD, реализующем поддержку аудио системы Microsoft Windows. Многие карты работают с Windows придерживаясь именно этого стандарта, в NetBSD этот стандарт также реализован.

Для работы с NetBSD было протестировано много звуковых карт, довольно большое их число работает, только если в ядре имеется поддержка opl* и wss*.

У Вас не должно возникнуть никаких проблем при работе со звуковыми картами Creative SoundBlaster, поддерживаются все модели, включая Sound Blaster Live 1024!

Когда Вы добились работы звука, Вы можете убрать лишние устройства из ядра.

10.5. Дополнительные команды

В состав NetBSD входит множество команд, имеющих дело со звуковой картой:

10.5.1. audioctl(1)

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

# audioctl -a | more

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

# audioctl -w play=44100,2,16,slinear_le

Эта команда установит дискретность 44100Hz, 2 аудио канала, 16 бит, декодирование slinear_le.

Вы можете просмотреть доступные кодеки командой:

# audioctl encodings

Эта команда отобразит все доступные для вашей аудиокарты кодеки.

10.5.2. mixerctl(1)

Эта команда используется для формирования микширования аудио и имеет интерфейс, подобный audioctl(1).

10.5.3. audioplay(1)

С помощью этой команды Вы можете воспроизвести аудио файл в простом формате, таком как ULAW и WAV. Если Вам необходимо воспроизводить другие, более сложные форматы, Вы можете воспользоваться системой пакетов и установить то, что Вам необходимо (например, для декодирования mp3).

10.5.4. audiorecord(1)

Как следует из названия, это команда используется для записи аудио файлов.

Глава 9. Эмуляция Linux

Русский перевод: Михаил Сгибнев

Содержание

9.1. Установка поддержки эмуляции
9.1.1. Конфигурирование ядра
9.1.2. Установка библиотек Linux
9.1.3. Установка Acrobat Reader
9.2. Структура каталогов
9.3. Эмуляция /proc

В реализации NetBSD для процессоров alpha, mac68k, macppc и некоторых других, число которых постоянно увеличивается, вожможно выполнение бинарных файлов Linux с помощью эмулятора Linux. Осуществляется это с помощью режима эмуляции Linux. Обычно режим эмуляции связывают с чем-то большим, медленным и неэффективным. Это связано с необходимостью эмулировать команды процессора. В нашем же случае ситуация кардинально отличается – необходимо эмулировать только системные вызовы, которые и так весьма похожи друг на друга. Вследствие этого работа эмулятора практически не заметна и скорость работы приложения такова, что неотличима от работы родного приложения NetBSD.

В данной главе мы рассмотрим работу эмулятора Linux на примере приложения Acrobat Reader version 4.

9.1. Установка поддержки эмуляции

Установка эмулятора подробно расписана в странице руководства compat_linux(8). При установке из системы пакетов необходимо выполнить только три шага:

  1. Конфигурирование ядра.
  2. Установка библиотек Linux.
  3. Установка приложения Linux, такого как Acrobat Reader

9.1.1. Конфигурирование ядра

При использовании ядра GENERIC ничего делать не надо, так как совместимость с Linux уже установлена.

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

option COMPAT_LINUX
option EXEC_ELF32

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

9.1.2. Установка библиотек Linux

Получить необходимые библиотеки можно из любого дистрибутива Linux, если только они не слишком старые, но поскольку мы используем для установки систему портов, то установлены будут библиотеки Suse. В процессе установки произойдут следующие события:

  • Будет создана вторая корневая директория, необходимая для запуска Linux-программ, находящаяся в /emul/linux/. Linux-программы в режиме эмуляции требуют, чтобы этот каталог был установлен для них в качестве корневого и используют файлы из него. Если требуемый файл не найден, то буден произведен поиск в /, как в корневой директории.

    Для примера, если приложение Linux открывает файл /etc/ld.so.conf, то сперва он ищется в каталоге /emul/linux/etc/ld.so.conf и если не будет там найден, то ищется в /etc/ld.so.conf.

  • Будут установлены библиотеки Linux. Так как большинство приложений слинковано динамически, то наличие библиотек просто необходимо. Например, в случае Acrobat Reader, если перейти в каталог /usr/pkgsrc/print/acroread и выполнить команду make depends, то мы получим следующее сообщение:
    ===>  acroread-4.0 requires Linux glibc2 libraries - see compat_linux(8).

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

Для установки библиотек используется RPM-формат. Вследствие чего, нам необходимо выполнить make и make install в каталоге /usr/pkgsrc/misc/rpm/ для компиляции и установки утилиты rpm.

Затем установим пакет suse_base. Файлы Suse RPM должны быть скачаны с помощью системы портов или с Suse CD и положены в каталог /usr/pkgsrc/distfiles/suse. Для установки необходимо из каталога /usr/pkgsrc/emulators/suse_base выполнить команды make и make install.

Аналогично устанавливаем suse_compat, suse_libc5 and suse_x11. В итоге имеем:

# pkg_info -a | grep suse
suse_base-7.3nb5    Linux compatibility package
suse_x11-7.3nb2     Linux compatibility package for X11 binaries
suse_compat-7.3     Linux compatibility package with old shared libraries

9.1.3. Установка Acrobat Reader

Теперь все готово для установки Acrobat Reader (или любой другой Linux программы). Переходим в каталог /usr/pkgsrc/print/acroread и выполняем:

# make
# make install

Замечание

при установке Acrobat Reader необходимо добавить строку «ACCEPTABLE_LICENSES+=adobe-acrobat-license» в файл /etc/mk.conf чтобы принять лицензию и выполнить команду make.

9.2. Структура каталогов

Если мы исследуем процесс установки эмуляции Linux, то обнаружим, что /emul/linux – символическая ссылка на каталог /usr/pkg/emul/linux, где была развернута следующая структура:

bin/
boot/
cdrom/
dev/
etc/
floppy/
home/
lib/
mnt/
opt/
proc/
root/
sbin/
usr/

Замечание

Всегда обращайтесь к /emul/linux, а не к /usr/pkg/emul/linux, так как этот кактлог может быть изменен в будущем.

Как много свободного места требуется для эмулятора? На своей системе я получил следующее значение:

# cd /usr/pkg/emul
# du -k linux
...
214049   linux/

Сама же программа Acrobat Reader была установлена в традиционном для бинарных файлов каталоге /usr/pkg/bin.

$ acroread netbsd.pdf

9.3. Эмуляция /proc

Некоторые Linux программы используют в своей работе Linux-like файловую систему /proc. Файловая система /proc, используемая в NetBSD может эмулировать /proc, которая содержит специфические для Linux псевдофайлы. Этого можно достичь с помощью опции «linux»:

# mount_procfs -o linux procfs /emul/linux/proc

В этом примере файловая система proc была смонтирована в каталог /emul/linux/proc. Вы также можете указать NetBSD монтировать ее автоматически при каждой загрузке с помощью следующей записи в /etc/fstab:

procfs /emul/linux/proc procfs ro,linux

Глава 8. X

Русский перевод: Михаил Сгибнев

Содержание

8.1. Что такое X?
8.2. Конфигурирование
8.3. Мышь
8.4. Клавиатура
8.5. The monitor
8.6. Видеокарта
8.6.1. XFree 3.x
8.6.2. XFree86 4.x
8.7. Запуск X
8.8. Персональная настройка X
8.9. Другие менеджеры окон
8.10. Графический вход в систему с xdm

8.1. Что такое X?

X Window System является графической средой, доступной для NetBSD и других Unix (и не только Unix)систем. На самом деле, это даже немножко больше, за счет использования протокола X. X Window System является «прозрачной» для сети и позволяет выполнять распределенные (клиент-серверные) приложения. В довольно грубом приближении это означает, что Вы можете запустить приложение на одной машине (клиент), а графический вывод будет производиться на другой машине (сервер), при этом нет необходимости модифицировать само приложение. Разработкой и поддержкой X Window System занимается X Consortium, и текущим релизом является X11R6. X, используемой в NetBSD является XFree86, свободно распространяемая версия X Window System.

Примите во внимание то, что X Window System является только базовой основой для таких современных графических систем управления рабочим столом, как GNOME, KDE или XFCE, не входящих в состав X Windows System, и поэтому в NetBSD они не входят в состав дистрибутива. При необходимости Вы можете легко их добавить, используя систему портов pkgsrc.

Если Вы захотите использовать X, то столкнетесь с множеством непонятных и запутанных на первый взгляд терминов. Вот несколько основных из них, необходимых для понимания и использования Х:

  • Оборудование работы с видеосигналом поддерживаемое XFree86, такое как Ваша видеокарта.
  • X сервер выполняющийся на определенных аппаратных средствах. X server обеспечивает стандартный способ открытия окон, рисования графики (включая шрифты) и обработку ввода от клавиатуры, мыши или прочих устройств. X является программным продуктом, прозрачным для сети, поэтому Вы можете выполнять клиентов Х на одной машине, а сервер Х на другой машине (имея дисплей и видеокарту).
  • Оконный менеджер, запущенный под управлением Х сервера. Оконный менеджер по сути своей – специальный клиент, которому позволяют управлять размещением окон. Также он добавляет такие удобные вещи, как изменение размера окна, перемещение его по рабочему пространству, возможность свернуть, отобразить иконки, закрывать окна и т.д.
  • Менеджер рабочего стола такой, как KDE или GNOME. Такие менеджеры представляют собой набор более или менее интегрированного программного обеспечения, с общим интерфейсом (что тоже весьма условно). Они включают в себя интегрированную справочную систему, замену стандартному xterm, среды программирования, средства проигрывания аудио/видео и т.д.
  • Все прочие приложения, которые Вы используете. Они общаются с сервером Х через оконный менеджер и обычно приложения не оказывают какого-либо влияния на оконный менеджер, хотя, бывают и исключения (Например, GNOME может определить, что Вы установили GIMP, и добавит соответствующий пункт в меню запуска).

Подведем итоги: для использования графического режима необходимо:

  • XFree86 system
  • Оконный менеджер (в составе XFree86 идет оконный менеджер twm, обеспечивающий начальные функции).
  • Если Вы предпочитаете более сложную среду, возможно Вы захотите установить такой программный продукт, как KDE или GNOME. Системы управления рабочим столом могут быть полезны для тех пользователей, которые привыкли работать с MS Windows или Macintosh (Например, KDE очень похож в использовании на MS Windows.

Замечание

Вы должны себе четко представлять, что в настоящее время ни GNOME ни KDE не содержат в своем составе Х сервер. Данные менеджеры рабочего стола работают под управлением Х сервера от XFree86. KDE и GNOME могут использовать свой собственный оконный менеджер или менеджер стороннего производителя.

Обычно вы можете запустить один оконный менеджер одновременно на одном X-сервере (Конечно, Вы можете запустить несколько серверов X на одном компьютере). Если оконный менеджер не запущен, а Вы стартуете KDE/GNOME, то данные системы запустят оконный менеджер самостоятельно.

8.2. Конфигурирование

Если Вы не выбрали минимальную конфигурацию при инсталляции системы, X уже установлен и готов работать на вашем компьютере. В зависимости от используемой платформы, Вам может потребоваться сконфигурировать X сервер. На некоторых рабочих станциях (sparc, pmax, …) возможна работа без конфигурации X-сервера, достаточно просто запустить /usr/X11R6/bin/X.

На PC (i386, amd64), Shark и некоторых других платформах, Вам необходимо настроить X-сервер, создав перед первым запуском файл конфигурации /etc/X11/XF86Config. Для того, чтобы получить представление о том, как должен выглядеть этот файл, советуем посмотреть /usr/X11R6/lib/X11/XF86Config.eg. Структура конфигурационного файла формально описана в справке XF86Config(5) и может быть просмотрена командой:

# man XF86Config

Перед конфигурированием системы желательно тщательно прочитать документацию, найденную в /usr/X11R6/lib/X11/doc: там находится довольно много README, связанных с работой видеокарт, мышей и специфических для NetBSD устройств (помечены как (README.NetBSD). Для начала, рекомендуется изучить QuickStart.doc. У вас может возникнуть ощущение, что другие системы позволят Вам получить желаемое, затрачивая меньше усилий, но время, проведенное за изучением документации не будет потрачено впустую: знание X окажется очень полезным в последующем и поднимет Ваш профессиональный уровень на недосягаемую высоту в плане конфигурирования Х.

Вы можете создать /etc/X11/XF86Config вручную, используя текстовый редактор, или сгенерировать в автоматическом режиме, используя интерактивные программы конфигурирования. Самыми лучшими известными программами являются xf86config, XF86Setup (XFree86 3.x) и xf86cfg (XFree86 4.x). xf86config и xf86cfg по умолчанию устанавливаются вместе с X; XF86Setup графическая утилита конфигурирования и может быть установлена с помощью системы портов pkgsrc.

Как Вы сможете заметить, лучше всего окажется смешанный подход: создайте XF86Config с помощью одной из двух утилит, а потом проверьте и отредактируйте с помощью редактора. xf86cfg:

# xf86cfg
# сконфигурируйте и сохраните в /etc/X11/XF86Config
# vi /etc/X11/XF86Config

или утилита командной строки xf86config:

# xf86config
# сконфигурируйте и сохраните в /etc/X11/XF86Config
# vi /etc/X11/XF86Config

Интерфейс этих программ отличается, но требует знания следующих параметров:

  • тип мыши и имя используемого устройства
  • раскладку и тип клавиатуры
  • тип видеокарты
  • тип монитора

Перед конфигурированием системы убедитесь, что обладаете всей необходимой информацией.

8.3. Мышь

Сперва проверьте, какой тип мыши у Вас используется (для серийного порта, PS/2 или иной) и устройство (для примера, wsmouse требует другой протокол). Если Вы используете мышь для параллельного порта, то установите требуемый протокол и используемый порт.

для примера, PS/2 и USB мыши добавляют устройство wsmouse и поэтому Вы должны использовать:

Section "Pointer"
  Protocol    "wsmouse"
  Device      "/dev/wsmouse0"
EndSection

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

Section "Pointer"
  Protocol    "Microsoft"
  Device      "/dev/tty00"
EndSection

/dev/tty00 является первым последовательным портом и /dev/tty01 соответственно вторым. Протокол может быть различен для различных моделей мышей, смотрите файл XF86Config.eg.

8.4. Клавиатура

Даже если Вы уже конфигурировали вашу клавиатуру для wscons, Вы должны сконфигурировать ее для Х, дабы установить раскладку, отличную от американской.

Самое простое решение состоит в том, чтобы использовать протокол XKB для определения раскладки и типа клавиатуры.

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

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "keyboard"
	Option      "XkbRules" "xfree86"
	Option      "XkbModel" "pc102"
	Option      "XkbLayout" "us,ru"
	Option      "XkbOptions" "ctrl:nocaps"
EndSection

Если Вы хотите использовать «Windows» клавиши на Вашей клавиатуре, используйте «pc105» вместо «pc102» для XkbModel.

8.5. The monitor

Очень важно правильно определить частоту кадровой и строчной развертки монитора, что позволит уберечь от поломки монитор в следствие выбора неправильного режима. Эта информация может быть найдена в руководстве на монитор. В каталоге документации X есть файл, содержащий параметры настройки многих мониторов; эта информация может использоваться, как отправная точка для настройки индивидуальных параметров.

8.6. Видеокарта

Видеокарта может быть выбрана из базы данных программ конфигурации; программа сама позаботится обо всех необходимых установках. Поддержка видеокарт в XFree86 3.x и 4.x сильно отличается.

XFree86 3.x имеет несколько серверов для работы на различных чипсетах. XFree86 4.x имеет только один сервер. Различные видеокарты поддерживаются за счет платформо-независимых модулей драйверов, находящихся в /usr/X11R6/lib/modules/drivers.

8.6.1. XFree 3.x

Когда Вы выбрали правильную видеокарту, Вы должны выбрать сервер X для платы. Обычно программы конфигурации могут автоматически определить правильный сервер, но некоторые видеокарты могут управляться больше чем одним сервером (например, S3 Virge поддерживается серверами SVGA И S3V); в этом случае изучите документацию серверов, чтобы решить, какой подойдет Вам больше всего: различные серверы обычно имеют различные возможности и различную степень поддержки видеокарты.

8.6.2. XFree86 4.x

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

8.7. Запуск X

Когда Вы выйдете из программы конфигурации, будет создан файл /etc/X11/XF86Config, который в будущем необходимо проверить и модифицировать вручную.

Перед запуском X Вам необходимо:

  • Проверьте, что символическая ссылка /usr/X11R6/bin/X указывает на правильный сервер X:
    # ls -l /usr/X11R6/bin/X
  • Проверьте верность конфигурации. Запустите:
    # X -probeonly

    и тщательно исследуйте вывод.

Теперь можно запускать X следующей командой:

# startx

Если X не запускается, значит есть ошибка в файле конфигурации.

Если Х запустился, но работает совсем не так, как ожидалось (например не работает мышь), то Вы можете выйти с использованием комбинации Ctrl-Alt-Backspace (работает не на всех платформах). Если все сработало правильно, то Вы окажетесь в оконном менеджере, установленном по умолчанию (twm). Несмотря на ограниченные возможности, есть достаточно много пользователей, которым вполне хватает twm для работы. Если Вы хотите больше красоты, настраиваемости и удобства, то в коллекции портов есть достаточный выбор оконных менеджеров, смотрите Раздел 8.9, «Другие менеджеры окон».

В качестве начала настройки X под себя, давайте с помощью xterm изменим цвет фона:

# xsetroot -solid DarkSeaGreen

8.8. Персональная настройка X

Для настройки среды X есть несколько способов. Самый простой метод состоит в том, чтобы копировать файл .xinitrc со значениями по умолчанию в Ваш домашний каталог и изменить его под себя. Для примера:

# cp /usr/X11R6/lib/X11/xinit/xinitrc ~/.xinitrc
# vi .xinitrc

В следующем примере будет использоваться оконный менеджер twm, xclock будут находиться в нижней правой части экрана и будут запущены две xterm консоли. Цвет «Bisque4» используется в качестве фона.

the first part of the file is the same
...
# start some nice programs
twm &
xclock -geometry 50x50-1-1 &
xterm -geometry 80x34-1+1 -bg OldLace &
xsetroot -solid Bisque4 &
exec xterm -geometry 80x44+0+0 -bg AntiqueWhite -name login

В этом примере, для выхода из Х необходимо просто закрыть xterm, обозначенный как «login».

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

xcolorsel
отображает все цвета, определенные в файле rgb.txt. Используйте для смены цвета фона или окон.

xpmroot
Позволяет использовать рисунок в качестве фонового.

xscreensaver
Хранители экрана

xdaemon
Ни один рабочий стол не может обойтись без демоненка BSD, шныряющего по экрану :-)

8.9. Другие менеджеры окон

Если Вам не нравится twm, оконный менеджер без излишеств и не очень настраиваемый, то Вы можете выбрать любой другой из коллекции портов. Наиболее популярными являются: fvwm2, olwm/olvwm (Open Look Window Manager), WindowMaker, Enlightenment, AfterStep.

Ниже описана в качестве примера инсталляция WindowMaker. WindowMaker – приятный взору и хорошо конфигурируемый оконный менеджер. Для установки программы будем использовать прекомпилированный пакет windowmaker-0.60.tgz, с установкой всех зависимостей. Как обычно, будем использовать pkg_add и make install для автоматической загрузки зависимостей.

# cd /usr/pkgsrc/x11/windowmaker
# make depends-list
xpm-3.4k
jpeg-6b
pkglibtool-1.2p2
giflib-3.0
libproplist-0.9.1
tiff-3.5.2

Замечание

Также для построения списка зависимостей можно использовать команду:

# pkg_info -f windowmaker-0.61.0.tgz | grep depends

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

# pkg_add windowmaker-0.61.0.tgz
      wmthemes-0.6x.tgz

WindowMaker установлен; для его запуска необходимо модифицировать файлы .xinitrc и/или .xsession: заменить вызов twm на wmaker. Для примера:

# start some nice programs
# start WindowMaker
wmaker &
xclock -geometry 50x50-1-1 &
xdaemon2 -geometry +0-70 &
...

В этом примере программа xdaemon стартует автоматически.

Перед запуском WindowMaker должна быть запущена конфигурационная программа:

$ wmaker.inst
$ startx

8.10. Графический вход в систему с xdm

Если Вы всегда в работе используете X, и первым делом после входа в систему выполняете startx, то Вы можете установить графический вход в систему для вашей рабочей станции. Это очень просто.

  1. Создайте файл .xsession в Вашем домашнем каталоге. Он подобен ~/.xinitrc и может, фактически, быть ссылкой на него.
    # cd $HOME
    # ln -s .xinitrc .xsession
  2. Модифицируйте файл /etc/rc.conf:
    xdm=YES       xdm_flags=""       # x11 display manager

    Если Вы предпочитаете, то можете добавить в конец файла /etc/rc.local следующую строку:

    /usr/X11R6/bin/xdm

    Этот метод может использоваться для запуска, например, kdm или gdm вместо xdm.

Конфигурационный файл xdm находится в каталоге /usr/X11R6/lib/X11/xdm. В файле Xservers X указано стартовать на консоли «vt05», попасть на нее Вы можете, нажав «CTRL+ALT+F5»; если есть желание использовать другой терминал – исправьте это значение. Чтобы избежать конфликта между getty и xdm, желательно запустить xdm на виртуальном терминале, где getty заблокирован. Например, если в Xservers установлено:

:0 local /usr/X11R6/bin/X :0 vt04

в /etc/ttys должно быть

ttyE3   "/usr/libexec/getty Pc"         vt220   off secure

(пожалуйста, обратите внимание, что vt04 соответствует ttyE3, потому что символ vt начинается с 1, а ttyE начинается с 0)

Если Вы желаете изменить приглашение xdm, то возможно изменение файла конфигурации. Например, для изменения цвета фона, Вы можете добавить следующую строку в файл Xsetup_0:

xsetroot -solid SeaGreen

Если Вы хотите использовать фоновое изображение, то воспользуйтесь программой xpmroot: Для примера:

xpmroot /path_to_xpm/netbsd.xpm

Если вы начнете экспериментировать с файлом конфигурации, Вы можете достичь впечатляющих результатов и оформить приятный экран входа в систему. Отметьте, что другие оконные менеджеры, такие как gdm и kdm имеют различную конфигурацию.

Глава 7. Редактирование

Русский перевод: Вадим Лопатюк

Содержание

7.1. Введение в vi
7.1.1. Интерфейс vi
7.1.2. Переключение в режим редактирования
7.1.3. Переключение режимов и сохранение буфера в файл
7.1.4. Копирование и вставка
7.1.5. Навигация в тексте
7.1.6. Поиск по файлу, альтернативное управление
7.1.7. Пример сессии
7.2. Конфигурирование vi
7.2.1. Расширения для .exrc
7.2.2. Документация
7.3. Использование тэгов в vi

7.1. Введение в vi

Данное введение в редактор vi не нужно бывалым пользователям UNIX. Редактор vi, изначально разработан Биллом Джой (Bill Joy) из Sun Microsystems, как бесконечно расширяемый, простой в использовании легкий ASCII редактор и бич новичков. Этот раздел должен ввести новичков в редактор vi и, возможно, подкинуть несколько хороших идей бывалым пользователям.

В первой половине этого раздела будет рассмотрено редактирование, сохранение, копирование/вставка и навигация по файлу во время сессии vi. Во второй половине будет пошагово рассмотрен пример сессии vi в помощь начинающим.

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

7.1.1. Интерфейс vi

Использование редактора vi в действительности не сильно отличается от остального терминального программного обеспечения за одним исключением – он не использует вкладочный (или вынужденный, если Вам угодно) стиль интерфейса, хотя многие версии vi принудительно его используют не предоставляя какой-либо видимости или ощущения типичного обязывающего интерфейса. Вместо этого он работает в двух режимах: командном и редактирования. Сейчас это может показаться странным, но это не сильно отличается от windows-основанного редактирования, если Вы об этом подумали. Примите это как пример, если Вы используете графические функции в редактировании и выделяете какой-либо текст, выбираете вырезать, а затем вставить, все время, пока Вы пользуетесь мышью, Вы не редактируете (даже если бы и могли). В vi, имеются такие функции, как простое удаление всей строки командой dd в командном режиме, перемещение строки по вашему желанию в другое место и ее вставка p в командном режиме. Можно говорить об аналогии с «режим мыши против командного режима» (хотя она не в полной мере отражает концепцию идеи).

Для начала сессии vi есть один простой способ, который может работать со всем терминальным программным обеспечением:

$ vi filename

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

7.1.2. Переключение в режим редактирования

Редактор vi поддерживает набор опций, предоставляемых при загрузке. Пока мы посмотрим просто загрузку по умолчанию. Если его вызвать, как указано выше, то редактор по умолчанию загружается в командном режиме. В сущности, Вы не можете начинать набор в буфер. Вместо этого Вы можете выйти из командного режима для ввода текста. Следующий текст описывает режимы начала редактирования:

a Добавить после курсора.
A Добавить в конец строки.
C Изменить содержание текущей строки.
cw Изменить текущее слово.
i Вставить перед курсором.
I Вставить перед первой непустой строкой.
o Открыть строку ниже для вставки.
O Открыть строку выше для вставки.

7.1.3. Переключение режимов и сохранение буфера в файл

Конечно, знание команд редактирования не очень полезно, если Вы не можете переключиться обратно в командный режим и сохранить файл. Для переключения обратно просто нажмите клавишу ESC. Для введения определенных команд должно использоваться двоеточие. Набирайте команды одним блоком. Чтобы сделать это, просто введите :.

Ведите двоеточие и затем команды в левом нижнем углу экрана. Давайте посмотрим на команды сохранения:

:w Записать буфер в файл.
:wq Записать буфер в файл и выйти.

7.1.4. Копирование и вставка

Что хорошего в редакторе, если Вы не можете манипулировать блоками текста? Конечно vi очень хорошо поддерживает эту функцию и большинство команд vi достаточно интуитивны. Чтобы скопировать строку, но не удалять ее, просто нажмите yy или Y в командном режиме и текущая строка будет скопирована в буфер. Для вставки строки переместитесь в необходимое место текста и нажмите клавишу p для выполнения команды «вставка». Для перемещения строки удалите всю строку командой dd, после чего переместитесь в новое место и вставьте ее с помощью команды p.

7.1.4.1. Ой, я не хотел этого делать!

Функция отмены очень проста, u отменяет последнее действие, а U отменяет удаление последней строки или изменения, сделанные в ней.

7.1.5. Навигация в тексте

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

Для начала я рекомендую переключиться в командный режим и тогда перемещаться. Это немного безопаснее, пока нет большой практики. Если терминал не имеет или не поддерживает использование клавиш курсора, используйте следующее:

k Переместить курсор на одну строку выше.
j Переместить курсор на одну строку ниже.
l Переместить курсор на один символ вправо.
h Переместить курсор на один символ влево.

Если терминал имеет и поддерживает их, клавиши управления курсором могут использоваться для навигации по тексту в командном режиме.

В дополнение к навигации «в одно касание» vi поддерживает переход на строку простым набором ее номера в командной строке. Например, если Вам необходимо перейти на 223-ю строку команда для редактора будет выглядеть так:

ESC
:223

7.1.6. Поиск по файлу, альтернативное управление

Редактор vi поддерживает поиск с использованием синтаксиса регулярных выражений, тем не менее, в командном режиме это немного отличается. Просто нажмите клавишу / в командном режиме и введите то, что Вам нужно найти, как например, скажем нам необходимо найти выражение foo:

/foo

Теперь проиллюстрируем немного другой пример, скажем нам нужно найти выражение foo bar:

/foo bar

7.1.6.1. Дополнительные команды навигации

Поиск и прокрутка – не единственные способы навигации по буферу vi. Далее список коротких команд навигации, доступных в vi:

0 Переместиться в начало строки.
$ Переместиться в конец строки.
b Переместиться назад на слово.
w Переместиться вперед на слово.
G Переместиться в конец буфера.
H Переместиться в верхнюю строку на экране.
L Переместиться к последней строке на экране.
M Переместить курсор в середину экрана.
N Искать следующее совпадение, но в обратном направлении.
n Искать следующее совпадение в том же направлении.

7.1.7. Пример сессии

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

# vi foo.txt

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

This is some text

there we skipped a line
~
~
~
~

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

Теперь, когда мы находимся в командном режиме, давайте сохраним файл. Сначала нажмите клавишу :, курсор должен разместиться в нижнем левом углу, сразу после приглашения. За приглашением : введите w и нажмите клавишу ENTER или ВВОД. Файл будет сохранен. Здесь должно появится сообщение о выполнении команды, некоторые редакторы vi также скажут Вам название файла, количество строк и объем сохраненного.

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

В конце, давайте сделаем еще две вещи: сначала перейдем к первой строке, затем к первому символу. Испытайте некоторые клавиши навигации командного режима в этой строке, попеременно понажимайте следующие клавиши:

$
0
$
0

Курсор должен перескочить к концу строки, назад к началу и затем вновь в конец.

Далее, поиск выражения по нажатию клавиши / и выражению, вот так:

/we

Курсор должен перескочить к первому совпадению с «we».

Теперь сохраните файл и выйдите:

:wq

7.2. Конфигурирование vi

Не нужно говорить, что стандартный редактор, включаемый в NetBSD это vi, самый обожаемый и ненавидимый редактор в мире. Если Вы не используете vi, пропустите этот раздел, в противном случае прочитайте его перед установкой другой версии vi. NetBSD-шный vi (nvi) написан Кейт Бостик (Keith Bostic) из UCB с целью получить наиболее свободно распространяемую версию этого редактора и более расширяемую, стоящую изучения, остающуюся максимально совместимой с оригинальным vi. Nvi стал стандартной версией vi для BSD.

Среди большинства расширений, интересны:

  • Расширение регулярных выражений (стиль egrep), добавляется опцией extended.
  • Стэки тэгов.
  • Бесконечная отмена(для отмены, нажатьu; для продолжения отмен – .).
  • Нарастающий поиск подключается опцией searchincr.
  • Прокрутка строк влево-вправо подключается опцией leftright; количество символов для прокрутки определяется опцией sidescroll.
  • Редактирование истории командной строки подключается опцией cedit.
  • Автозавершение имен файлов подключается опцией filec.
  • Фоновые экраны.
  • Редактирование с разделением экрана.

7.2.1. Расширения для .exrc

Следующий пример показывает файл .exrc file с некоторыми включенными расширенными функциями.

set showmode ruler
set filec=^[
set cedit=^[

Первое подключает отображение позиции курсора (строки и столбцы) и текущего режима (Command, Insert, Append) в строке статуса. Вторая строка (где ^[ это символ ESC) подключает автозавершение имен файлов по ESC. Третья строка подключает редактирование истории командной строки (также по ESC.) Например, напишите «:» и нажатие ESC откроет окно со списком предыдущих команд, которые можно редактировать и исполнять (нажатие Enter на команде запустит ее.)

7.2.2. Документация

Архивы исходных текстов (src.tgz) содержат массу пользовательской документации по (n)vi и расширениям в каталоге /usr/src/usr.bin/vi/docs. Например:

  • Edit: A tutorial
  • Ex Reference Manual
  • Vi man page
  • An Introduction to Display Editing with Vi by William Joy and Mark Horton
  • Ex/Vi Reference Manual by Keith Bostic
  • Vi Command & Function Reference
  • Vi tutorial (beginner and advanced)

Если Вы никогда не пользовались vi, «Vi tutorial» - хорошая отправная точка. Он рассказывает об использовании vi и постепенно знакомит читателя со всеми командами vi, которые можно тестировать по мере прочтения. An Introduction to Display Editing with Vi от Вильяма Джой (William Joy) и Марка Хорнона (Mark Horton) также очень хорошая отправная точка.

Если Вы желаете больше прочесть о vi и расширении nvi, Вам необходимо прочесть Ex/Vi Reference Manual от Кейт Бостик (Keith Bostic) в котором задокументированы все опции и команды редактора.

7.3. Использование тэгов в vi

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

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

  1. cd в головной каталог исходных текстов.
    $ cd /path
  2. Введите следующие команды:
    $ find . -name "*.[ch]" > filelist
    $ cat filelist | xargs ctags
  3. Добавьте следующую строку в .exrc
    set tags=/path/tags

    (пропишите необходимый путь вместо path.)

Глава 6. Система rc.d

Русский перевод: Вадим Лопатюк

Содержание

6.1. Конфигурация rc.d
6.2. Сценарии rc.d
6.3. Роль rcorder и rc сценариев
6.4. Дополнительно к прочтению

Начиная с версии NetBSD 1.5 загрузка системы была изменена на использования rc-сценариев (скриптов), для контроля за сервисами, используемых в некоторых системах инициализации (init-system) System V и Linux, но без уровней запуска (runlevels). Эта глава – обзор rc- системы и ее конфигурации в NetBSD.

6.1. Конфигурация rc.d

Загрузочные файлы системы располагаются в каталоге /etc и называются:

  • /etc/rc
  • /etc/rc.conf
  • /etc/rc.d/*
  • /etc/rc.lkm
  • /etc/rc.local
  • /etc/rc.shutdown
  • /etc/rc.subr
  • /etc/defaults/*
  • /etc/rc.conf.d/*

Сначала посмотрите как управляются и поддерживаются сценарии, подробная информация содержится в rc(8):

  • Когда ядро инициализирует все устройства при загрузке – оно обычно запускает init(8), который, в свою очередь, производит запуск /etc/rc.d
  • /etc/rc сортирует сценарии в /etc/rc.d используя rcorder(8), и запускает их в этом порядке. См. rcorder(8) страницу руководства для ознакомления с правилами определяется очередности /etc/rc.d сценариев.
  • /etc/rc.subr содержит общие функции используемые большинством сценариев /etc/rc.d/*.
  • Когда система отключается командой shutdown(8), то /etc/shutdown запускает скрипты из /etc/rc.d в обратном порядке (определенном в rcorder(8)) с ключом останова сервиса.

Дополнительные скрипты, находящиеся вне директории rc.d:

  • /etc/rc.lkm загрузка или выгрузка Загружаемых Модулей Ядра (Loadable Kernel Modules), см. modload(8) и /etc/rc.d/lkm[123].
  • /etc/rc.local это едва ли не последний сценарий, вызываемый при загрузке. Этот сценарий может редактироваться администратором для запуска локальных демонов (daemons), он не соответствует концепции rc.

    Например, пакеты установленные pkgsrc обычно добавляют в него загрузочные файлы из/usr/pkg/etc/rc.d, и оставляют системному администратору принимать решение о их подключении любым способом: ручное копирование/ссылка на них в /etc/rc.d, или включение их в /etc/rc.local. Далее пример из системы с установленным web-сервером apache, запуск которого прописан в /etc/rc.local:

    if [ -f /usr/pkg/etc/rc.d/apache ]; then
    	/usr/pkg/etc/rc.d/apache start
    fi

Основным конфигурационным файлом для загрузочных сценариев является rc.conf(5), который располагается в /etc/rc.conf. /etc/rc.conf загружает настройки «по умолчанию» из /etc/defaults/rc.conf, к которому не нужно прикасаться. При необходимости вернуться к старым настройкам «по умолчанию», им можно подменить установленный в /etc/rc.conf.

Например, если вам нужно подключить демон SSH (Secure Shell Daemon):

# cd /etc; grep ssh defaults/rc.conf
sshd=NO                 sshd_flags=""
# echo "sshd=YES" >> rc.conf

Или просто отредактируйте /etc/rc.conf вашим любимым редактором. Таким же образом можно поступить с любыми настройками «по умолчанию», которые необходимо изменить. Общая последовательность команд, часто выполняемая после установки свежей системы NetBSD:

# cat /etc/defaults/rc.conf >>/etc/rc.conf
# vi /etc/rc.conf

Будте внимательны! Используйте «>>», а не «>» в противном случае вы можете уничтожить предыдущее содержание /etc/rc.conf. Учтите, в этом файле находятся необходимые для работы системы параметры! После того, как вы скопируете установки этим способом, модифицируйте все что вам необходимо в /etc/rc.conf. Проконсультируйтесь со страницей руководства rc.conf(5) для получения более подробной информации.

Последний каталог по списку но не по значению: /etc/rc.conf.d/, который может быть использован для хранения скриптов стороннего программного обеспечения, позволяя устанавливать одну или несколько настроек на каждый файл.

6.2. Сценарии rc.d

Актуальные сценарии управления сервисами располагаются в /etc/rc.d. Каждый сервис должен быть единожды активирован или не активирован в /etc/rc.conf, который также может быть модифицирован для вызова rc сценариев из командной строки, например, если администратору необходимо запустить демон SSH:

# /etc/rc.d/sshd start
Starting sshd.

Сценарии rc могут принимать один из следующих аргументов:

  • start
  • stop
  • restart
  • kill

Например, когда должна быть добавлена новая запись в базу данных named сервера:

# /etc/rc.d/named restart
Stopping named.
Starting named.

Немного более комплексный пример – когда было изменено несколько настроек.правил брандмауэра ipfilter, конфигурации ipnat и изменен тип криптования SSH сервера:

# sh /etc/rc.d/ipfilter restart
# sh /etc/rc.d/ipnat restart
# sh /etc/rc.d/sshd restart

6.3. Роль rcorder и rc сценариев

Загрузка системы во всех Unix системах основывается на определении последовательности в которой будут запускаться сервисы в том или ином случае. На некоторых Unix системах это реализуется определенным порядком именования файлов и/или помещении их в отдельные директории запуска (Solaris полагается на маски, такие как – /etc/rc[23].d/S*, осуществляя сортировку по цифровому расширению), или просто размещая все команды, которые должны запускаться при системной загрузке в один монолитный сценарий (который использовался в старых BSD и NetBSD до rc-системы). Но он будет очень запутан. В NetBSD это выполняется rc-сценариями и их содержанием. Обратите внимание NetBSD не имеет многих уровней запуска, какие можно найти в системах System V, таких как Solaris или Linux.

В начале каждого из rc-сценариев в /etc/rc.d/*, там где серия строк-коментариев, имеется одна из следующих составляющих:

  • REQUIRE
  • PROVIDE
  • BEFORE
  • KEYWORD

Здесь устанавливаются зависимости данного rc сценария и отсюда rcorder может легко работать «вверх» или «вниз» в зависимости от требований ситуации. Следующий пример /etc/rc.d/nfsd сценария:

...
 PROVIDE: nfsd
 REQUIRE: mountd

. /etc/rc.subr
...

Здесь мы можем увидеть, что этот сценарий необходим для «nfsd» и он требует, чтобы «mountd» был запущен раньше. Утилита rcorder(8) должна использоваться во время системной загрузки для сковозного прочтения всех rc-сценариев, и определения корректной последовательности их запуска (индивидульно по имени).

6.4. Дополнительно к прочтению

Это дополнительно доступные ресурсы, относящиеся к rc.d system:

  • Один из главных создателей rc.d, Luke Mewburn, сделал презентацию системы на USENIX 2001. Она доступна в PDF формате.
  • Will Andrews написал в Daemonnews статью, названную The NetBSD rc.d System.

Глава 5. Вторая загрузка

Русский перевод: Михаил Сгибнев

Содержание

5.1. dmesg
5.2. Монтируем CD-ROM
5.3. Монтируем флоппи-диск
5.4. Получаем доступ к разделу DOS/Windows
5.5. Добавляем пользователей
5.6. «Теневые» пароли
5.7. Остановка и перезагрузка системы

Во время первой загрузки, вы выполнили базовую конфигурацию системы. В этой главе мы опишем набор общих команд и действий.

5.1. dmesg

При запуске системы ядро печатает длинную последовательность сообщений, эти сообщения информируют состоянии ядра (например, об объеме доступной памяти) и внешних устройствах, обнаруженных в системе. Эта информация необходима при диагностике проблем с аппаратными устройствами или их конфигурацией, а также при определении наименований устройств системы, соответствующих оборудованию (например, возможно, что ваша сетевая карта обнаружена как устройство ne0 или ne1. Обычно при загрузке эти сообщения прокручиваются на экране слишком быстро, чтобы извлечь из них какую-либо пользу, однако команда dmesg(8) позволяет их просмотреть:

# dmesg | more

Если что-то в вашей системе работает не корректно и вы обращаетесь за помощью в один из списков рассылки NetBSD, не забывайте вместе с информацией о возникшей проблеме привести также и сообщения dmesg /var/run/dmesg.out, это поможет другим лучше понять вашу проблему.

5.2. Монтируем CD-ROM

Новички часто бывают удивлены тем, что, несмотря на успешное обнаружение и монтирование CDROM программой установки, установленная система как будто «забыла» как пользоваться CDROM. В использовании CDROM нет особой премудрости — вы можете монтировать его как и любую другую файловую систему, необходимо знать только имя устройства и набор необходимых параметров для команды mount(8). Имя устройства вы можете узнать при помощи уже вышеупомянутой команды dmesg(8). Например, dmesg(8) говорит нам:

# dmesg | grep ^cd
cd0 at atapibus0 drive 1: <ASUS CD-S400/A, , V2.1H> type 5 cdrom removable

Устройство называется cd0 и вы можете примонтировать CD-ROM следующей командой:

# mkdir /cdrom
# mount -t cd9660 -o ro /dev/cd0a /cdrom

Для облегчения этого действия можно добавить следующую строку в /etc/fstab:

/dev/cd0a /cdrom cd9660 ro,noauto 0 0

Перезагрузки не потребуется. После этого вы можете примонтировать CD-ROM следующей командой:

# mount /cdrom

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

# umount /cdrom

Есть также способ программно отмонтировать и извлечь CDROM:

# eject /dev/cd0a

5.3. Монтируем флоппи-диск

Чтобы монтировать флоппи-диск необходимо знать наименование устройства и тип файловой системы на диске. См. также страницу man fdc(4). Например, флоппи-диск с файловой системой FAT(или FAT32) монтируется следующей командой:

# mount -t msdos /dev/fd0a /mnt

Вместо /mnt можно пользоваться любым другим каталогом на ваше усмотрение. Например, можно создать каталог /floppy и использовать его для монтирования флоппи-диска. Если вы много работаете с флоппи-дисками, вам, возможно, пригодится пакет mtools, с помощью которого можно обращаться к флоппи-дискам или к разделам на жестком диске, форматированными в FAT/FAT32 без необходимости их монтировать. Это достаточно удобно, когда необходимо быстро скопировать файл на флоппи-диск или скопировать с флоппи-диска:

# mcopy foo bar a:
# mcopy a:baz.txt baz
# mcopy a:\*.jpg .

5.4. Получаем доступ к разделу DOS/Windows

Если NetBSD установлена совместно с MS-DOS или Windows, можно модифицировать метку диска и, таким образом, сделать разделы DOS/Windows «видимыми» для NetBSD. Для этого сперва необходимо определить геометрию диска, например, с помощью fdisk(8).

# fdisk wd0
NetBSD disklabel disk geometry:
cylinders: 77520, heads: 16, sectors/track: 63 (1008 sectors/cylinder)
...
Partition table:
0: OS/2 HPFS or NTFS or QNX2 or Advanced UNIX (sysid 7)
    bootmenu: WinXP
    start 63, size 20643462 (10080 MB, Cyls 0-1285), Active
1: NetBSD (sysid 169)
    start 20643525, size 57496635 (28075 MB, Cyls 1285-4864)
2: <UNUSED>
3: <UNUSED>

Замечание

В этом примере используется жесткий диск wd0, в вашем конкретном случае, возможно, это будет другой диск.

Результаты работы fdisk показывают, что имеется раздел NTFS («OS/2 HPFS или NTFS или QNX2 или Advanced UNIX (sysid 7)»). Если имеется раздел FAT, то он будет обозначен «Primary ‘big’ DOS, 16-bit FAT (>32MB) (sysid 6)».

Раздел Windows в настоящий момент обозначен только в таблице разделов MBR, но для монтирования его в NetBSD, так же необходимо указать и разметку дисков NetBSD. Есть два пути сделать это: отредактировать метку диска вручную используя команду disklabel -e, или использовать команду mbrlabel(8).

Когда запущена mbrlabel(8) необходимо указать диск, на котором производится поиск разделов, обозначенных в MBR и которые впоследствии добавляются к разметке диска:

# disklabel wd0
...
 d:  78140160         0     unused      0     0        # (Cyl.      0 -  77519)
#
# mbrlabel -rw wd0
Found NTFS partition; size 20643462 (10079 MB), offset 63
  adding NTFS partition to slot e.
Found 4.2BSD partition; size 57496572 (28074 MB), offset 20643588
  skipping existing unused partition at slot c.

16 partitions:
#        size    offset     fstype [fsize bsize cpg/sgs]
 a:  57236256  20643588     4.2BSD   1024  8192 46920  # (Cyl.  20479*-  77261*)
 b:    260316  77879844       swap                     # (Cyl.  77261*-  77519)
 c:  57496572  20643588     unused      0     0        # (Cyl.  20479*-  77519)
 d:  78140160         0     unused      0     0        # (Cyl.      0 -  77519)
 e:  20643462        63       NTFS                     # (Cyl.      0*-  20479*)

Updating in-core and on-disk disk label.
#
# disklabel wd0
...
 d:  78140160         0     unused      0     0        # (Cyl.      0 -  77519)
 e:  20643462        63       NTFS                     # (Cyl.      0*-  20479*)

Если вы не хотите или не можете использовать mbrlabel(8) для решения этой проблемы, то вы можете редактировать метку диска вручную, используя данные команды fdisk. Раздел с файловой системой NTFS начинается с сектора 63 и имеет размер в 20643462 сектора. Раздел NetBSD начинается с сектора 20643525 (20643525 = 20643462 + 63). Вы можете использовать эти данные для модификации метки диска BSD: необходимо просто добавить одну строку с определением позиции и типа NTFS раздела, воспользовавшись для этого идентификатором любого незанятого раздела. Используйте для этого команду disklabel. Для примера:

# disklabel -e wd0
...
#        size   offset     fstype  [fsize bsize  cpg]
...
 d:  78140160         0     unused      0     0        # (Cyl.      0 -  77519)
 e:  20643462        63       NTFS

Разделы с «a» до «d» уже используются, и первым доступным идентификатором будет «e». Поля «size» и «offset» должны быть заполнены значениями, вычесленными ранее. Затем, должна быть создана точка монтирования. Для примера:

# mkdir /c

В заключение, добавим строку в файл /etc/fstab:

/dev/wd0e /c ntfs ro,noauto 1 3

Если вы хотите монтировать раздел MS-DOS «FAT» вместо NTFS, то используйте MSDOS в качестве «fstype» в метке диска и «msdos» в качестве файловой системы (3-я колонка) в /etc/fstab. Вы можете монтировать файловые системы FAT в режиме чтения/записи, то есть использовать «rw» вместо «ro» в /etc/fstab. Для получения более подробной информации обратитесь к страницам руководства mount_msdos(8) and mount_ntfs(8).

Теперь разделы Windows могут быть примонтированы простой командой:

# mount /c

Используя этот метод, вы можете монтировать разделы NFS, FAT и FAT32. Если вы хотите монтировать раздел(ы) автоматически при запуске системы, удалите опцию noauto из файла /etc/fstab.

/dev/wd0e /c ntfs ro 1 3

5.5. Добавляем пользователей

Теперь самое время добавить в систему новых пользователей, так как использовать учетную запись суперпользователя для ежедневной работы небезопасно. В NetBSD для создания пользовательских учетных записей используется утилита useradd(8). Для примера, добавление нового пользователя будет выглядеть так:

# useradd -m joe

Применяемые по умолчанию значения для команды useradd(8) могут быть изменены, смотрите справочное руководство useradd(8).

Для использования утилиты su(1) с целью работы с правами учетной записи пользователя root необходима принадлежность пользователя к группе «wheel». Это можно сделать указанием дополнительной группы при создании учетной записи:

# useradd -m -G wheel joe

В качестве альтернативного варианта может быть использована команда usermod(8) для добавления пользователя в существующую группу:

# usermod -G wheel joe

Замечание

Вы можете редактировать файл /etc/group для присоединения пользователя к какой-либо группе, но не пытайтесь редактировать напрямую файл /etc/passwd! все изменения будут утеряны, смотрите Раздел 5.6, « «Теневые» пароли».

Замечание

Если в системе используется ssh, то по умолчанию доступ пользователя root через этот протокол запрещен. Читайте страницу руководства sshd_config(5) и редактируйте файл конфигурации /etc/ssh/sshd_config, если желаете изменить это.

5.6. «Теневые» пароли

«Теневые» пароли используются в NetBSD по умолчанию. Это означает, что все пароли в /etc/passwd содержат «*», а пароли в зашифрованной форме находятся в файле /etc/master.passwd, который может быть прочитан только пользователем root. Для редактирования файла паролей используется программа vipw(8), которая создает копию /etc/master.passwd. При выходе vipw(8) проверяет корректность копии, создает новый /etc/passwd и устанавливает новый /etc/master.passwd. Далее, vipw(8) запускает pwd_mkdb(8), который создает файлы /etc/pwd.db и /etc/spwd.db, две базы данных, эквивалентных /etc/passwd и /etc/master.passwd, но более быстрых в обработке.

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

Очень важно всегда использовать vipw и другие утилиты администрирования (chfn(1), chsh(1), chpass(1), passwd(1)) и никогда не модифицировать напрямую /etc/master.passwd или /etc/passwd.

5.7. Остановка и перезагрузка системы

Используйте единственную команду shutdown(8) для остановки и/или перезагрузки системы:

# shutdown -h now
# shutdown -r now

Две другие команды для тех же целей:

# halt
# reboot

Команды halt(8), reboot(8) и shutdown(8) не являются синонимами: использование последней будет более верным. В системе с несколькими пользователями вам следует пользоваться shutdown(8), так как вы сможете планировать выключение по расписанию, уведомлять пользователей и т.п. Для получения более подробной информации смотрите страницы руководства shutdown(8), halt(8) and reboot(8).

Глава 4. Первая загрузка

Русский перевод: Михаил Сгибнев

Содержание

4.1. Если что-то пошло не так
4.2. Вход в систему
4.3. Изменение раскладки клавиатуры
4.4. Справочное руководство man
4.5. Смена пароля пользователя root
4.6. Смена командной оболочки
4.7. Системное время
4.8. Начальная конфигурация /etc/rc.conf
4.9. Включение FFS soft-dependencies
4.10. Перезагрузка системы

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

4.1. Если что-то пошло не так

Если система не загружается, то возможно есть проблема с менеджером загрузки или с MBR (Master Boot Record). В этом случае загрузите машину с дискеты и после того, как увидите строку:

booting fd0a:netbsd - starting in ...

Нажмите пробел в течении 5 секунд обратного отсчета; загрузка остановится и будет отображена командная строка. Вы можете получить краткую справку с помощью команды «?» или «help».

type "?" or "help" for help.
> ?
commands are:
boot [xdNx:][filename] [-adrs]
     (ex. "sd0a:netbsd.old -s")
ls [path]
dev xd[N[x]]:
help|?
quit
> boot wd0a:netbsd

Теперь система должна грузиться с жесткого диска вместо дискеты. Если NetBSD нормально загружается, то проблема, скорее всего, в MBR: вы можете установить менеджер загрузки или модифицировать его конфигурацию командой fdisk -B. Смотрите Раздел 19.4, «Установка менеджера загрузки» для дополнительной информации.

4.2. Вход в систему

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

NetBSD/i386 (Amnesiac) (ttyE0)
login: root
password
...
We recommend creating a non-root account and using su(1) for root access.
#

4.3. Изменение раскладки клавиатуры

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

# wsconsctl -k -w encoding=it
encoding -> it

Смотрите Раздел 29.1.3, «Раскладка клавиатуры» для получения списка доступных раскладок и получения дополнительной информации по настройке раскладок.

4.4. Справочное руководство man

Если вы никогда ранее не использовали Unix(-like) операционные системы, то вашим лучшим другом станет команда man, которая поможет вам получить подробную и исчерпывающую справку по интересующему вас вопросу.

man name покажет справочную страницу руководства man для команды «name» и man -k name покажет список связанных страниц (также вы можете использовать команду apropos).

Для начального изучения команды man введите:

# man man

Руководство разделено на девять разделов, содержажих не только основную информацию относительно команд но также и описаний некоторых особенностей и структуры NetBSD. Для примера, посмотрите hier(7), в которой описывается используемая NetBSD файловая система.

# man hier

Другие подобные страницы – release(7) и packages(7). Каждая секция руководства содержит intro(8), описывающее содержание. Для примера, попробуйте:

# man 8 intro

Пример 4.1. Секции руководства

  1. основные команды (инструменты и утилиты)
  2. системные вызовы и номера ошибок
  3. библиотеки C
  4. специальные файлы и поддержка оборудования
  5. форматы файлов
  6. игры
  7. различные информационные страницы
  8. системное техническое обслуживание
  9. ядро

Тема может появиться более, чем в одном разделе руководства; для просмотра специфических страниц используйте номер секции в качестве аргумента команды man. Для примера, time имеется и в секции 1 (пользовательская команда), в секции 3 (функция библиотеки C) и в секции 9 (системная переменная):

# man 3 time

Для просмотра всех доступных страниц:

# man -w time
# man -a time

4.5. Смена пароля пользователя root

В ходе установки вы уже определили пароль пользователя root, изменить его вы можете с помощью команды passwd.

# passwd
Changing local password for root.
New password:
Retype new password:

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

4.6. Смена командной оболочки

Командная оболочка по умолчанию для пользователя root выбирается в момент установки, обычно это csh. Если это название вам ни о чем не говорит, то вы можете начать изучать ее с помощью csh(1): это неплохая интерактивная оболочка, хотя и довольно старая. Если вы хотите сменить оболочку, воспользуйтесь командой chsh(1). Доступные после установки системы оболочки:

  • csh
  • sh
  • ksh

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

# set filec

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

Вы можете установить и другие оболочки, например tcsh, bash, zsh, воспользовавшись коллекцией портов (мы рассмотрим этот вопрос позже).

Если вы имеет опыт работы с оболочкой, то сейчас самое время создать файлы инициализации (.chsrc, .login, …)

4.7. Системное время

NetBSD, как и все Unix системы использует системные часы, базирующиеся на Greenwich time (GMT) и поэтому их необходимо установить на это время. Если вы хотите использовать в качестве системного локальное время (например, в случае использования нескольких ОС на одной машине), то вам необходимо указать это NetBSD, модифицируя sysctl-переменную kern.rtc_offset.

# echo kern.rtc_offset=-60 >>/etc/sysctl.conf
# sh /etc/rc.d/sysctl restart

Где установленное значение (-60) число минут к западу от GMT.

Для отображения текущего значения переменной kern.rtc_offset:

# sysctl kern.rtc_offset
kern.rtc_offset = -60

Теперь ядро знает, как переконвертировать время часов машины в системное время GMT, но вы все еще должны сконфигурировать систему для указания часового пояса (обозначения которых вы можете посмотреть в /usr/share/zoneinfo). Если вы уже сделали это в ходе инсталляции, то можете пропустить этот шаг. Например, для Италии:

# rm -f /etc/localtime
# ln -s /usr/share/zoneinfo/Europe/Rome /etc/localtime

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

# date [[[[[cc]yy]mm]dd]hh]mm

4.8. Начальная конфигурация /etc/rc.conf

NetBSD использует файл /etc/rc.conf для конфигурации системы в процессе начального запуска: в этом файле определяются запускаемые сервисы и начальные настройки. Понимание этого файла черезвычайно важно.

В файле /etc/defaults/rc.conf содержатся значения по умолчанию для большого числа параметров начальной настройки. Для изменения значения по умолчанию внесите новое значение в /etc/rc.conf: определенные в нем переменные перезапишут установки по умолчанию из /etc/defaults/rc.conf (не стоит их изменять).

Понимание /etc/rc.conf очень важно. Страница руководства rc.conf(5) содержит детальную информацию по всем возможным опциям.

# man rc.conf

Сперва модифицируем:

  • Установим «rc_configured=yes» (эта строка уже могла быть после установки)
  • Установим «dhclient=yes» для конфигурирования сети через DHCP.
  • Установим «sshd=yes» для запуска демона Secure Shell при старте системы.
  • Определим имя машины через параметр hostname (используйте полностью определенное имя, т.е. включая домен). Для машины без сети, вы можете использовать любое имя (например, woody.toys.net), если же машина подключениа к сети, то вы должны использовать корректное сетевое имя.

    Замечание

    Убедитесь, что имя машины можно разрешить, используя DNS или /etc/hosts, так как некоторые программы не работают с неразрешаемыми именами машин.

4.9. Включение FFS soft-dependencies

Сейчас довольно хороший повод включить soft-dependencies для файловой системы FFS. По умолчанию, в NetBSD FFS записывает мета-данные немедленно, в синхронном режиме. Механизм soft-dependencies позволяет не записывать данные сразу, а организовывать их и сохраняет их способом, не конфликтующим с FFS. Это обеспечивает быстродействие на уровне асинхронной системы без особого риска. Soft-dependencies может быть определено добавлением опции softdep в /etc/fstab. Рассмотрим типичный файл /etc/fstab:

/dev/wd0a / ffs rw 1 1
/dev/wd0b none swap sw 0 0
/dev/wd0e /var ffs rw 1 2
/dev/wd0f /tmp ffs rw 1 2
/dev/wd0g /usr ffs rw 1 2

Предположим, что мы хотим включить soft-dependencies для всех файловых систем, за исключением раздела /. Произведем соответствующие изменения (они подчеркнуты):

/dev/wd0a / ffs rw 1 1
/dev/wd0b none swap sw 0 0
/dev/wd0e /var ffs rw,softdep 1 2
/dev/wd0f /tmp ffs rw,softdep 1 2
/dev/wd0g /usr ffs rw,softdep 1 2

Вот некоторые ссылки на дополнительную информацию по файловым системам и soft-dependencies:

4.10. Перезагрузка системы

В этот раз мы сделали:

  • Сконфигурировали клавиатуру
  • Изменили пароль пользователя root(по желанию)
  • Изменили командную оболочку пользователя root (по желанию)
  • Изменили системное время и смещение RTC
  • Опредилили локальное время
  • Сконфигурировали /etc/rc.conf

Теперь, когда подошло время перезагрузки, выполним команду:

# reboot