eManual.ru - электронная документация
Секция 9 из 10 - Предыдущая - Следующая
Все секции
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
блокирующем режиме, процесс будет ожидать неактивности соответствующего
устройства cuaaX, а затем появления сигнала о наличии несущей. При открытии
устройства cuaaX, он проверяет, что последовательный порт не используется уже
устройством ttydX. Если порт доступен, он "похищает" его у устройства ttydX.
Также устройство cuaXX не следит за наличием несущей. С такой схемой работы и
модемом, находящимся в режиме автоответа, вы можете позволить пользователям в
ходить в систему и в то же время можете осуществлять исходящие звонки, а
система позаботится о возможных конфликтах.
11.5. Как включить поддержку многопортовых последовательных адаптеров?
Повторим ещё раз: информация о конфигурировании ядра содержится в разделе, посв
ящённом этому вопросу. Для многопортовых последовательных адаптеров в файле
конфигурации ядра поместите ключевое слово sio для каждого порта на адаптере.
Но irq и вектор должен быть указан только у одного порта. Все порты на адаптере
должны использовать одно и то же irq. Используйте последний последовательный
порт для указания irq. Также включите опцию COM_MULTIPORT.
В следующем примере дано описание 4-портового адаптер AST на irq 7:
options "COM_MULTIPORT"
device sio4 at isa? port 0x2a0 tty flags 0x781
device sio5 at isa? port 0x2a8 tty flags 0x781
device sio6 at isa? port 0x2b0 tty flags 0x781
device sio7 at isa? port 0x2b8 tty flags 0x781 irq 7 vector siointr
Флаги указывают, что управляющий порт имеет младший номер устройства 7 (0x700),
включена диагностика на время обнаружения (0x080), и все порты используют одно
и то же irq (0x001).
11.6. Может ли FreeBSD использовать несколько многопортовых адаптеров с одинако
вым irq?
Пока нет. Вы должны назначить уникальный irq для каждого адаптера.
11.7. Можно ли установить режим работы по умолчанию для порта?
Вашему приложению может понадобиться открыть устройства ttydX (или cuaaX).
Когда процесс открывает устройство, оно имеет набор параметров ввода/вывода. Вы
можете посмотреть их значения командой
# stty -a -f /dev/ttyd1
Когда вы меняете настройки этого устройства, они действуют вплоть до закрытия
устройства. При повторном открытии оно будут иметь режимы работы по умолчанию.
Чтобы изменить значения режимов работы по умолчанию, вы можете открыть и
изменить настройки в устройстве "начального состояния". Например, чтобы сделать
режимом по умолчанию режим CLOCAL, 8 бит, и управление потоком XON/XOFF для
устройства ttyd5, сделайте следующее:
# stty -f /dev/ttyid5 clocal cs8 ixon ixoff
Для выполнения таких действий предназначен скрипт /etc/rc.serial. Теперь при
открытии устройства ttyd5 приложение будет иметь именно такой режим работы с
портом. Оно, однако. может изменить эти режимы по своему усмотрению.
Вы можете запретить изменение приложением некоторых режимов работы, выполнив
настройки устройства "постоянного состояния". Например, чтобы сделать скорость
работы ttyd5 постоянной и равной 57600 bps, выполните
# stty -f /dev/ttyld5 57600
Теперь, если приложение откроет ttyd5 и попытается изменить скорость работы
порта, она всё равно останется равной 57600 bps.
Естественно, вы должны сделать устройства начального и постоянного состояний
доступными на запись только пользователю root. Скрипт MAKEDEV при создании
файлов устройств этого НЕ делает.
11.8. Как сделать вход через модем?
Похоже, что вы хотите стать Internet-провайдером, да? Сначала вам необходимо
подключить к системе один или несколько модемов, которые могут работать в
режиме автоответа. Модем должен держать сигнал наличия несущей, только когда
она присутствует. Он должен вешать трубку и переинициализировать, когда сигнал
готовности устройства DTE (DTR) меняет состояние из включенного на выключенный.
Должно использоваться аппаратное (RTS/CTS) управление потоком или вовсе отсутст
вовать. Ещё он должен работать на постоянной скорости с портом компьютера, но
(что удобно для звонящих) с согласованием скорости передачи с другим модемом.
Для большинства модемов, поддерживающих набор команд Hayes, следующая последов
ательность команд выполнит эти настройки и сохранит их в энергонезависимой
памяти:
AT &C1 &D3 &K3 &Q6 S0=1 &W
Информация о том, как сделать эти настройки без обращения к терминальным
программам MS-DOS, содержится в разделе о посылке AT-команд.
Затем опишите модем в файле /etc/ttys. В нём перечислены все порты, с которых
операционная система ожидает входа пользователей. Добавьте строку, которая в
ыглядит как эта:
ttyd1 "/usr/libexec/getty std.57600" dialup on insecure
В этой строке указано, что ко второму последовательному порту (/dev/ttyd1)
подключен модем на скорости 57600 bps без контроля по чётности (std.57600, что
берётся из файла /etc/gettytab). Тип терминала для этого порта определён как
dialup. Порт включен (on) и небезопасен (insecure), что означает, что попытки в
ойти в систему пользователем root с этого порта будут отвергнуты. Для портов,
обслуживающих входящие звонки, как этот, используйте устройства вида ttydX.
Использование слова dialup в качестве имени терминала является обычной
практикой. Многие пользователи включают в свои файлы .profile или .login
скрипты для задания реального типа терминала, если начальным является тип
dialup. В примере порт описан небезопасным. Чтобы войти пользователем root на
этом порту, вам нужно сначала войти обычным пользователем, а затем командой su
стать пользователем root. Если порт имеет атрибут secure, то пользователь root
может входить с этого порта непосредственно.
После модифицирования /etc/ttys, вам нужно послать сигнал потери связи или HUP
процессу init:
# kill -HUP 1
Это заставит процесс init снова прочитать файл /etc/ttys. Процесс init запустит
процессы getty для всех портов с характеристикой on. Вы можете проверить,
доступны ли входы с конкретного порта, выполнив команду
% ps -ax | grep '[t]tyd1'
Вы должны увидеть нечто вроде следующего:
747 ?? I 0:00.04 /usr/libexec/getty std.57600 ttyd1
11.9. Как подключить терминал к FreeBSD?
Если вы собираетесь использовать другой компьютер в качестве терминала для
FreeBSD, соедините их последовательные порты нуль-модемным кабелем. Если у вас
есть терминал, обратитесь к его документации.
Затем модифицируйте файл /etc/ttys описанным выше способом. Например, если вы
подключаете терминал WYSE-50 к пятому последовательному порту, используйте
такую строчку:
ttyd4 "/usr/libexec/getty std.38400" wyse50 on secure
В этом примере описан порт на /dev/ttyd4, имеющий терминал wyse50, подключенный
на скорости 34800 bps без контроля по четности (std.38400 из /etc/gettytab) и
разрешён непосредственный вход пользователя root (secure).
11.10. Почему не удаётся запустить tip или cu?
Скорее всего, в вашей системе запуск программ tip и cu разрешён только пользов
ателю uucp и членам группы dialer. Вы можете использовать группу dialer для
управления доступом к вашему модему или удалённым системам. Достаточно добавить
пользователя в группу dialer.
Вы можете разрешить всем пользователям вашей системы запускать tip и cu, в
ыполнив команды:
# chmod 4511 /usr/bin/cu
# chmod 4511 /usr/bin/tip
11.11. Мой модем Hayes не поддерживается---что можно сделать?
На самом деле страница Справочника о программе tip устарела. Модемы Hayes
поддерживаются системой. Просто добавьте at=hayes в ваш файл /etc/remote.
Драйвер модемов Hayes не достаточно умён, чтобы поддерживать некоторые из новых
возможностей современных модемов---сообщения типа BUSY, NO DIALTONE или CONNECT
115200 будут приводить его в замешательство. Вы должны выключить вывод таких
сообщений при использовании программы tip (командой ATX0&W).
Кроме того, значение таймаута по умолчанию для программы tip равен 60 секундам.
Ваш модем должен использовать меньшее значение, иначе tip будет думать, что у в
ас проблемы со связью. Попробуйте ATS7=45&W.
На самом деле tip в том виде, каком поставляется, не поддерживает модемы Hayes
полностью. Решением является редактирование файла tipconf.h в каталоге /usr/src
/usr.bin/tip/tip. Чтобы это сделать, вам нужен дистрибутив исходных текстов
системы.
Замените строку #define HAYES 0 на #define HAYES 1. Затем выполните команды
make и make install. После этих действий всё работает замечательно.
11.12. Как я должен ввести эти AT-команды?
Создайте так называемое "прямое" описание в вашем файле /etc/remote. Например,
если ваш модем подключен к первому последовательному порту, /dev/cuaa0,
сделайте такую строку:
cuaa0:dv=/dev/cuaa0:br#19200:pa=none
Укажите максимальную скорость обмена с портом, поддерживаемую модемом в
параметре br. Затем выполните команду tip cuaa0 и вы подключитесь к модему.
Если в вашей системе нет устройства /dev/cuaa0, сделайте следующее:
# cd /dev
# sh MAKEDEV cuaa0
Или используйте cu, войдя администратором, с такими параметрами:
# cu -lline -sspeed
где line - это имя последовательного порта (например, /dev/cuaa0), а speed -
скорость работы модема с портом (например, 57600). После ввода AT-команд,
наберите ~. для завершения работы.
11.13. Знак <@> для описания характеристики pn не работает!
Знак <@> в характеристике, описывающей номер телефона, указывает программе tip
обратиться к файлу /etc/phones для поиска телефонного номера. Однако знак <@> я
вляется также и специальным символом в файлах описания характеристик типа /etc/
remote. Экранируйте его символом обратного слэша:
pn=@
11.14. Как набрать телефонный номер из командной строки?
Поместите так называемое "общее" описание в ваш файл /etc/remote. Например:
tip115200|Dial any phone number at 115200 bps:
:dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
tip57600|Dial any phone number at 57600 bps:
:dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:
Тогда вы сможете выполнять команды вроде tip -115200 5551234. Если
предпочитаете программу cu, а не tip, используйте общее описание для cu:
cu115200|Use cu to dial any number at 115200bps:
:dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:
и выполняйте команду cu 5551234 -s 115200.
11.15. Нужно ли при этом каждый раз задавать скорость работы с портом?
Создайте описание для tip1200 или cu1200, но не останавливайтесь на этом и
используйте подходящую скорость при задании характеристики br. Tip полагает,
что хорошим значением по умолчанию является 1200 bps, поэтому он использует
описание для tip1200. Однако вас никто не заставляет использовать именно эту
скорость.
11.16. Мне нужно иметь доступ к нескольких хостам через терминальный сервер.
Вместо того, чтобы каждый раз ожидать подключения к терминальному серверу, а
затем набирать команду CONNECT host, используйте характеристику cm программы
tip. Например, вот такое описание в файле /etc/remote:
pain|pain.deep13.com|Forrester's machine:
:cm=CONNECT painn:tc=deep13:
muffin|muffin.deep13.com|Frank's machine:
:cm=CONNECT muffinn:tc=deep13:
deep13:Gizmonics Institute terminal server:
:dv=/dev/cua02:br#38400:at=hayes:du:pa=none:pn=5551234:
позволит вам просто набирать tip pain или tip muffin для подключения к хостам
pain или muffin и tip deep13 для доступа к терминальному серверу.
11.17. Может ли tip использовать несколько телефонов для одного сайта?
Эта проблема возникает, когда в университете есть пара модемных входов и
несколько тысяч студентов, пытающихся ими воспользоваться...
Создайте описание для вашего университета в файле /etc/remote и используйте <@
> при задании характеристики pn:
big-university:
:pn=@:tc=dialout
dialout:
:dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:
После этого пропишите номера телефонов университета в файле /etc/phones:
big-university 5551111
big-university 5551112
big-university 5551113
big-university 5551114
Tip будет пытаться воспользоваться всеми телефонными номерами в указанном
порядке, прежде чем завершить работу. Если вы хотите, чтобы попытки были
продолжены, запустите tip в цикле while.
11.18. Почему нужно нажимать CTRL+P дважды для посылки одного этого символа?
По умолчанию CTRL+P является специальным символом "принудительного ввода",
используемым для указания программе tip, что следующий символ является байтом
данных. Вы можете назначить функцию символа принудительного ввода любому
другому символу с помощью команды ~s, которая предназначена для "установки
значений переменных".
Наберите ~sforce=single-char'' с начала новой строки. Здесь под single-char
имеется в виду любой одиночный символ. Если вы не зададите single-char, то симв
олом принудительного ввода будет нулевой символ, который можно получить, набрав
CTRL+2 или CTRL+SPACE. Подходящим значением для single-char может быть
SHIFT+CTRL+6, который используется только некоторыми терминальными серверами.
Вы можете задать любое значение для символа принудительного ввода, указав его в
вашем файле $HOME/.tiprc:
force=single-char
11.19. Неожиданно всё стало набираться ЗАГЛАВНЫМИ БУКВАМИ?
Должно быть, вы нажали CTRL+A, символ "перехода в верхний регистр" программы
tip, специально предназначенный для тех, у кого не работает клавиша caps-lock.
Используйте команду ~s, как это было сделано выше, и установите значение
переменной "raisechar" во что-нибудь подходящее. В действительности вы можете
установить его равным символу принудительного ввода, если не собираетесь пользо
ваться этими особенностями.
Следующий пример файла .tiprc должен понравиться пользователям редактора Emacs,
которым часто приходится нажимать CTRL+2 и CTRL+A:
force=^^
raisechar=^^
Здесь ^^ обозначает SHIFT+CTRL+6.
11.20. Как можно передавать файлы с помощью программы tip?
Если вы соединились с другой UNIX-системой, вы можете посылать и принимать
файлы командами ~p (передача) и ~t (приём). Эти команды запускают программы cat
и echo на удалённой системе, чтобы принять и послать файлы. Синтаксис вызова
имеет такой вид:
~p <local-file> [<remote-file>]
~t <remote-file> [<local-file>]
Контроль ошибок передачи при этом не осуществляется, так что вам может
понадобиться другой протокол передачи, например, zmodem.
11.21. Как использовать zmodem вместе с tip?
Первым делом установите одну из программ, реализующих протокол zmodem из
коллекции портов (там есть парочка в категории comms, lrzsz и rzsz).
Для приёма файлов запустите программу передачи на противоположной стороне.
Затем нажмите enter и наберите ~C rz (или ~C lrz, если у вас установлен lrzsz)
для начала приёма их на локальную машину.
Для посылки файлов, запустите программу приёма на противоположной стороне.
Затем нажмите enter и наберите ~C sz files (или ~C lsz files) для посылки файло
в на удалённую систему.
11.22. FreeBSD не распознаёт последовательные порты на моей машине, хотя все
настройки верны.
Микросхемы UART производства Acer на материнских платах и адаптерах
распознаются некорректно. Для решения этой проблемы попробуйте воспользоваться
патчем с сервера www.lemis.com.
-------------------------------------------------------------------------------
Chapter 12. Разное
12.1. Почему FreeBSD использует гораздо больше места в разделе подкачки, чем
Linux?
12.2. Почему утилита top(1) показывает очень маленький объём свободной памяти,
даже когда запущено всего лишь несколько приложений?
12.3. Почему используются (и что из себя представляют) форматы выполнимых файло
в a.aut и ELF?
12.4. Да, но почему так много разных форматов?
12.5. Почему командой chmod невозможно изменить права на символические ссылки?
12.6. Почему длина регистрационного имени всё ещё ограничена 8 символами?
12.7. Можно ли запускать программы для DOS во FreeBSD?
12.8. Что такое sup и как это можно использовать?
12.9. Насколько греется процессор при работе FreeBSD?
12.10. Кто там скребётся в микросхемах памяти??
12.11. Что такое MFC?
12.12. Что означает сокращение BSD?
12.13. Что такое repo-copy?
12.14. Почему я должен беспокоиться о цвете фар велосипеда?
12.15. Сколько требуется разработчиков FreeBSD, чтобы сменить электрическую
лампочку?
12.1. Почему FreeBSD использует гораздо больше места в разделе подкачки, чем
Linux?
Это только кажется, что для FreeBSD требуется больше места на разделе подкачки,
чем для Linux. На самом деле это не так. Главное отличие FreeBSD от Linux в
этом плане заключается в том, что FreeBSD активно перемещает неиспользуемые
страницы памяти, к которым не было обращений, в раздел подкачки, чтобы ув
еличить объём доступной физической памяти для активного использования. Linux же
перемещает страницы памяти в раздел подкачки только в крайнем случае.
Получаемое во FreeBSD увеличение нагрузки на раздел подкачки компенсируется
более эффективным использованием оперативной памяти.
Заметьте, что, хотя FreeBSD предпочитает использовать раздел подкачки, она не
может сбросить все неактивные страницы в своп при полностью неактивной системе.
Так что вряд ли может возникнуть ситуация, когда, проснувшись рано утром, вы
обнаружите, что вся ваша система находится в разделе подкачки, хотя она простаи
вала всю ночь.
12.2. Почему утилита top(1) показывает очень маленький объём свободной памяти,
даже когда запущено всего лишь несколько приложений?
Просто дело в том, что под свободной памятью подразумевается никак не
используемая память. Вся память, которая вашей программе явно не выделялась,
используется ядром FreeBSD для дискового кэша. Значения, показываемые утилитой
top(1), помеченные как Inact, Cache и Buf - это всё кэшированные данные разных
степеней устаревания. То, что данные находятся в кэше, означает, что система не
будет обращаться к медленному диску снова за теми данными, обращение к которым
было недавно, повышая таким образом общую производительность. В общем случае
маленькие значения в пункте Free, показываемые утилитой top(1) для свободной
памяти - это хорошо, если, конечно они не очень маленькие.
12.3. Почему используются (и что из себя представляют) форматы выполнимых файло
в a.aut и ELF?
Для понимания того, почему FreeBSD использует формат ELF, вы должны сначала
получить представление о трёх "доминирующих" форматах выполнимых файлов для
UNIX:
Note: До FreeBSD версии 3.x, во FreeBSD использовался формат a.out.
* a.out
Это самый старый, "классический" формат объектных файлов для UNIX. В нём
используется короткий и компактный заголовок с магическим числом в начале,
которое часто используется для определения формата (за подробным описанием
обратитесь к странице Справочника о a.out(5)). Он содержит три загружаемых
сегмента: .text, .data и .bss плюс таблицу символов и таблицу строк.
* COFF
Это формат объектных файлов SVR3. Дополнительно в заголовок включена
таблица секций, так что вы можете иметь их больше, чем только .text, .data
и .bss.
* ELF
Преемник COFF, в который добавлены возможности иметь много секций и 32- или
64-разрядные значения. Один большой минус: ELF был спроектирован также в
предположении, что для каждой аппаратной платформы будет существовать
только один ABI. Это предположение достаточно некорректно, и даже в мире
коммерческих реализаций SYSV (в котором имеется по крайней мере три ABI:
SVR4, Solaris и SCO) это не так.
FreeBSD каким-то образом пытается решить эту проблему, предоставляя утилиту
для пометки конкретного выполнимого файла ELF с информацией о ABI, с
которым он совместим. Обратитесь к странице Справочника об утилите brandelf
за подробной информацией.
FreeBSD выросла на "классических" традициях и традиционно использовала формат
a.out, технологию, опробованную и проверенную во многих вариациях BSD. Хотя дав
но уже можно было компилировать и выполнять родные выполнимые файлы (и ядро) в
формате ELF, FreeBSD с самого начала сопротивлялась переходу на ELF как на
формат, используемый по умолчанию. Почему? Когда мир Linux делал болезненный
переход к ELF, причин отвергнуть формат a.out было не так уж и много, разве что
их негибкий механизм работы с совместно используемыми библиотеками, который был
основан на таблице переходов, что делало построение таких библиотек очень
затруднительным для разработчиков. Так как средства работы с ELF предоставляли
решение этой проблемы и это было в общем-то "шагом вперёд" в любом случае, цена
перехода была признана стоящей того и переход был сделан.
В случае FreeBSD, наш механизм работы с совместно используемыми библиотеками
очень похож на механизм, применяемый в SunOS, поэтому его очень легко использов
ать. Однако, начиная с 3.0, FreeBSD официально поддерживает ELF как формат,
используемый по умолчанию. И, хотя формат a.out поддерживается в полной мере,
разработчики из проекта GNU, являющиеся авторами компилятора, который мы
используем, больше не поддерживают формат a.out. Это заставило нас поддерживать
различные версии компилятора и компоновщика, и не позволило воспользоваться в
семи возможностями последних разработок GNU. Потребность в наличии реализации
ISO-C++, в основном конструкторов и деструкторов, также привела к поддержке ELF
в будущих релизах FreeBSD.
12.4. Да, но почему так много разных форматов?
Если вернуться в далёкое тёмное прошлое, то тогда компьютеры были очень просто
устроены. На них могла работать простая, маленькая система. Формат a.out
полностью решал задачу представления программ на простых системах (PDP-11).
Когда же люди перенесли unix с простых систем, они оставили a.out, так как его
было достаточно для ранних реализаций unix для таких архитектур, как Motorola
68k, VAX, и тд.
Затем какой-то умный инженер решил, что если он может заставить программное
обеспечение делать некоторые тонкие манипуляции, то это позволит преодолеть
некоторые ограничения при проектировании и позволит ядру процессора работать
быстрее. Когда это было сделано с новым типом аппаратуры (в наши дни известном
как RISC), оказалось, что a.out плохо подходит для этой аппаратуры, поэтому
было разработано много новых форматов для достижения большей производительности
от такого аппаратного обеспечения, чем может дать простой, имеющий ограничения
формат a.out. Были разработаны такие форматы, как COFF, ECOFF и ещё несколько
безвестных других со своими ограничениями, пока наконец все не остановились на
формате ELF.
Вдобавок к этому, так как размеры программ стали достигать огромных размеров, а
дисковая (и физическая) память оставалась сравнительно небольшой, то возникла
концепция совместно используемых библиотек. Система VM также стала более
мощной. Хотя каждое из этих нововведений продолжало использовать формат a.out,
его бесполезность становилась видна всё больше и больше с добавлением каждой но
вой возможности. К тому же люди захотели динамически загружать код во время в
ыполнения программ или сбрасывать части программ после выполнения кода
инициализации для экономии основной памяти и/или размера свопа. Языки
программирования становились всё более умными и люди захотели автоматического
запуска некоторого кода перед главной процедурой программы. С форматом a.out
была сделана масса ухищрений для реализации всех этих требований, и они в
общем-то работали. В конце концов наступил момент, когда формат a.out перестал
бы справляться со всеми этими проблемами без ещё больших потерь в коде и
гибкости в работе. Тогда как ELF решал многие из этих проблем, переход на него
был бы болезненным на рабочей системе. Так что ELF ждал момента, когда был бы
более болезненным оставаться с форматом a.out, чем перейти к формату ELF.
Однако с течением времени инструменты разработки, на которых основаны
инструменты разработки FreeBSD (особенно ассемблер и загрузчик), разделились на
две параллельные ветви. В дерево FreeBSD была добавлена поддержка совместно
используемых библиотеки и были исправлены некоторые ошибки. Разработчики из
GNU, которые изначально писали эти программы, полностью их переделали, добавив
более простую поддержку построения кросс-компиляторов, в котором можно использо
вать различные форматы, и тд. Когда многие захотели строить кросс-компилятор с
выходным кодом для FreeBSD, то им не повезло, так как старые исходные тексты,
которые FreeBSD использовала для as и ld, не подошли. Новый набор утилит от GNU
(binutils) поддерживает кросс-компиляцию, ELF, совместно используемые
библиотеки, расширения C++, и тд. Вдобавок, многие разработчики выпускают
программы в бинарном формате ELF, и для FreeBSD было бы полезно иметь в
озможность их запускать. И если такая возможность будет реализована, зачем
тогда вообще продолжать опираться на a.out? Это измученная старая лошадь,
которая была полезна долгое время, но сейчас самое время от неё отказаться,
оставив в прошлом долгие годы преданной службы.
ELF более выразителен, чем a.out, и позволяет реализовать большую расширяемость
основной системы. Инструменты для работы с ELF лучше поддерживаются
разработчиками, и предоставляют поддержку кросс-компиляции, что для многих в
ажно. ELF может работать немного медленнее, чем a.out, но это трудно измерить.
Также между ними есть некоторые отличия по распределению страниц памяти,
обработке кода инициализации, и тд. Никакие из этих отличий особо не важны, но
эти отличия всё же есть. Со временем поддержка a.out будет убрана из ядра
GENERIC, и постепенно убрана из системы совсем, как только отпадёт нужда в
запуске старых программ в формате a.out.
12.5. Почему командой chmod невозможно изменить права на символические ссылки?
Символические ссылки не имеют прав доступа, а по умолчанию утилита chmod(1) не
следует символической ссылке для изменения прав доступа к файлу, на который
указывает ссылка. Поэтому, если у вас есть файл, скажем, с именем foo и симв
олическая ссылка bar на этот файл, то эта команда всегда будет выполняться
успешно.
% chmod g-w bar
Однако права на файл foo не изменятся.
Чтобы это работало, используйте опции -H или -L вместе с опцией -R. Обратитесь
к страницам Справочника по команде chmod и по symlink.
WarningОпция -R выполняет команду chmod РЕКУРСИВНО. Будьте осторожны, задав
ая каталоги или символические ссылки на каталоги в параметрах chmod. Если в
ы хотите изменить права на каталог, на который указывает символическая
ссылка, используйте chmod без опций и следуйте символической ссылке с
помощью лидирующего слэша (/). Например, если foo является символической
ссылкой на каталог bar, а вы хотите изменить права на foo (на самом деле
bar), вы должны выполнить команду типа следующей:
% chmod 555 foo/
Если задан лидирующий слэш, chmod будет следовать символической ссылке,
foo, меняя права на каталог bar.
12.6. Почему длина регистрационного имени всё ещё ограничена 8 символами?
Наверное, вы думаете, что достаточно будет изменить значение константы
UT_NAMESIZE, перекомпилировать полностью систему и всё будет работать. К
несчастью, часть приложений и утилит (включая системные) имеют жёстко заданные
малые значения (не всегда 8 или 9, но и такие странные, как 15 или 20) в
структурах и буферах. Это приведёт не только к порче файлов журналов (из-за
записи полей переменного размера там, где ожидается поле фиксированного
размера), но может повлиять на работу клиентов системы Sun NIS и может в
принципе вызвать другие проблемы при взаимодействии с другими системами UNIX.
Во FreeBSD 3.0 и старше, максимальная длина имени была увеличена до 16 символов
и все утилиты с предопределённым размером имени были найдены и исправлены. Так
как это касается столь многих областей в системе, то такие изменения не
делались вплоть до 3.0.
Если вы абсолютно уверены, что сможете найти и исправить проблемы такого рода
самостоятельно, когда они возникнут, то можете увеличить длину регистрационного
имени в ранних релизах, отредактировав файл /usr/include/utmp.h и изменив соотв
етствующим образом константу UT_NAMESIZE. Вы должны будете также изменить
значение MAXLOGNAME в файле /usr/include/sys/param.h, чтобы оно соответствовало
UT_NAMESIZE. И наконец, если вы компилируете из исходных текстов, не забудьте,
что /usr/include обновляется каждый раз! Делайте изменения в соответствующих
файлах каталога /usr/src/..
12.7. Можно ли запускать программы для DOS во FreeBSD?
Да, начиная с версии 3.0, вы можете использовать эмулятор DOS doscmd от BSDI,
который был интегрирован в систему и усовершенствован. Пошлите письмо в список
рассылки, посвящённый эмуляции во FreeBSD, если вы заинтересованы в участии в
этом проекте.
Для систем, предшествующих 3.0, в коллекции портов есть замечательная утилита
pcemu, эмулирующая процессор 8088 и функции BIOS, чего достаточно для запуска
приложений DOS, работающих в текстовом режиме. Она требует X Window System
(которая поставляется как XFree86).
12.8. Что такое sup и как это можно использовать?
Сокращение SUP означает Software Update Protocol, который был разработан в CMU
для синхронизации исходных текстов. Мы используем его для синхронизации
исходных текстов на удалённых сайтах с основным сервером разработчиков.
Протокол SUP использует пропускную способность канала неэффективно, и был отв
ергнут. В настоящее время рекомендуемым методом для синхронизации исходных
текстов является протокол CVSup.
12.9. Насколько греется процессор при работе FreeBSD?
В. Кто-нибудь делал замеры температуры при работе FreeBSD? Я знаю, что Linux
греется меньше, чем DOS, но никогда не видел упоминания FreeBSD. Наверное, он
сильно греется.
О. Нет, но мы сделали различные вкусовые тесты у добровольцев с завязанными
глазами, которые до этого приняли по 250 микрограмм LSD-25. 35% добровольцев
заявило, что FreeBSD имеет вкус апельсина, тогда как вкус Linux расценивался
как фиолетовый туман. Насколько я помню, ни одна из групп не отметила
значительной разницы в температуре. Вы хотели опубликовать полные результаты
этого опроса, когда обнаружили, что слишком много добровольцев покинули
помещение во время тестов, что несколько смазало результаты. Я думаю, что
большинство из них работают сейчас в Apple над их новым GUI "чеши и нюхай". Это
старый добрый бизнес!
Серьёзно, и FreeBSD, и Linux используют инструкцию HLT (halt), когда система
простаивает, что уменьшает потребление энергии и в свою очередь, выделение
тепла. Вдобавок, если у вас настроен APM (комплексное управление
энергопотреблением), то FreeBSD может переводить процессор в режим пониженного
энергопотребления.
12.10. Кто там скребётся в микросхемах памяти??
В. Делает ли FreeBSD что-нибудь "эдакое" при компиляции ядра, что вызывает
поскрипывание микросхем памяти? При компиляции (и в короткий промежуток времени
после обнаружения дисковода при старте системы) от микросхем памяти исходит
странный царапающий звук.
О. Да! Вы, наверное, видели частое упоминание "даемонов" в документации по BSD,
но не многие знают, что это настоящие нематериальные существа, которые теперь
завладели вашим компьютером. Царапающий звук, издаваемый микросхемами памяти -
это на самом деле высокочастотное перешёптывание между даемонами, когда они
решают, как лучше справиться с различными задачами по администрированию
системы.
Если шум достиг ваших ушей, команда DOS fdisk /mbr их спугнёт, но не удив
ляйтесь, если они отреагируют соответствующим образом и попытаются вас останов
ить. Фактически, если во время выполнения этой команды вы услышите сатанинский
голос Билла Гейтса из встроенного динамика, бегите и даже не оглядывайтесь!
Избавленные от противостояния с даемонами BSD, близнецы-демоны DOS и Windows
часто могут захватить полный контроль не только над вашей машиной и навлечь в
ечное проклятие на вашу душу. Если бы у меня был выбор, я думаю, что предпочёл
бы царапающий звук.
12.11. Что такое MFC?
MFC - это сокращение от "Merged From -CURRENT". Оно используется в протоколах
изменений CVS для отметки того, что изменение было перенесено в ветвь STABLE из
CURRENT.
12.12. Что означает сокращение BSD?
Это сокращение значит что-то на секретном языке, который могут знать только пос
вящённые. Это нельзя перевести один к одному, однако достаточно сказать, что
перевод с BSD - это что-то между "Команда Formula-1", "Пингвины - это вкусные
Секция 9 из 10 - Предыдущая - Следующая
|