Перевод: Сгибнев Михаил
Общие вопросы о NetBSD
Пользовательская конфигурация
Печать и сканирование
Использование сменных носителей
Обычные (и менее обычные) проблемы
Диски и файловые системы
Вопросы, связанные с начальной загрузкой
Конфигурация памяти/файла подкачки
Другие вопросы
Общие вопросы о NetBSD
Список изменений доступен в файле CHANGES в корне каждого релиза или на сайте NetBSD
NetBSD выполняется на центральных процессорах на 64 бита и на 32 бита.
На alpha CPU ядро и пользовательское окружение работают в режиме, известном как LP64, где ints - 32 бита, а longs и указатели (и адресное пространство) - 64 бита.
sparc64 порт выполняется и в 32-разрядных конфигурациях и в конфигурациях на 64 бита.
Ядро на 64 бита (LP64) поддерживает 32-разрядные приложения в режиме на 64 бита. Ядро на 32 бита, которое использует 32 бита для всех целых чисел, указателей и длинных целых чисел (IPL32), не может выполнить программы на 64 бита.
На других центральных процессорах на 64 бита, типа R4000 и более нового MIPS, NetBSD выполняется в режиме на 32 бита, хотя ведется работа на переход к 64 битам.
Все порты NetBSD поддерживают арифметику на 64 бита, и в ядре и в программах. В ядре это используется для различных счетчиков и для FFS, которая является 64 битной 'Fast File System'.
Глупь какая-то, связаная с америкосовскими законами на экспорт систем шифрования и криптографии...
В словах Крис Г. Деметрайоу (
[email protected]):
NetBSD, вообще, создавалась как "устойчивая исследовательская платформа" - то
есть система, которая может использоваться для работы, дома, для исследовательской работы ...,
Для чего она нужна - решать Вам. Вообще, мы, работая над
NetBSD пробуем улучшить систему любым способом, которым мы только можем - поддержка большего
количества аппаратных средств, стабильность работы, документация...
См. нашу features page для вызревания идеи относительно того, какими возможностями NetBSD обеспечит именно Вас!
Пользовательская конфигурация
Вы можете сделать это вручную, прочитав
useradd(8) manpage, или использовать пакет
'user' из коллекции портов, который входит в состав системы, начиная с NetBSD 1.4.2.
Эта ситуация может возникнуть по нескольким причинам:
Невозможно войти под логином root:
NetBSD позволит войти в систему пользователю root только с терминала, отмеченному в файле /etc/ttys(
ttys(5)) как 'secure'.
Чтобы иметь возможность зайти суперпользователем из сети (не рекомендуется) вы должны добавить 'secure' к каждому сетевому терминалу. Также можно сделать следующее(как root):
cd /etc
cp ttys ttys.orig
cat ttys.orig | sed 's/network$/network secure/' > ttys
Невозможно выполнить команду 'su' для root:
NetBSD проверяет содержимое файла /etc/group для определения права пользователя использовать команду
su(1).
Если значение пусто (wheel:*:0:), то любой пользователь, введя правильный пароль, может получить права root.
Если требуется предоставить доступ только определенным пользователям, то укажите их учетные записи, разделяя запятыми(без пробелов).
Невозможно выполнить команду 'su' для непривилегированных ползователей:
Выполните "ls-l/usr/bin/su". Первым 'словом' на выводе должно быть '-r-sr-xr-x'. Если вывод другой, то как root выполните "chmod 4555/usr/bin/su".
Флаг 's' (setuid) позволяет работать команде 'su' с правами пользователя root.
Эта проблема может быть вызвана тем, что не указывался флаг '-p' (сохранить разрешения) при распаковке архива.
Если это имело место, то повторите операцию извлечения из архива tarfiles (кроме etc.tar.gz) , так как остальные утилиты также будут иметь неправильные права доступа.
Для примера, добавим каталог /usr/X11R6/bin к Вашей переменной path, для чего отредактируем файл .login в домашнем каталоге:
set path = ( /usr/X11R6/bin $path )
Это будет работать только для C-shell
csh(1), и аналогичной
tcsh.
Для
sh(1) и аналогичных (таких как
bash2) корректной будет запись:
PATH=/usr/X11R6/bin:$PATH
export PATH
Для пользователей, использующих csh(1) или tcsh могут быть созданы следующие файлы:
- /etc/csh.cshrc - будет выполняться перед каждым входом пользователя в систему, перед .cshrc в основном каталоге пользователя.
- /etc/csh.login - то же, но перед login в основном каталоге пользователя.
- /etc/csh.logout - выполняется когда пользователь выходит из системы, перед .logout в основном каталоге пользователя.
Это зависит от оболочки, в которой Вы работаете:
- bash (GNU Bourne Again Shell)
'bash' - это расширенная версия оболочки 'sh', обладающая расширенным набором команд. Установить ее можно из системы портов (shells/bash2).
- csh(1) ('C' shell)
Это - стандартная пользовательская оболочка. Поддерживает завершение имени файла ('set filec' и используйте ESCAPE key), но не поддерживает редактирование командной строки.
- ksh(1) (Korn Shell)
Также известна как pdksh. Она поддерживает редактирование командной строки в режимах Emacs или Vi ('set -o {emacs,vi}').
В режиме Emacs, используйте два Escape для завершения файла (используйте команду 'bind "^I"=complete' для использования TAB).
Используйте 'set -o vi-tabcomplete' или 'set -o vi-esccomplete' для использования в режиме Vi TAB или ESC соответственно.
Доступна из системы портов (shells/pdksh) или, для KSH-93 - shells/ast-ksh.
- tcsh (an extended 'C' shell)
Расширенная версия csh, обладающая множеством возможностей, включая завершение имени файла (используйте TAB) и редактирование командной строки.
Доступна из системы портов (shells/tcsh).
- sh(1) (Bourne shell)
Эта оболочка используется в однопользовательском режиме, и допускает редактирование командной строки ('set -E'). Вы можете внести эту команду в /.profile для того, чтобы иметь возможность редактировать командную троку, находясь в однопользовательском режиме.
- Other shells
Все в тумане. Используйте документацию на каждую конкретную оболочку. Можно воспользоваться системой портов.
NetBSD использует переменную среды 'LANG', для определения языка вывода об ошибках и вывода системной информации.
Это может быть установлено в csh или tcsh командой 'setenv LANG XX', где XX - двухбуквенный код страны.
Для вывода списка поддерживаемых типов кодов, выполните'ls /usr/share/nls'.
Пожалуйста обратите внимание: Только некоторые сообщения были оттранслированы. Для проверки, установите 'LANG' и выполните 'cd /каталог_который_не_существует'.
Используйте команду
chfn(1) или используйте
vipw(8) для ручного редактирования /etc/master.passwd.
Печать и сканирование
Страницы руководства man представлены в формате
nroff(1) и находятся в /usr/share/man/manX/manpage.X, где X - номер раздела.
Для конвертации в формат PostScript используйте команду:
groff -Tps -mandoc /usr/share/man/manX/manpage.X
Для примера, отконвертируем справку для команды
ls(1) в PostScript и отправим на печать, используя
lpr(1):
groff -Tps -mandoc /usr/share/man/man1/ls.1 |lpr
Если Вы желаете печатать на другом типе принтера, Вы можете использовать пакет ghostscript из pkgsrc.
Если Вы имеете JetDirect сервер печати типа JetDirect EX Plus, Вы можете использовать
dhcpd(8) для его настройки.
Порядок действий следующий:
Создайте в /etc/dhcpd.conf запись для JetDirect server:
options jd-tftp-cfgcode 144 = string;
options jd-tftp-servercode 150 = string;
allowbootp;
# [...]
host hp690c {
fixed-addresshp690c;# set to the DNS name or address of the JetDirect
hardware ethernet00:60:b0:00:11:22;# set to the MAC address of the JetDirect
optionlog-serversservername;# set to the DNS name or address of log server
optionjd-tftp-serverservername;# set to the DNS name or address of tftp server
optionjd-tftp-cfg"hpnp/hp690c.cfg";# name of the JetDirect config file
}
Смотрите
dhcpd.conf(5) для более подробной информации.
Удостоверьтесь, что tftpd запускается из /etc/inetd.conf, обратите внимание на параметр "-s" в строке tftp /etc/inetd.conf, им устанавливается корневой каталог
tftpd(8).
Для примера, установите в качестве корневого каталога /tftpboot (он должен существовать).
Включите запуск dhcpd в /etc/rc.conf.
Затем создайте файл конфигурации Network Printer Inferface (NPI). Для примера /tftpboot/hpnp/hp690c.cfg. Он должен содержать что-то вроде этого:
name: printer name
location: Location of the Printer
contact: Contact Person
idle-timeout: 1800
banner: 0
После того как Вы сделали изменения в inetd(8), перезагрузите inetd.conf(5), послав сигнал kill -HUP `cat /var/run/inetd.pid`.
После перезагрузки JetDirect print server (или принтера с установленной HP JetDirect card) сервер должен конфигурироваться по DHCP.
На некоторых принтерах, Вам, вероятно, придется явно указать BOOTP/DHCP с лицевой панели.
NetBSD поддерживает различные различные SCSI сканеры, используя пакет для сканирования sane-backends.
Внешние интерфейсы для обращений к API находятся в пакете sane-frontends или могут быть вызваны непосредственно из
программ типа
GIMP.
Использование сменных носителей
Гибкие диски на Pc работают таким же образом, как и другие дисковые устройства, за исключением того, что перед первым использованием требуют
низкоуровнего форматирования.
Для использования обычной дискеты на 1440 Кб сначала надо отформатировать ее:
fdformat -f /dev/rfd0a
Затем создадим единственный раздел:
disklabel -rw /dev/rfd0a floppy3
И создадим файловую систему, оптимизированную для малой емкости:
newfs -m 0 -o space -i 16384 -c 80 /dev/rfd0a
Теперь диск может быть примонтирован подобно любому другому устройству. При монтировании диска с файловой системой MS-DOS, необходимо указать тип файловой системы:
mount -t msdos /dev/fd0a /mnt
Однако, иногда, вместо использования дискет подобно большим дискам, бывает удобно обойти файловую систему и записывать
архивы непосредственно на неподготовленное устройство:
tar cvfz /dev/rfd0a file1 file2 ...
С дискетами MS-DOS можно сделать это используя пакет
mtools, при
использовании которого не происходит обращений к буферному кэшу ядра, вследствии чего пропадают опасности, связанные с извлечением дискеты без отмонтирования.
- Посмотрим, есть ли ZIP диск?
yui# dmesg | grep -i zip
sd0 at atapibus0 drive 1: type 0 direct removable
-
Вставьте ZIP диск
-
Проверьте, какие разделы находятся на диске:
yui# 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" то, что Вам и нужно - раздел msdos.
Следовательно, используйте/dev/sd0h, чтобы обратиться к ZIP диску.
-
Монтируем:
yui# mount -t msdos /dev/sd0h /mnt
yui#
-
Обращаемся к файлам:
yui# 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
-
Отмонтируем:
yui# umount /mnt
yui#
-
Выкидываем:
yui# eject sd0
yui#
Data CD могут содержать различную информацию, такую как программы, звуковые файлы (mp3, wav), кино (mp3, quicktime) и т.д.
Перед доступом к этим файлам, компакт-диск должен быть примонтирован к системе, подобно разделам на жестких дисках.
Также, как жесткие диски могут использовать различные файловые системы, так и для компакт-дисков есть своя файловая система - "cd9660".
NetBSD может работать с файловой системой cd9660 с Rockridge и Joliet расширениями.
Устройства чтения компакт-дисков обозначаются как /dev/cd0a и для SCSI и для IDE .
Зная все это мы можем выполнить:
-
Убедимся, что CD имеет место быть:
# dmesg | grep ^cd
cd0 at atapibus0 drive 0: 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.
-
Вставьте компакт-диск
-
Вручную примонтируем диск:
# mount -t cd9660 /dev/cd0a /mnt
Эта команда не выводит на экран никакой информации. Эта команда говорит системе примонтировать компакт-диск, найденный на /dev/cd0a к каталогу /mnt, используя файловую систему "cd9660".
Точка монтирования "/mnt" должна быть существующим каталогом.
-
Проверьте содержимое диска:
# ls /mnt
INSTALL.html INSTALL.ps TRANS.TBL boot.catalog
INSTALL.more INSTALL.txt binary installation
Все выглядит прекрасно! Это установочный диск NetBSD , конечно :-)
-
Отмонтируем:
# umount /mnt
Если к компакт-диску все еще обращается система (например Вы находитесь в каталоге, размещенном на CD), то отмонтирование не произойдет.
Если Вы выключаете систему, от отмонтирование произойдет автоматически, не волнуйтесь.
-
Создание записи в /etc/fstab:
Если Вы не хотите проходить процедуру монтирования каждый раз при смене компакт-диска, то Вы можете поместить большинство значений в строку в/etc/fstab:
# Device mountpoint filesystem mount options
/dev/cd0a /cdrom cd9660 rw,noauto
Убедитесь, что точка монтирования (в данном примере - "/cdrom"), существует.
# mkdir /cdrom
Теперь Вы можете просто выполнить команду:
# mount /cdrom
чтобы получить доступ к компакт диску. Отмонтирование осуществляется как и прежде.
Опция монтирования "noauto" установлена потому, что вы скорее всего, не будете иметь компакт диск в приводе все время.
См. mount(8) и mount_cd9660(8) для некоторых других полезных вариантов.
-
Выдвинуть каретку:
# eject cd0
NetBSD позволяет монтировать файловые системы только пользователю root.
Если Вы хотите, чтобы любой пользователь был способен сделать это, у Вас есть следующие варианты:
- Дать права доступа к устройству для "группы" и "другие"
chmod go+rw /dev/cd0a
Разрешить пользователям монтировать файловые системы:
sysctl -w vfs.generic.usermount=1
Обратите внимание: пользователь должен иметь точку монтирования! Для примера:
cd
mkdir cdrom
Пожалуйста также см.
mount(8) и, как альтернативу,
amd (8).
Для того, чтобы наслаждатся всей красотой MPEG Видео на NetBSD, примонтируйте компакт-диск в обычном порядке и затем воспользуйтесь
пакетом
mtv для проигрывания файлов.
Есть два способа обработать аудио компакт-диски:
- Запустить проигрывание диска на наушники или через звуковую плату, к которой привод обычно подсоединен шлейфом.
Используйте такие программы как xmcd, kscd из пакета kdemultimedia, xmix, xmmix и т.д
Это обычно работает хорошо и на SCSI, ATAPI и на CDRW и на DVD.
-
Читать ("rip") аудиотреки, делая цифро-аналоговое преобразование и обратно.
Есть несколько программ, чтобы сделать это:
- Для ATAPI или SCSI CD-ROM - cdd. Чтобы извлечь дорожку 2 с cdd
# cdd -t 2 `pwd`
Буден вызван трек track-02.cda из текущего каталога.
- Для SCSI CD-ROM можно воспользоваться tosha
. Чтобы извлечь дорожку 2 с cdd
# tosha -d CD-ROM-device -t 2 -o track-02.cda
- Для ATAPI, SCSI и нескольких других частных стандартов CDROM может быть использован пакет cdparanoia.
При использовании cdparanoia данные могут быть сохранены в файле стандарта WAV, AIFF, AIFF-C или в формате потокового звука.
В текущей версии cdparanoia для NetBSD требуется использовать ключь -g. Пример того, как сохранить дорожку в WAV формате:
$ cdparanoia -g /dev/rcd0d 2 track-02.wav
Если вы хотите грабить весь диск, то:
$ cdparanoia -g /dev/rcd0d -B
-
Процесс записи CD разбивается на два этапа: это создание ISO образа и последующая запись его на диск.
-
Чтение уже готового ISO образа:
# dd if=/dev/rcd0a of=filename.iso bs=2k
Вы можете создать ISO образ самостоятельно.
-
Создание ISO образа:
Поместите все данные, которые хотите поместить на компакт диск в один каталог.
Образ содержит данные в таком виде, в каком они будут храниться на CD, используя формат ISO 9660.
Стандарт ISO9660 изначально поддерживал только 8+3 символов в имени файла (8 - имя и 3 - расширение).
Так как это не практикуется в UNIX-системах, возможно придется вызвать расширение "Rockridge Extension", чтобы иметь возможность записывать длинные имена файлов (Для Microsoft таким расширением стандарта будет файловая система Joliet).
ISO образ мы будем генерировать утилитой mkisofs из пакета cdrecord.
Для примера, наши данные лежат в /usr/tmp/data, тогда ISO образ /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)
$
Пожалуйста, изучите самым внимательным образом mkisofs(8).
Так же, для создания загрузочных CD рекомендуется прочесть "Bootable CD ROM How-To".
-
Запись ISO образа на диск:
Делается это с помощью утилиты cdrecord одноименного пакета cdrecord.
Вставьте чистый компакт диск в привод и:
# cdrecord -v dev=/dev/rcd0d data.iso
...
#
После старта команды, 'cdrecord' показывает Вам много информации о вашем диске, диске и образе, который Вы собираетесь записать.
Тогда же Вы увидите последний отсчет, когда еще есть возможность остановиться, нажав ^C.
Обратите внимание, что cdrecord(8) работает как на SCSI так и на IDE (ATAPI) приводах.
-
Проверяем: просто примонтируйте записанный диск и попробуйте с него что-нибудь прочитать.
Если Вы хотите делать резервную копию одного из ваших аудио компакт-дисков, Вы можете сделать "ripping" аудио дорожек с компакт-диска и потом записать их обратно на пустой CD.
Это прекрасно работает, если Вы хотите сохранить различные треки с разных компакт дисков, в последствии обьединив их на одном диске.
Для этого необходимо сделать:
-
Процесс извлечения аудио дорожек и сохранения их в .wav файлах описан выше.
-
Записываем , используя cdrecord:
# cdrecord -v dev=/dev/rcd0d -audio -pad *.wav
Для этого необходимо сделать:
-
Создаем .wav из .mp3
$ mpg123 -w foo.wav foo.mp3
Сделайте это для всех mp3 файлов, которые Вы хотите иметь на вашем аудио компакт-диске. .wav имена файла, которые Вы используете, не имеют значения.
-
Процесс записи всего этого безобразия, также описан выше.
Копировать аудио компакт-диск без пауз, как это определяется стандартом CDDA Вы можете используя утилиту cdrdao.
# cdrdao read-cd --device=/dev/rcd0d data.toc
# cdrdao write --device=/dev/rcd1d data.toc
Если у Вас на машине установлен и CD-R и CD-ROM, то Вы можете скопировать диск следующей командой:
# cdrecord dev=/dev/rcd1d /dev/rcd0d
Здесь CD-ROM (cd0) содержит компакт-диск, который Вы хотите копировать и CD-R (cd1) содержит чистый диск.
Обратите внимание, что это работает только с компьютерными дисками, которые содержат некоторый вид данных, и не работает с аудио компакт-дисками!
На практике Вы можете захотеть добавить такой параметр, как "speed=8" дабы ускорить поцесс.
Вы можете работать с приводом CD-RW точно так же, как и с приводом CD-R, создавая образы с помощью mkisofs(8) и записывая их с помощью cdrecord(8).
Если Вы хотите очистить диск, Вы можете выбрать опцию "blank".
# cdrecord dev=/dev/rcd0d blank=fast
Есть еще нескольпо способов стереть CD-RW диск, их можно посмотреть вызвав cdrecord(8) с опцией "blank=help".
Смотрите руководство
cdrecord(8) для получения дополнительной информации.
В настоящее время NetBSD поддерживает DVD через ISO 9660, используемую для приводов CD-ROM. Новая файловая система UDF, представленная на
DVD, в настоящее время не поддерживается. DVDs, DivX и другие avi файлы можно просмотреть с помощью
ogle или
gmplayer.
Для некоторых подсказок при создании DVD смотри
postings about growisofs.
Обычные (и менее обычные) проблемы
Вам необходимо установить набор 'text' . Смотрите base install notes.
Проверьте текущие разрешения на каталоге /var/mail. Они должны быть 'drwxrwxrwt':
% ls -ld /var/mail
drwxrwxrwt 2 root wheel 512 Nov 6 08:21 /var/mail
Если права другие, то выполните от root 'chmod 1777/var/mail'.
Не волнуйтесь! В основном это происходит тогда, когда файл /netbsd - не Ваше текущее ядро. Множество программ (такие ка ps, who, systat etc.) и
libkvm (kvm(3)), обращается к /netbsd, чтобы изучить то, что происходит в ядре.
Просто переименуйте Ваше текущее ядро в /netbsd и ошибки пропадут. Удостоверьтесь, что Вы не записываете поверх рабочего ядра.
Это - несоответствие между libkvm/netstat и /netbsd. Или Вы запускаете ядро названное не /netbsd.
Другие признаки этой проблемы, вероятно будут в отказе работать таких утилит как ps, ifconfig, who и systat. Если в этот момент вы обновляете ядро и бинарники, то это нормально, после обновления все должно быть хорошо.
Тут два варианта: или ваше текущее ядро называется /netbsd, или нет. Если нет, то смотри выше.
Во втором случае, динамически слинкованные бинарники обычно устанавливаются, модернизируя libkvm, чтобы соответствовать вашему новому ядру.
Статически собранные бинарные файлы должны быть овновлены до последних версий. Так как они собраны статически, то Вы должны восстановить libkvm.a прежде, чем Вы будете восстанавливать все остальное.
Благодаря Джону Виттковскому (
[email protected]) имеется список большинства программ (помимо/bin/ps), которые зависят от libkvm (все они находятся в/usr/bin):
- fstat
- gdb
- ipcs
- netstat
- nfsstat
- systat
- uptime
- vmstat
- w
Подобно предыдущим трем вопросам по этой теме, наиболее вероятно, что ваш libkvm - не синхронизирован с вашим ядром или бинарниками.
Для решения этой проблемы можно или получить набор бинарных файлов, соответствующий Вашему ядру или можете сделать все сами, руководствуясь следующими инструкциями:
Если Вы получаете ошибку "proc size mismatch" и решили, что необходимо обновить библиотеки то:
- Необходимо получить полный исходный текст. Если Вы не желаете этого делать и потом заниматься перекомпиляцией, то найдите
кого - то, кто сделает это для Вас, и Вы сможете пробовать установить все вручную.
-
Убедитесь, что include актуальны. Для этого выполните:
cd /usr/src
make includes
Наверняка придется немного подождать. У меня было несколько проблем, связанных с тем, то в некотороых Makefiles
не была определена переменная INSTALL. После нескольких "make includes" я пошел в последний перечисленный и добавил
следующую строку в Makefile:
INSTALL=/usr/bin/install
Так пришлось делать для нескольких Makefile.
(Если Вы уверены, что /usr/bin/make и все файлы в /usr/share/mk
современны , вышеупомянутых трудностей вероятно можно избежать)
-
Пересобрать и установить libkvm:
cd /usr/src/lib/libkvm
make
make install
Обратите внимание, что, чтобы откомпилировать libkvm, на моей системе я должен был добавить следующую ссылку:
cd /usr/include/machine
ln -s ../m68k/kcore.h kcore.h
Это, возможно, был причудой моей системы, так что пробуйте компилировать без этого.
-
Пересоберите бинарники СТАТИЧЕСКИ связанными с libkvm. Для пересборки ps выполните следующее:
cd /usr/src/bin/ps
make
make install
-
У Вас может и не получиться восстановить бинарники, динамически связанные с libkvm. Я так думаю, что это
происходит из-за того, что программы ожидают увидеть старый номер версии библиотек и могут не захотеть работать с более новой версией.
Например, мой старый libkvm был libkvm.so.4.0. Новый был libkvm.so.5.0. Не перетранслируя динамически бинарники жалобы на
"proc size mismatch" продолжались. Возможно, при обновлении библиотек в пределах старшей версии (с 4.0 на 4.1) все будет работать нормально.
Динамически слинкованные бинарники, о которых я знаю:
/usr/bin/fstat
/usr/bin/gdb
/usr/bin/ipcs
/usr/bin/netstat
/usr/bin/nfsstat
/usr/bin/systat
/usr/bin/uptime (linked to /usr/bin/w)
/usr/bin/vmstat
/usr/bin/w
Чтобы перетранслировать их, сделайте следующее:
cd /usr/src/usr.bin/
make
make install
Для примера, перекомпилируем /usr/bin/vmstat:
cd /usr/src/usr.bin/vmstat
make
make install
За это разьяснение огромное спасибо Джону Виттковскому ([email protected])
Это можно исправить используя 'newaliases'.
Sendmail выдает эту ошибку, когда не установлены файлы
aliases(5).
Обратите внимание, что sendmail (8) фактически использует /etc/aliases.db, этот файл является хэшем (
hash(3) сформированный из/etc/aliases).
Такая ошибка может встретиться только в NetBSD 1.3 - 1.4, более поздние версии /etc/sendmail.cf инструктируют sendmail автоматически восстанавливать /etc/aliases.db при необходимости. Советуем обновить систему.
Используйте sudo и никогда не входите как пользователь root.
Если Вы вынуждены воспользоваться логином root, отредактируйте /etc/syslog.conf, чтобы отключить все раздражающие сообщения.
В большинстве случаев, достаточно отключить auth.debug.
*.notice;auth.debug root
Это отключит вывод сообщений типа "portmap [pid]: connect from some.other.host ... ". Для того, чтобы изменения вступили в силу, необходимо подать сигнал kill -HUP демону syslogd.
Так же Вы можете посмотреть FAQ entry, чтобы использовать xconsole.
В по умолчанию, NetBSD 1.6 имеет уже многочисленные установленные языки. Вы можете найти их в /usr/share/locales.
Выберите язык, наиболее Вам подходящий и установите переменную среды LC_ALL.
Обратите внимание, что не достаточно установить LC_ALL в, скажем, "de_DE", Вы должны использовать полное обозначение языка, типа "de_DE.ISO8859-15".
Диски и файловые системы
- Остановите систему
- Подключите диск
- Если ваша машина имеет ППЗУ или базовую систему ввода-вывода, которая может определять диски, проверьте, что диск опознан:
- Свеженький sparc: нажмите [STOP][A] перед загрузкой, когда получите приглашение "ok",введите probe-scsi.
- i386 с adaptec BIOS: Нажмите [CTRL][A] перед загрузкой, для выхода в BIOS.
- другой: расскажите, это интересно:)
- Начальная загрузка
- Проверьте dmesg (8) вывод, чтобы убедиться, что диск распознан
- Запишите метку диска, используя disklabel(8) (если
диск не принимает метки, сделайте так: disklabel -i -I sd1 # это позволит проигнорировать отсутствие метки).
Раздел 'c' зарезервирован под запись о всем отведенном под NetBSD дисковом пространстве, 'd' зарезервирован для всего диска.
Следующий пример создаст файловую систему в разделе 'e':
partition> e
Filesystem type [?] [unused]: 4.2BSD
Start offset [0c, 0s, 0M]:
Partition size ('$' for all remaining) [0c, 0s, 0M]: $
e: 234375000 0 4.2BSD 0 0 0 # (Cyl. 0 - 232514*)
partition> W
Label disk [n]? y
partition> Q
Находясь в интерактивном режиме disklabel ( disklabel -i) Вы можете ввести ? для получения справки.
- Для каждой добавляемой файловой системы выполните newfs filesystem (где filesystem - /dev/rsd1e, /dev/rwd1f, ...)
- Внесите соответствующую запись в /etc/fstab
- Затем fsck(8): fsck -f
- Затем mount(8): mount -va
Frank van der Linden (
[email protected]) добавил в основное дерево системы код sync + FFS soft update, написанный Kirk McKusick'.
Пока soft updates все еще считается экспериментальной функцией из-за авторского права и не используется по умолчанию.
Чтобы использовать это, сделайте следующее:
- Обновите систему до NetBSD 1.5 и выше, так как soft updates включены в систему, начиная с этой версии
- Компилируйте новое ядро с опцией "options SOFTDEP" в файле конфигурации
- Установите новое ядро
- Выкинуто мной, так как действительно для систем младше 1.5, тот кто их использует, сможет обратиться к официальному документу.
- Выкинуто мной, так как действительно для систем младше 1.5, тот кто их использует, сможет обратиться к официальному документу.
- Выкинуто мной, так как действительно для систем младше 1.5, тот кто их использует, сможет обратиться к официальному документу.
- Вы можете использовать tunefs(8)? перед тем как включить softdeps, перезагрузитесь в singleuser mode
и затем выполните "tunefs -n disable /dev/rXd0x". Softdeps также можно включить с использованием опций утилиты mount(8). Этот шаг необязателен для NetBSD 1.5 и систем позже 20000616.
В /etc/fstab, добавьте опцию "softdep" ко всем файловым системам, на которых Вы хотите использовать soft updates. Для примера:
/dev/wd0e /usr ffs rw 1 2
Замените на
/dev/wd0e /usr ffs rw,softdep 1 2
- Выкинуто мной, так как действительно для систем младше 1.5, тот кто их использует, сможет обратиться к официальному документу.
- Перезагрузка
- Все здорово!
(Пр. п. - здесь у меня возникли сложности с переводом, поэтому даю только то, что понял сам)
FFS заботится о том чтобы правильно провести все операции над метаданными, так же как и гарантировать, что все операции с
метаданными предшествуют операциям на данных, к которым они обращаются,
сделано это для того, чтобы файловая система могла гарантировать, чтобы будет восстанавливаемой после аварийного отказа.
Возможна потеря некоторого количества данных, количество которых зависит от интервала синхронизации.
При работе с softdeps, Вы имеете почти ту же самую гарантию.
С softdeps, Вы имеете гарантию того, что у Вас будет непротиворечивый снимок файловой системы перед аварийным отказом.
ext2fs, работающая в NetBSD, дает туже самую гарантию сохранности метаданных (в отличие от работы в Linux), так что можете доверять этой файловой системе больше, чем еслибы она работала в Linux.
Недостатком является замедление скорости работы.
Перемещение /usr из корня в другой раздел
- Убедитесь, что выделяемое пространство (например /dev/sd0e), не принадлежит ни одному существующему разделу. Проверьте вывод команды disklabel(8).
- Если раздел не содержит файловой системы, выполнить:
# newfs /dev/sd0e
- Монтируем и переносим данные:
# mount /dev/sd0e /mnt
# cd /usr
# pax -rw -pe . /mnt
# umount /mnt
- Отредактиируйте /etc/fstab, внеся в него запись типа '/dev/sd0e /usr ffs rw 1 2'(/dev/sd0e замените на соответствующий раздел в Вашей системе)
- Перейдите в single user mode и создайте новую точку монтирования:
# shutdown now
# mv /usr /usr.old
# mkdir /usr
- После того, как Вы проверите, что система функционирует нормально, удалите старый раздел 'rm -rf /usr.old'.
Используйте mount(8) с ключом -u (update) : 'mount -u /'. Более чем вероятно, что когда Вы находитесь в single user mode, файловые
системы примонтированы в режиме только для чтения. Это дает Вам шанс выполнить fsck вручную перед переходом системы в многопользовательский режим.
Другой путь - примонтировать все файловые системы из /etc/fstab для чтения-записи , используя утилиту 'mount -a'.
Однако, лучший способ сделать это состоит в том, чтобы войти в многопользовательский режим, выходя от вашей однопользовательской оболочки и установить любую файловую систему из в/etc/fstab в любом режиме, который возможен.
Используйте fsck(8) только на непримонтированной файловой системе или системе только для чтения.
Запуск fsck(8) на файловой системе доступной для записи потенциально опасно и может привести к разрушению данных.
Если Вы поднимаете систему в однопользовательский режим, система будет установлена только для чтения.
Оттуда Вы можете сделать 'fsck-p', чтобы проверить все файловые системы перед переводом системы в многопользовательский режим.
Если файловая система была предварительно отмечена "clean", и Вы все еще хотите проверить ее, Вы можете использовать флажок -f к fsck(8).
Если Вы внесли изменения в файловую систему во время работы fsck, лучшим выходом будет 'reboot -n', для того чтобы избежать синхронизации дисков.
Это используется чтобы установить файловую систему kernfs. См.
mount_kernfs(8) для более подробной информации.
Это используется чтобы установить файловую систему procfs. Обратитесь за консультацией к "The Design and Implementation of the 4.3BSD UNIX Operating System by Leffler, McKusick, et al., p. 104-5, 436.".
Также можно почитать страницу руководства
mount_procfs(8).
Этот раздел будет интересен людям, которые хотят шифровать раздел подкачки, но не знают как это сделать.
В настоящее время есть одно ограничение - cgd устройства созданы с disklabel содержащий только один сектор, отмеченный как 4.2BSD, который не является подходящим для подкачки.
Реальный пример. Наш swap wd0b будет сконфигурирован как cgd1, используя 256 битный ключ aes-cbc.
Пошаговые инструкции:
-
Генерировать файл конфигурации для cgd устройства. заданный по умолчанию файл назывался бы /etc/cgd/wd0b, но я буду использовать/etc/cgd/swap для большей наглядности:
# cgdconfig -g -V none -k randomkey aes-cbc > /etc/cgd/swap
-
Конфигурируем устройство cgd поверх wd0b (Вы должны быть уверены, что wd0b не используется как область подкачки в данный момент).
# cgdconfig cgd1 /dev/wd0b /etc/cgd/swap
-
Редактирование метки диска для cgd1 необходимо для правильного создания слайса. Сохраняем метку в файл.
# disklabel -e -I cgd1
# /dev/rcgd1d:
type: cgd
disk: cgd
label: default label
flags:
bytes/sector: 512
sectors/track: 2048
tracks/cylinder: 1
sectors/cylinder: 2048
cylinders: 128
total sectors: 263655
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # microseconds
track-to-track seek: 0 # microseconds
drivedata: 0
4 partitions:
# size offset fstype [fsize bsize cpg/sgs]
d: 263655 0 4.2BSD 0 0 0 # (Cyl. 0 - 128*)
Создаем слайс раздела подкачки и метку изменений (она необязательна).
# /dev/rcgd1d:
type: cgd
disk: cgd
label: swap
flags:
bytes/sector: 512
sectors/track: 2048
tracks/cylinder: 1
sectors/cylinder: 2048
cylinders: 128
total sectors: 263655
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # microseconds
track-to-track seek: 0 # microseconds
drivedata: 0
4 partitions:
# size offset fstype [fsize bsize cpg/sgs]
a: 263655 0 swap # (Cyl. 0 - 128*)
И сохраняем в файл.
# disklabel cgd1 > /etc/cgd/swap.disklabel
-
Установить cgd устройство, которое будет конфигурировано автоматически при начальной загрузке.
добавьте следующую строку в ваш /etc/cgd/cgd.conf:
cgd1 /dev/wd0b /etc/cgd/swap
-
Теперь мы должны восстановить метку диска, отображаемую во время загрузки, для недавно созданного cgd устройства.
Создайте /etc/rc.conf.d/cgd следующего содержания:
swap_device="cgd1"
swap_disklabel="/etc/cgd/swap.disklabel"
start_postcmd="cgd_swap"
cgd_swap()
{
if [ -f $swap_disklabel ]; then
disklabel -R -r $swap_device $swap_disklabel
fi
}
-
Добавьте устройство cgd в /etc/fstab в качестве файла подкачки.
/dev/cgd1a none swap sw 0 0
Вот и все. Вы можете активировать раздел подкачки командой 'swapctl -a /dev/cgd1a' или выполнить перезагрузку.
Вот как это выглядит на моем ноутбуке:
Device 1K-blocks Used Avail Capacity Priority
/dev/cgd1a 131827 8828 122999 7% 0
Вопросы, связанные с начальной загрузкой
'single-user' режим - то, когда ядро загрузилось, но возможно выполнение одной единственной оболочки в консоли.
В single-user режиме монтируется только корневая файловая система и монтируется она в режиме "только для чтения".
Этот режим применяется в следующих целях:
- Проверка файловых систем fsck
- Редактирование поврежденных файлов конфигурации в каталоге /etc
- Установки новых бинарных файлов после скачивания или компиляции
- Резервное копирование файловой системы, не волнуясь о вмешательстве других пользователей
Находясь в однопользовательском режиме, Вы можете использовать одну из следующих полезных команд:
- fsck -p ; mount -va
Проверяет файловые системы с последующим их монтированием.
- set -E
Допускает редактирование командной строки.
- TERM=vt220 ; export TERM
Устанавливает тип терминала. Обратите внимание - тип терминала может зависеть от типа используемой Вами консоли.
- sh /etc/rc.d/network start
Поднимает сетевые интерфейсы. Это может быть полезным, если у Вас есть файловые системы nfs. В NetBSD до версии 1.5 используйте sh /etc/netstart.
Выход из однопользовательского режима осуществляется по команде "exit" или нажатии ctrl-D.
Система загрузится до многопользовательского режима, запуская сервисы и службы. Обратите внимание, что диски не будут проверяться при переходе из однопользовательского в многопользовательский.
Вывод загрузочных сообщений осуществляет команда
dmesg(8).
Эти сообщения обычно (в 1.4 и позже) автоматически сохраняются в /var/run/dmesg.boot после каждой загрузки.
Если включена kernfs (смотри
mount_kernfs(8)) в ядре, то можно посмотреть так - more /kern/msgbuf.
Для перехода в однопользовательский режим используйте 'shutdown now'. Для останова машины используйте 'shutdown -h now'.
Если это возможно, то 'shutdown -p now'выключит питание машины. Смотрите
shutdown(8) для более полной информации.
Используйте 'shutdown -r now' or 'reboot'
Vixie
cron(8) (Используемый в NetBSD) использует переменную времени @reboot для запуска программ во время загрузки.
Это также позволит обычным пользователям запускать программы во время начальной загрузки без использования привилегий пользователя root.
Сколько выделить места?
На старых машинах UNIX обычно рекомендовалось определять размер раздела подкачки как удвоенный размер оперативной памяти.
Так было потому, что ОЗУ копировалось в облась подкачки и таким образом общий размер памяти определялся как ОЗУ + свободное место в разделе подкачки.
Для NetBSD это уже не актуально, так что общий обьем виртуальной памяти равен ОЗУ + размер раздела подкачки.
В NetBSD есть три способа использования раздела подкачки:
- Расширение доступной виртуальной памяти, куда могут переноситься страницы с данными, не часто изменяемыми, что позволит освободить ОЗУ для часто меняющихся данных.
- Область хранения дампов ядра. Это происходит при чтении savecore(8) на этапе начальной загрузки. Это требует наличие раздела подкачки, чуть большего, чем размер ОЗУ.
- Для файовых систем mfs(8). Классическим примером является размещение раздела /tmp в виртуальной памяти для увеличения быстродействия програм, использующих этот раздел.
Запись в /etc/fstab будет выглядеть так:
swap /tmp mfs rw,-s=SIZE 0 0
Где SIZE - блоки по 512 кб.
"Правильным" путем подсчета размера раздела подкачки будет:
- Размер ОЗУ + полный размер всех файловых систем mfs
- При использовании Х - добавьте еще 1/2 ОЗУ
- Всегда пробуйте разнести раздел подкачки на несколько дисков, дабы увеличить скорость доступа.
- Предполагайте, что раздел подкачки будет высоко загружен, иначе нехватка места приведет к килянию запущенных процессов.
Добавление места к файлу подкачки
Система должна быть сконфигурирована с достаточным объемом раздела подкачки. При необходимости увеличить размер можно так:
Для автоматического мантирования при загрузке. (Где DISK - это имя 'sd1' или 'wd2')
Создать файл подкачки.
Самое быстрое и самое простое - создать файл в уже существующей файловой системе и использовать его как раздел подкачки.
Время доступа будет несколько больше из-за фрагментации и использования файловой системы, но это оптимальный вариант для временного увеличения раздела подкачки.
Добавить 10 Мб к разделу подкачки, используя существующую файловую систему можно слеующим образом:
# dd if=/dev/zero bs=1m count=10 of=/somefilesystem/swap
# chmod 600 /somefilesystem/swap
# swapctl -a -p 1 /somefilesystem/swap
Команда `dd(1)' создаст файл /somefilesystem/swap размером 10 Мб.
Права доступа 600 необходимы для предотвращения чтения этого файла обычными пользователями. Команда swapctl(8) добавляет файл к разделу подкачки, а приоритет 1 выставляется для того, чтобы использовать файл только по исчерпании основного раздела подкачки, ввиду того, что доступ к файлу осуществляется медленнее.
Для осуществления автоматического добавления файла к разделу подкачки добавьте следующую запись к /etc/fstab:
somefilesystem/swap none swap sw,priority=1 0 0
Настройка Виртуальной Памяти, чтобы улучшить работу машин с малым обьемом памяти
Настоятельно рекомендуем прочесть
post by Simon Burge, посвященный этому вопросу.
Восстановление /dev
каталог /dev содержит файлы устройств, необходимые для доступа к оборудованию и певдо-устройствам. При поврежедении этого каталога могут возникнуть странности в работе.
Для восстановления каталога необходимо перейти в однопользовательский режим (можно и в многопользовательским, но не рекомендуется) и выполнить:
mkdir /newdev
cd /newdev
cp /dev/M* .
sh MAKEDEV all
cd /
mv dev olddev; mv newdev dev
rm -r olddev
После изменения /etc/motd он принимает значение по умолчанию
Если Вы удалите заголовок в файле /etc/motd, то после перезагрузки он вновь будет перезаписан. Чтобы решить эту проблему добавьте в /etc/rc.conf строку 'update_motd=NO'.
Создание MP3 (MPEG layer 3) файлов из audio CD
Пожалуйста обратите внимание: эти команды были проверены только проверены с cdd, а не пакетами cdparanoia и tosha.
- Сделайте 'rip' адудио треков. Как это сделать смотри в "Использование аудио компакт-дисков в NetBSD".
-
Конвертируйте файл формата аудио CD в формату WAV, если риппер (cdparanoia или tosha) не сделала этого за Вас.
Это конвертирует track-02.wav в track-02.mp3 с битрейтом 128kBit/sec
- Используя пакет lame выполните:
lame -p -o -v -V 5 -h track-02.wav track-02.mp3
Результат может быть проигран с помощью пакетов maplay, mpg123 или splay.
-
Монтирование ISO-образа
Весьма вероятно, что Вы захотите просмотреть содержимое ISO образа, перед тем как записать его на компакт-диск.
Если Вы пользователь Linux, то можете использовать специальную файловую систему loop. В NetBSD для этих целей используется псевдо-диск vnode.
Приведем пример, в котором мы будем ковырять mycd.iso:
-
Создаем новый vnode, указывая на файл ISO образа
# vnconfig -c vnd0 ~/mycd.iso
-
Монтируем vnode
# mount -t cd9660 /dev/vnd0c /mnt
-
Все, теперь ISO образ примонтирован к каталогу /mnt, делаем все, что хотим(почти).
-
Отмонтируем vnode
# umount /mnt
-
Деконфигурируем vnode
# vnconfig -u vnd0