Мануалы для freebsd на русском

Copyright © 2000, 2001, 2002, 2003 The FreeBSD Documentation
Project

����� ���������� � ����������� FreeBSD ��� �������������. ���� �������� ��������� � �������� ���������
������������ ����� ��������� ������ ��������� �����. ������ ������ ��� �� ��������, �
��������� �� ���������� ������� ����������. ���� �� ������ ������ ����� �������, ��������
� ������
�������� ������� ������������ FreeBSD.

��������� ������ ����� ��������� ��������� �������� � ���������� ��� ����� FreeBSD. ���� �������� ����� ����� ���� ������ �
��������� �������� � FTP
������� FreeBSD ��� ������ �� ��������� ������.

��������������� � ������������� �������� (SGML DocBook) � ‘����������������’ ����
(SGML, HTML, PDF, PostScript, RTF � ������) � ������������ ��� ��� ����, ��������� ���
���������� ��������� ����������:

  1. ���������������� ����� ��������� ���� (SGML DocBook) ������ ��������� ��������������
    ���������� copyright, ���� ������ ��������� � ��������� ��������� ����� �� ����� � ������
    ������� ����� ����� ������������������.

  2. ���������������� ����� ���������������� ���� (�������������� � ������ DTD,
    ���������������� � PDF, PostScript, RTF � ������ �������) ������ ��������� ��������������
    ���������� copyright, ���� ������ ��������� � � ��������� ����� � ������������ �/���
    ������ ����������, ������������ � �������������.

Important: ��� ������������ ������������ �������� ������������ FREEBSD «���
����» � ����� ����� ��� ������� ��������, �������, �� �� ������������� ��������
����������, ������������ �������� � ����������� ��� ���������� ���� ����������. �� � ����
������ ������� ��� ��������� �� ������ ���� �������������� �� ����� ������, ���������,
���������, �����������, ���������� ��� ����������� ������ (�������, �� �� �������������
��������� ������� ������ ��� �����; ������ ������ ��� �� ������������ �������� ���
������; ��������������� �������), � ��� �� ����� ��������� � � ����� ������
���������������, ���������� �� �����������, ������� ���������������, ��� ��������������
(������� ���������� ��� ���� ��������), ��������� ����� ����� ��� ������������� �����
������������ �����������, ���� ���� �� ���� �������� � ����������� ������ ������.


List of Examples
2-1. ��������� ���� .emacs

I. ������


Chapter 1 ��������

��� ����� �������Murray Stokely and
Jeroen Ruigrok van der Werven.

1.1 ���������� �� FreeBSD

����, � ��� ��� ����. ������� ��������� ����������� � �� ������ ������
���������������. �� � ���� ������? ��� ������������� FreeBSD? ��� ��� ����� ���� ��� ���
������������?

��� �� �� ��������� ��������, �� ������� �������� ���� ����� ��� �����. �������,
����������������, ��� � ����� ������ ������� ������������, ����� ������ ������
����������������� ����������. ��� ��������� ��� �����, ��� ������ ��� ���������.
���������� � ���� ����� ����� � ������� ������� ����������� ����������� ������������, ��
����� ����� ��������� �������� ������������, ��������� ������ ���� �� ���������
FreeBSD.


1.2 ������ BSD

������� ����� ������ UNIX-�������� ������������ �������, ��������� ������������
��������� ����������� �������, � ����� ����������, ������������������ � ����������.


1.3 ������������� ���������

���� ��������� ����� ���� ������� � ��������� �������� ����������

  • �� ��������� ����� ����������������, ����� �������, ����� ������ ��������� ����������
    ������ ��� ���.

  • ������, ���� � ������� �� �����, ��� �� �����, ��� � ����������� ����, ���� � �������
    �� �����. �� ��������� �������� � ������� ���; ����� ������� ������� ����������� ���, ���
    �������������� ����������� ����� ���� ����������� � ������ �������������.

  • ������������, ��� ����� ���� ����� ��������� �� ������ ������ �������, ��� ���������
    ������ ��� ��������.

  • ���� �������� �� ����� �� ������, ��������, ����� ����� �� ������ �� �������.

  • ���� �� ������ ������� 90 ��������� ���������� ����� 10 ��������� ������, �������
    ����� ������� �������.

  • ���������� �������� ������� ����.

  • ����� ��������, � �� �������. � ���������, �������� ���������� �� �����������������
    ���������� �������.

�� Scheifler & Gettys: «X Window System»


1.4 ��������� �������� /usr/src

������ �������� ��� FreeBSD ������������� � ����� ������������� ��������� CVS.
�������� ��� ������ ��������������� � /usr/src, �������
�������� ��������� �����������.

������� ��������
bin/ �������� ��� ������ �� /bin
contrib/ �������� ��� ������ ������������ ����������� ��������� �������������.
crypto/ �������� ��� DES
etc/ �������� ��� ������ �� �������� /etc
games/ �������� ��� ������ �� /usr/games
gnu/ �������, ����������� ��� �������� GNU Public License
include/ �������� ��� ������ �� /usr/include
kerberosIV/ �������� ��� Kerbereros version IV
kerberos5/ �������� ��� Kerbereros version 5
lib/ �������� ��� ������ �� /usr/lib
libexec/ �������� ��� ������ �� /usr/libexec
release/ �����, ������� ��������� ��� �������� ������ FreeBSD
sbin/ �������� ��� ������ �� /sbin
secure/ �������� ��� FreeSec
share/ �������� ��� ������ �� /usr/share
sys/ �������� ��� ����
tools/ �������, ������������ ��� ��������� � ������������ FreeBSD
usr.bin/ �������� ��� ������ �� /usr/bin
usr.sbin/ �������� ��� ������ �� /usr/sbin

Chapter 2 ����������� ����������������

��� ����� ������� James Raynard .
����������� ��� ��������� � ����������� ������������ �������� Murray Stokely <murray@FreeBSD.org>.


2.1 �����

���� �������� �������� ������� �� ������������� ��������� ������������ ���
���������������� �� FreeBSD, ���� ������ ������ ����� ��������� � ��� ������ ������ Unix.
����� �� �������� ������� �������
������� ����������� �� ��� �������. ������� ����� ��������� �� ������������ ���
������������ �������������� ���������� � �����������������, ���� ��������, ��� ��
���������� ����������� �������������.


2.2 ��������

FreeBSD ������������ ���������� ����� ��� ������� ����������. � ������� ��������
������������ ����������� C, C++, ����� Fortran � ����������, �� ������ �� ��
�������������� Perl � ������ ������������ ������ Unix, �����, ��� sed � awk. ���� ����� ������������, �� �
��������� ������ ������� ��� ������ ������������ � ���������������. FreeBSD �����������
��������� ������������� ����� ����������, ��� POSIX �
ANSI C, � ����� ����������� ��������� BSD, ��� ���
�������� ������ ����������, ������� ��� ������ ��� � ��������������� ������������� �����
��������������� � �������� �� ������� ������� ��������.

������, ��� ��� ���� ����� �������� ���������, ���� ����� �� ������� �� ������
��������� �� ��������� Unix. ���� �������� ������� ��� ������� ������ ���� ��� ����������
� ������� �������. ��� �������������� — ���� ��� ���������� ���������� �� �������, �����
�� ����� ��������������� � ������������.

� �������� ���� �������� �� ������� ��� ������� �������������� ������
����������������, ���� �������������� ������� ������ ������������� �� ������������� Unix
� ������� �������!


2.3 �������� � ����������������

��������� ������������ ����� ����� ����������, ������� ������������ ����������
��������� ��������� ��������; ������ ��������, ������� ����� ���������, ������� �� ����,
��� ��������� � ���������� ���������� ���������� ��������. ���� ������ ���� ��� �����
���� �������� ��������, �������� �� ������ �������� ����������, ��� «�������», ��� ��
������ ��������. � ����� ������� ������������ �������������, � �
������ ����������. ��� ��� ������������ ����� ������� ������ ���
���������������� ��������� �����������, ������� ������ ������������ �� ����� ��
���������� ������������� ����� ����������������.


2.3.1 ��������������

� ������ ������������� �������������� ���� ������������ ����� ��������, � ������� ��
��������� �������, � �������� �� ���������. ��� ����� ������� �������� �� ������ �������
������� � ����� � ��������� ������������� ��������� ���� � ��������� ������� �� ����.
���� ���-�� ���������� �� ���, ������������� �������� ���������� ���������, � �������
�������� �� ������� ��������� ��������.

������ ����� ������� �������� ����������� ������ ���������� ���������� ����� ������
����������, � ������ ����� ���� ������ ����������. ����� ������� ����� �����������, �����
�� ����������� ���������� � ���-������ ������ �����������. ��� ������ ����� ����� �����
�� ������������� ��� �� ������ �����-�� ������� �������� ���, � ��� ����� ������, ��� ���
������������. ����� ����, ������������� ����� �� ����������� ����������� ��������� �
��������� � ������ ������� �� ��� �������! � ����� ������ ������������������,
�������������� ����� ������������ ����� ������, �, ��� �������, ������������ ��� ��� ��
��� ����������, ��� ���, ������������ �������������.

�� ����� ������, ������������� ����������������� ������ �������� ������� �������, ����
����� �� �� ���������� �����������������. ����� ������ ������ ������ ������������ �
������� ���� Lisp, Smalltalk, Perl � Basic. ����� ����� ��������, ��� �������� Unix (sh, csh) �������� ���������������, � ������
���� ����� «�������» ��� �������� ��� ���������� ���������� ��������� «������������»
����� �� ����� �������. �� ����� ����, ������ ��������� Unix ���� ��������������
��������� ��������� ��������������� ��������, ������� ����� ������� ������ � ��������
�������� ��� ���������� �������� ��������.


2.3.2 ��������������, ��������� ���
FreeBSD

���� ���������� ������ ���������������, ������� �������� � ���� �������� FreeBSD, �
������� ����������� ��������� ����� ���������� ����������������� ������.

��� ��������� ������ �� ���� �������� ��� ���������� �������� �� ������, � �����
��������� �������

# pkg_add ��� �������

������������� root. ��� ������ �������, ��� �������, ��������� �������������������
������� FreeBSD ������ 2.1.0 � ����!

BASIC

��� ���������� �� Beginner’s All-purpose Symbolic Instruction Code. ���������� �
1950-� ����� ��� �������� ��������� ������������ ���������������� � � 1980-� �����������
� ������ ��������� ���� ������������ �����������; BASIC ��� ������ ������ ���������������� ��� ������
�������������. �� ����� � ������ Visual Basic.

�� FreeBSD ������� Bywater Basic Interpreter � Phil
Cockroft’s Basic Interpreter (����� Rabbit Basic) � ���� ��������
FreeBSD.

Lisp

����, ������� ��� ���������� � ����� 1950-� � �������� ������������ «��������������»
������, ���������� � �� �����. ������ ����, ����� ��������� �� ����������, List ���������
�� ������; �� ����� ���� �������� �������� ����������� �� «List Processing». �����
��������� � ������� AI (�������������� ����������).

Lisp �������� ����� ������ � ������������� ������, �� �� ����� ��������� ����������
������� � ����������.

�� FreeBSD ������� GNU Common Lisp � ���� �������.

Perl

����� ����� ������������ ���������� ���������������� ��� ��������� ��������; �����
����� ������������ �� �������� World Wide Web ��� ��������� CGI-��������.

����� ��������� ������ (������ 5) ������������ � FreeBSD.

Scheme

������� ����� Lisp, ����� ���������� � ��������, ��� Common Lisp. ��������� �
�������������, ��� ��� ���������� ����� ��� �������� ���������� � �������� ������� �����
� ����� ���������� ������� ������� ��� ������������� � ����������������� ������.

�� FreeBSD ������� ������� ��� Elk
Scheme Interpreter, MIT Scheme Interpreter � SCM
Scheme Interpreter.

Icon

The Icon Programming Language.

Logo

Brian Harvey’s LOGO Interpreter.

Python

Python Object-Oriented Programming Language


2.3.3 �����������

����������� ���������� ������ ���������� �� ���������������. ������� �� �����������
���� ��� � ���� (��� �����), ��������� ��������. ����� �� ���������� ���������� �
��������, ������������ �� �� ���� ���������. ���� ��� �� �������������, �� ����������
������ � ������������� � ��������������; ���� ��� ������������� � ��������� ��������, ��
������ ��������� �� � ����������� �������� ��� � ��������� ��� �������� ������������
�����������������. [1]

������ ���� ������� �� ��� ���������������, ��� ��� ������������� ��������������.
������ �� ��������� ��� ��������� ��������� ��������, ������� �������������� ���
���������� ������� � ��������������, � �������, �������� ���, ����� ����������������� �
������������ ��������—��� ���� �������� ����������� ������������ �������! ��� �����
�������, ���� ��� ����� �������� ����� ����������� ���, ��� ��� ���������� �����
��������� ����� �� ����������� ����, ��� ����� ��������� ��������� ��� ��������������.
����� ����, �������������� ���������, ���������� ��� �����������, ������ �����, ��� ���
��������������—�� ������ ������ ������������ ����� ����������� �����, �������, ���
������������ �� �� ������������ �������, ��� � � ���.

� ����� �������������� ������ ������ Pascal, C � C++. C � C++ �������� ������������
������ �������, � ������ �������� ��� ������� �������������; Pascal, � ������ �������,
�������������� ��� ���� ��� ��������, � ����� ��� ������. � ������� �������� �������
FreeBSD ��������� Pascal �� ��������, ������ � ��������� ������ ������� ���������� GNU
Pascal Compiler (gpc).

��� ��� ���� ��������������-����������-������-������� �������� ��� �������������
��������� ��������, ������ ������������� ������������ ������������ ����������
��������������� ����� ���������� (�����ݣ��� IDE —
Integrated Development Environment). � ������� �������� FreeBSD IDE �� ������, ������ �
������ ������ ������� evel/kdevelop, � � ���� ����� ������ ���������� Emacs. ������������� Emacs � ��������
IDE ����������� � Section 2.7.


2.4 ���������� ��� ������ cc

���� ������ �������� ������ GNU-����������� ��� C � C++, ��� ��� �� ������������
������ � �������� FreeBSD. �� ����� ���� ������ ��������� cc ���
gcc. ����������� �� ��������� �������� � ������� ��������������
������� �� ����������� �������������� � ������ ������ ����������� � ������������ �
���������� ������� ������ ��������������.

��� ������ �� �������� ���� ��������, ��������� ����� �������� �������������� ��� �
�����, ��� ����� (��������!) ��������� �� FreeBSD. ��� ������ ���������� � ���������
�����, ������ �� ������� �������� ��������� ����������.

  1. ��������������� ��������� ��������� ���� ��� �������� ������������ � ���������� ������
    ���������, ��������� ��������� �������� � ����� C.

  2. �������������� �������� ������ ���� �� ������� ��������� �������������� ��������
    �����. ���� ������� ������������, �� ���� ����� ��������!

  3. �������������� ��������� ���� � ��� �� ����� ����������—�� ����� ������ � ���������
    ����, �� ��� ��� ������� ��������. �����������. [2]

  4. �������������� ������������� ���� � �������� ���—��, �� ����� � ���� ���� � �����,
    ����� ������ ���� � �������.

  5. �������� �� ��, ��� �� ������������ ����� ����, ��� ������� � ���������� ����������
    ���������. ��������, ���� �� ���������� � �������������� �������, �� ��� �����
    �������.

  6. ���� �� ��������� �������� ���������� ���� �� ���������� ������ � ��������� ��������,
    ������ ��� ���, ��� �� ����������.

  7. ������ ��� ���������� ����, ��� ��������� ������ ��������� � ������ � ���������.

  8. �������, ������ ����������� ����� � �������� �������.

������ ���������� ����� ������������ ��� ����������� ��������
�� ����� �� 1 �� 4—��������� ���� �������� �����������. ������
��� 1 �������� ��������������� ����������, � ���� 3-4 ����������������.

� �������, ����� ��� ��� ������ ������ �� ���, cc ���
�������� ��������� ��������� �� ��� ������� ���� ���� �������� � ����������� �����������;
������� �����

% cc foobar.c

�������� � ���������� foobar.c ����������� ���� ����� ����.
���� � ��� ������� ��� ���������� ������ ������ �����, ������ �������� ����� �����
����������

% cc foo.c bar.c

��������, ��� �������������� ��������—��� ������ �������� ����������. ��� ���� ��
����������� �������� �� ������� ��������� ���� ���������� ������, ���� ��������� �
����������� ���� ��� ������������� ����������� ���������� ���, ��� �� ������ ������������
��������. [3]

������� �������� ���������� ���������� ��� cc, ��� ���
������� �� ���������� ��������. ��� ��������� �� ����� ������, � ��������� ��
�������������.

-o filename

��� ��������� �����. ���� �� �� ����������� ���� ��������, cc
����������� ���������� ���� � ������ a.out. [4]

% cc foobar.c               ���������� ���� ���������� a.out
% cc -o foobar foobar.c     ���������� ���� ���������� foobar
-c

��������� ������ ���������� �����, ��� ����������. ������� ��� ���������� ��������,
����� �� ������ ������ ��������� ���������, ��� ��� ������������� Makefile.

� ���������� ����� ������������ ��������� ���� (�� ����������
����) � ������ foobar.o. �� ����� ���� ����������� � �������
���������� ������� ��� ��������� ����������� �����.

-g

������� ���������� ������ ����������� �����. ���� �������� ��������� �����������
��������� � ���������� ���� ���������� � ���, ����� ������ ������ ����� � ��������
������� ������ ������ ������� �������������. �������� ����� ������������ ��� ����������
��� ������ ��������� ���� ��� ��������� ���������� ���������, ��� ����� �������; ������� �������� ��, ���
��� ��� �������������� ���������� ������ ��������� ������� �������. ������ ��
������������ � ���������� -g ��� ������ ��� ����������, �
�����, ����� ��������� � ����������������� ���������, ������������ «�������������
������» ��� ��������� -g.

��� ���� ����� ������������� ���������� ������ ���������. [5]

-O

������� ���������������� ������ ����������� �����. ���������� ��������� � ���������
���������� ��� ����, ����� ������������� ���������� ����, ������������� �������, ���
������. ����� ����� -O �� ������ �������� �����, �����������
�������� �����������, �� ������������� ����� �� �������� �� ������ �����������
�����������. ��������, ��������, ��� ������ ����������� cc,
������������ � FreeBSD ������ 2.1.0, ��� ��������� �������� ���������� �������� ��� ���
������������� ����� -O2.

������ ����������� ���������� ��� ���������� ������������� ������.

% cc -O -o foobar foobar.c

�� ���� ������� ����� ������� ���������������� ������ ��������� foobar.

��������� ��� ����� �������� cc ��������� ��� ��� ��
������������ ���������� �������������� ���������, ����� ����������� ���������� ANSI, ����, ������ ������, ��� �������� ISO.

-Wall

�������� ������ ���� ��������������, ������� ��������� ������ ������ ������ cc. �������� �� ���� ��������, ��� ���� ���������� ������ �� ����
��������������, �� ������� �������� ���������� cc.

-ansi

��������� �����������, ���� �� ���, ��-ANSI ���������� ����� C, ��������� � cc. �������� �� ��������, ���� �������� �� �����������, ��� ��� ���
����� ������ ��������������� ���������.

-pedantic

��������� ��� ���������� C,
��������� � ����������� cc, �� ��������������� ���������
ANSI.

��� ���� ������ ���������� cc �������� ��� ������������
��������� ������������� ���������� �����. ��������� �� ��� ������ �������, �� �� �����
�������� ��� ������������� ������ ������������—���������� ����� �� ���������� ���������
�������� ����������� ����������� ������ ���, ������� ����� �������� � ����� ������������
� ����� �������. ����� ��� ���������� ����������� �����.

������ ������, �� ������ ��������� ������ ��� ����� ����� ����������� ���, ����� ���
�����, ����� ����, �������� ��������� ������������ ���������, ����� ��������� �� ��������
���-�� ���—� ��� �����, ��� �� ������ ������������ ����� ��������� ���?

% cc -Wall -ansi -pedantic -o foobar foobar.c

�� ���� ������� ����� �������� �� ������������ ��������� ����� foobar.c ����� ������������ ���������� ���� foobar.

-llibrary

������ ���������� �������, ������� ����� �������������� �� ����� ����������.

� �������� ������ ����������������� ������� ����� �������� ���������� ���������,
������������ ��������� �������������� ������� �� ����� C. � ������� �� ������ ��������,
������� ���������� �� ����������� ����������, � ��� ����� ������� �����������, ��� ��
����� ������������.

��� ���� ���� ���������� ���������� libsomething.a, �� ��������� ��������� cc �������� -lsomething. ��������, �������������� ���������� ����������
libm.a, ��� ��� �� ��������� ��������� cc �������� -lm. ��������� «���������»
��� ������ � �������������� ����������� �������� ��, ��� � ��������� ������ ��� ������
���� ������� � �������� ��������� ����������.

% cc -o foobar foobar.c -lm

�� ���� ������� ���������� �������������� ������� ����� ������������ � foobar.

���� �� ������������ ��� �� ����� C++, ��� ����� �������� �������� -lg++, ��� -lstdc++ ��� �������������
FreeBSD 2.2 � ����, � ���������� ��������� ������ ��� ���������� ���������� ������� C++.
���� �� ������ ��������� ������ cc ���������� c++, ������� ������� ��� �� ���. �� FreeBSD c++ ����� ���� ������ ��� g++.

% cc -o foobar foobar.cc -lg++     For FreeBSD 2.1.6 and earlier
% cc -o foobar foobar.cc -lstdc++  For FreeBSD 2.2 and later
% c++ -o foobar foobar.cc

� ������ �� ���� ��������� �� ����� foobar.cc � ��������
����� C++ ����� ������ ���������� ���� foobar. ��������, ��� �
Unix-�������� ����� � �������� ����� C++ ����������� ������������ �� .C, .cxx ��� .cc, � ������� �� ����� MS-DOS .cpp
(������� ��� ������������� ��� ����-�� ���). gcc ���������� ���
��� ����������� ����, ����� ���������� ������������; ������ ��� ����������� ������ ��
����� ����, ��� ��� �� ������ ������������ �������� ���� ����� � ����� C++ .cpp!


2.4.1 ����� ����������� ������� � ��������
� cc

2.4.1.1. � ������� �������� ���������, ������� ����������
������� sin() � ������� ����� ������. ��� ���
��������?
2.4.1.2. ��� ������������, ����� ���������������� �
������������� ��������� -lm, � ������� ��� ����� �������
���������. ���, ��� ��� ������, ����������� � ���������� ����� 2.1 � ������
�������.
2.4.1.3. ��� ��� ��� ���������?
2.4.1.4. � ������������ ���� � ������ foobar.c, �� �� ���� ����� ���������� ���� � ������ foobar. ���� �� ���������?
2.4.1.5. ������, � ���� ��������� ���������� ���� � ������ foobar, � ���� ������ ��� ��� ������� ������� ls, �� ����� � ������� � ��������� ������ foobar, �������� ��������� �� ���������� ������ �����. ������ �� ��
����� ���� ������?
2.4.1.6. � ������ ��� ���������� ���� test, �� ��� ������� ��� ��������� ������ �� ����������. � ���
����?
2.4.1.7. � �������������� ��� ���������, � ������� ��� ��������
���������, �� ����� �������� ��������� �� ������ � ���������� «core dumped». ��� ��� ��������?
2.4.1.8. �������������, �� ��� � ������ ������ ������?
2.4.1.9. ����� ��� ��������� ���������� ����, ��� ������
��������� «segmentation fault». ��� ��� �����?
2.4.1.10. ������ ��� ��������� ����� ������ �������� ���������
«bus error». � ���� ����� ��� Unix ������������, ��� ���
�������� ��������� �������� � �������������, �� ��������� �������� ���������. ���
������?
2.4.1.11. ��� ����� ������, ���� ��������, ����� ���������
������ ���������, ���� � ����� �������� ��, ����� ������. ���� �� � ��� ������, ��� ���
����� ����� ��������� ������?

2.4.1.1. � ������� �������� ���������,
������� ���������� ������� sin() � ������� ����� ������.
��� ��� ��������?

/var/tmp/cc0143941.o: Undefined symbol `_sin' referenced from text segment

��� ������������� ����� �������������� �������, ��� sin(), ��� ����� ������� ����������� cc
�� ���������� � �������������� �����������, ��� ���:

% cc -o foobar foobar.c -lm

2.4.1.2. ��� ������������, �����
���������������� � ������������� ��������� -lm, � ������� ���
����� ������� ���������. ���, ��� ��� ������, ����������� � ���������� ����� 2.1 � ������
�������.

#include <stdio.h>

int main() {
    float f;

    f = pow(2.1, 6);
    printf("2.1 ^ 6 = %f\n", f);
    return 0;
}
         

� � ���������� �� ��� ���:

��� �� � �������, �� ��� �� ������� ������� ��� ���:

% ./a.out
2.1 ^ 6 = 1023.000000

��� ������������ ���������! ���
����������?

����� ���������� �����, ��� �� ��������� �������, �� �������� ����� ��� ���
����������. ���� ��� ���, �� ��������������, ��� ������� ���������� �������� ���� int, ��� ����������� �� �������� ���, ��� �� ����� � ����.

2.4.1.3. ��� ��� ��� ���������?

���������� �������������� ������� ��������� � ����� math.h. ���� �� ��������� ���� ����, �� ���������� ������ �����
���������� � ���������� ��������� �������� ���� � ������ ���������!

#include <math.h>
#include <stdio.h>

int main() {
...
         

����� ���������� ����� �� �������, ��� � ������, ��������� ��������� �����:

% ./a.out
2.1 ^ 6 = 85.766121

���� �� ����������� �����-���� �������������� �������, ������ ��������� ���� math.h � ��
�������� ��������� ���������� � �������������� �����������.

2.4.1.4. � ������������ ���� � ������
foobar.c, �� �� ���� ����� ���������� ���� � ������ foobar. ���� �� ���������?

���������, ��� cc ����� �������� ���������� ���� a.out, ���� �� �� �������� ��� ����. �������������� ������ -o filename:

2.4.1.5. ������, � ���� ���������
���������� ���� � ������ foobar, � ���� ������ ��� ��� �������
������� ls, �� ����� � ������� � ��������� ������ foobar, �������� ��������� �� ���������� ������ �����. ������ �� ��
����� ���� ������?

� ������� �� MS-DOS, Unix �� ������������� ������� �������, ����� ��������
����� ���������� ����, ������� �� ������ ���������, ���� �� ���� ��� �������. ����
������� ������� ./foobar, ������� ��������, ��� «�����
��������� ���� � ������ foobar, ��������������� � �������
��������», ��� �������� ���� ���������� ��������� PATH, ����� ���
��������� �������� ���

bin:/usr/bin:/usr/local/bin:.

����� � ����� �������� «���������� � ������� ��������, ���� � ������ ������ ��
�������».

2.4.1.6. � ������ ��� ���������� ����
test, �� ��� ������� ��� ��������� ������ �� ����������. � ���
����?

� ����������� Unix-������ � �������� /usr/bin
������������ ��������� � ������ test � �� ����, ��� ��������
��������� �� �������� ��������, ��� �������� ������ ��. ��������:

���� �������� ����� ���������� ��� ����� ��������� ���!

2.4.1.7. � �������������� ��� ���������,
� ������� ��� �������� ���������, �� ����� �������� ��������� �� ������ � ����������
«core dumped». ��� ��� ��������?

����� core dump (����� �����) ����� ��������������
������� ������ ���� Unix, ����� � �������� ��������� ��� �������� ������ � �������
�������������� ������ �� ��������� ����������� (core). � �����, ���� � ��������� ���
��������� �������� ��������� ������, ������� ���������� ���������� ������ �� ���������
����������� �� ���� � ���� � ������ core, � ������� ����� ���
����������� ������� ������������ ��� ���������� �����������.

2.4.1.8. �������������, �� ��� � ������
������ ������?

��� ������� ����� �������������� ���������� gdb
(���������� Section 2.6).

2.4.1.9. ����� ��� ��������� ����������
����, ��� ������ ��������� «segmentation fault». ��� ���
�����?

� �������� ��� ������, ��� ���� ��������� �������� ��������� � ������ �����-��
������������ ��������; Unix �������� ���, ��� �������� ������������ ������� � ������
��������� �� ����������� ���������� ��������.

����� ������������ ��������� ����� ��������:

  • ������� ������ � ������� ������, �� ������� ��������� ��������� �� ��������� NULL, ��������

    char *foo = NULL;
    strcpy(foo, "bang!");
           
    
  • ������������� ���������, Using a pointer that hasn’t been initialised, eg

    char *foo;
    strcpy(foo, "bang!");
           
    

    ��������� ����� ����� ��������� ��������� ��������, �������, ������, ��������� ��
    ������� ������, ����������� ����� ���������, � ���� ����� ��������� ���� ��������� ��
    ����, ��� ��� ������ ��������� ���-��. ���� ��� �� �������, �� �� ����� ��������� ��
    ������� ���-�� � ����� ����������� ���������, � �������� ���� �� ����� �������� ������,
    ��� �������� � ����������� �����.

  • ������� ������ �� ������� �������, � �������

    int bar[20];
    bar[27] = 6;
           
    
  • ������� ���������� ������ � ������� ������, ��������� ������ � ������ ������,
    ��������,

    char *foo = "My string";
    strcpy(foo, "bang!");
           
    

    ����������� Unix ����� ��������� ��������� ��������� ���� «My
    string»
    � �������� ������, ��������� ������ ��� ������.

  • ���������� ������������ �������� � ��������� malloc()
    free(), ��������

    char bar[80];
    free(bar);
           
    

    ���

    char *foo = malloc(27);
    free(foo);
    free(foo);
           
    

��������� �����-���� �� ���� ������ �� ������ �������� � ������, �� ��������� �����
������ �� �����. ��������� ������� � ����������� ����� ������, ��� ������, ��� ������
���������, ��������� ���������� � ����� �������, ����� �� ����������� � ������.

2.4.1.10. ������ ��� ��������� �����
������ �������� ��������� «bus error». � ���� ����� ��� Unix
������������, ��� ��� �������� ��������� �������� � �������������, �� ��������� ��������
���������. ��� ������?

���, � �������, ��� (����, �������, � ��� ������������� ��� ������� �
�������������…). ������ ��� �������� ��� ����� �������� �������, ��� �� ����������� �
������ ������������ �������.

2.4.1.11. ��� ����� ������, ����
��������, ����� ��������� ������ ���������, ���� � ����� �������� ��, ����� ������. ����
�� � ��� ������, ��� ��� ����� ����� ��������� ������?

��, ������, ������� �� ������ ������� ��� xterm, ������� �������

% ps

��� ����������� �������������� ��������, ���������������� ����� ���������, � ���������
�������

% kill -ABRT pid

��� pid ��� �����
��������������� ��������, ������� �� �����.

��� �������, ���� ���� ���������, ��������, ������ � ����������� ����. ���� ����
��������� ������������� ������ SIGABRT, ���� ��������� ������
��������, ������� �������� � ��������� ����������.

�������������� �������� �������� �������� ���������� ����� �� ����� ��������� ���
������ ������ ������� abort(). ��� ����������� ��������
���������� � �������� ������� �� abort(3).

���� �� ������ ������� ��������� ���� ����� ���������, �� �� ������ ����������� ������
���������, �� ������ ������������ ��������� gcore. ���������� �
���������� �������� �� gcore(1) ��� ���������
����� ������ ����������.


2.5 Make

2.5.1 ��� ������������ ����� ������� make?

����� �� ��������� ��� ������� ����������, ��������� ����� ���� �� ������ ��� ����
������ � �������� �������, ������ �������

% cc file1.c file2.c

�� ��� �� � ��������������, �� ��� ������ ���������, ���� ������� ��������� ������—�
� ���� �� ��� �������� ����������.

����� �� �������� �������� ����� �������� ������������� ��������� ������ �
�������������� ������ ��� ������ � �������� �������, ������� ���� ��������. ��� ��� ��
����� ������ ����� ����� ����������:

% cc file1.o file2.o ... file37.c ...

���� �� �������� ���� file37.c, � ������ ����� �� �������� �
������� ����������. ��� ����� ����������� �������� ����������, �� �� ������ �������� �
������� ������.

���� �� ����� �������� ������ �� ����� ���������� ���������� ��� ������� �������� �
������� ������, �� ��� ���� ����� ������������������� ���, ��� ������ ���� ������
������������� ��� �������� �������.

��� ��������, ���� �� ����� ���� � ������� ������ �������� �������? ���, ���� ��
�������� � ������� � ������� ������, ������� �������� �������� ��� � ���, ��� ���
�������� ���� �� �� ������ � �������� �����, ������� �� ����������?

��������, �� ����� ���������� ��� ���� ������ � �������� ����� ������, ������� �����
��������� ��������� �������, ������������, ����� �� �������������� ����� � ��������
�������. ������ ���, ��� ��� �����, ��� ���������, ������� �������� ����� �������, ���
��� ��� ������� ������ ��� ���������� ����������.

��� ��������� ���������� make. ��� ������ ����, ���������� make-������, �����������, ��� ��������� ����� ������� ���� ��
�����, � ����������, ����� ������ ��������� ��������������, � ����� ���. ��������,
������� ����� �������� ����� ����� «���� fromboz.o ������, ���
fromboz.c, �� ��� ������, ��� ���-�� ������� fromboz.c, ������� ���� ���� ����� �����������������». �
make-����� ����� ������� �������, ����������� ��������� make, ��� ������ ����������������� ���� � �������� �������, �����
��� ������� ������� ����� ������ ������������.

Make-����� ������ ������������� � ��� �� ����� ��������, ��� � �������� �����, �
������� ��� ����� ���������, � ����� ���������� makefile, Makefile ��� MAKEFILE. �����������
������������� ���������� ��� Makefile, ��� ��� ��� ���� ���
����� �������� � ������ ������ ������ ��������, ��� ��� ����� �������. [6]


2.5.2 ������ ������������� ������� make

��� ����� ������� make-����:

foo: foo.c
    cc -o foo foo.c

�� �������� ��� ������, ������ ����������� � ������ ��������.

����� ������ ����������� ������� �� ����� ��������� (���������� ����� (target)), �� ������� ������� ���������, ����� ������ � ���
��������� �����. ����� ��������� make ������ ��� ������, ���
����������, ���������� �� foo; ���� ��� ����������, ��
������������ ������� ��������� ����������� foo � foo.c. ���� foo �� ���������� ��� ���
������, ��� foo.c, �� ����� ��������� ������ �������� ���
����������� ����, ��� �� ����� �����������. ������� �������, ��� ������� ��� �����������
������������� �������������� foo.c.

������ �������� ���������� � ������� ��������� (�������
������� tab) � �������, ������� �� ������ ���� �� ������� ���
�������� foo, ���� �� �������� � ������ ��������� ������. ����
foo �������� ��� �� ����������, �� make ��������� ��� ������� ��� �� ��������. ������� �������, ���
�������, ������� ���������, ��� ������ ����������������� foo.c.

����, ����� �� ������� ������� make, ��� ���������, ���
foo ����� ��������������� ��������� ���������� � foo.c. ���� ������ ����� ���� ������ � Makefile � ������� �����—�������������, �� FreeBSD ��������
��������� ���������������� ������������ �������, ������ ������ make world � ��������������� ��������!

������ �������� ��������� make-������ �������� ��, ��� � ����� �� ����������� ������
���� ���������. ��������, �� ����� ������� ����� make-����:

foo: foo.c
    cc -o foo foo.c

install:
    cp foo /home/me

�� ����� ������� ��������� make, ����� ���� �� ���������� ���������, ������:

% make target

�� ���� ������� make ����� �������� ������ �� ��� ���� �
������������ ��� ������. ��������, ���� �� ������� make foo
� make-������ ����, �� make ����� ������������ ���� install.

���� �� ������ ������� make ��� ����������, �� make
������ ����� ������ ������ ���� � ����� ����������� ��� ��������� ������ �����. ��� ���
���� � ����� ������ �� ������� make, �� ��� �������� � ����
foo, ��������������� foo, ���� ���
�����, � ����� ����������� ��� �������� � ���� install.

��������, ��� ���� install �� ����� ���� �� ������� �� ��
����! ��� ������, ��� ������� � ��������� ������ ����������� ������, ����� �� ��������
��������� ��� ����, ������� make install. � ���� ������ foo ����� ������������ � �������� ������� ������������. ��� �����
������������ � make-������ ����������, ��� ��������� ���������� � ���������� �������
����� �������� ����������.

��� ����� ������� ��� ���������� �������. ���� �� �� ����� ���������, ��� �������� make, ����� ����� �������� ������� ��������� ���� «hello world»,
������� make-����, �������� �������������� � ��������������������. ����� ����������
������������ ����� ��� ���� �������� ����, ��� �������� ����, ���������� include-����.
����� ����� ������� ������� touch—��� �������� ���� ����� ���
��� ��������������.


2.5.3 Make � include-�����

��� �� ����� C ����� ���������� �� ������ ���������� ������, ��������, stdio.h.
��������� �� ���� ������ �������� ���������� ����������� �������, � ��������� ��������� �
�������, ��� ������� �� ������ ���������:

#include <stdio.h>
#include "foo.h"

int main(....

��� ����������� ����, ��� ���� ���� ����� ���������������� � ������ ��������� foo.h, �������� ��� � ��� Makefile:

foo: foo.c foo.h

�����, ����� ��� ������ ������ �ӣ ������ � � ��� �������� �ӣ ������ � ������
����������� include-������, ������� ����� ������������, ����������� ��� ���������� �����
� �����, �� ��� ���������, ����� ��������������. ���� �� �������� include-����, �� ������
����������������� ��� �����, ��������� �� ����, ��������� ����� �������������. � gcc ������� ��������, ����������� ������������� ���� ����� �
�������� �������� ���������� ������ � �� ������������: -MM.

���� �� �������� ��������� � ��� Makefile:

depend:
    gcc -E -MM *.c > .depend

� ��������� make depend, �� �������� ���� .depend, ���������� ������ ��������� ������, C-������ �
include-������:

foo.o: foo.c foo.h

���� �� ��������� foo.h, �� ��� ��������� ������� make ��� �����, ��������� �� foo.h, �����
�����������������.

�� ��������� ��������� make depend ������ ��� ��� ����������
include-����� � ������ �� ����� ������.


2.5.4 Make-����� FreeBSD

Make-����� ����� ��������� �������� ��� ��������. � �������, ������� �� ������ BSD,
�����, ��� FreeBSD, ������������ � ����������� ����� ������� � ������� �������. �����
����� ������� �������� �������� ������� ������ FreeBSD. ��� �������� ����� ��������� Makefile �����:

MASTER_SITES=   ftp://freefall.cdrom.com/pub/FreeBSD/LOCAL_PORTS/
DISTFILES=      scheme-microcode+dist-7.3-freebsd.tgz

.include <bsd.port.mk>

������, ���� �� �������� � ������� � ���� ������ � ������� ������� make, �� �������� ��� ���:

  1. �������� �������� �� ������� ��������� ���� ����� ����� � �������.

  2. ���� ��� ���, �������������� FTP-���������� � URL, ���������� � MASTER_SITES, ��� ������� ��������� ������.

  3. ����������� ����������� ����� �������� ������� � ������������ � ��������� �����������
    ������ ������������ ����� �������� �������. ��� �������� ��� ����, ����� ���������
    ����������� �������� ������� ����� ���������.

  4. �������� ��� ���������, ��������� ��� ����, ����� �������� ��� ������� ��
    FreeBSD—���� ������� ����� �������� ������� (patching).

  5. ����������� ��� ���������, ��������� ��� �������� �������. (������ ������������
    Unix-�������� �������� ����������, �� ����� ������ Unix ��� ������������� � �����
    �������������� ����������� Unix �������—��� ���������� ���������� �������� � ���������
    ������ FreeBSD).

  6. ������������� �������� ��� ���������. � ���������, �� ������ ������� �� ���, � �������
    ���� ����������� �������� ������ � ��������� ������� make—�
    ����������� make-����� ��������� ������� ����������� ��� ���������� ���������
    ����������.

  7. ������ � ��� ���� ����������������� ������ ���������. ���� �� �����, �� ����� ��
    ��������������; ����� �� ��������� ���������� ��, �� ����� ������ ������� make install. ��� ���� ��������� � ��� ����������� ��� ������
    ����� ����� ����������� � ���������� ��������; � ���� ������ �
    ��������
    ����� ������� ������, ����� ���� ��� ���� ����� � ��������� ������, ����
    �� ��� �� ����������.

������, � �����, �� �����������, ��� ��� �������� �� ������� ����� ��� �������� �����
�����������!

������ �������� � ��������� ������, ������� ��������� ��������� make �� ��������� ���������� make-����� � ������ bsd.port.mk. ����� ���������� ��� �������, �� ������ � ���
���������� ��� ��� ��������—���-�� ������� make-����, ����������� ��������� make �� ���������� ���� ������������� �������� (���� ��� ������ ����
�� ���������, ������� ��������� ������, ������� ����� ����������) � ����� ����� ��������
������ � ����, ������ ������� ���� ������� � ����������� make-����!

���� �� ������ ��������� �� ��� ��������� make-�����, �� ��� ��������� � �������� /usr/share/mk, ��, ��������, ����� ������� ��������� ��������
������ � make-�������, ��� ��� ��� ����� ������ (� ���� �� ������ � ��� �����������,
����������� ������� ��� ����� ������ � ������� ����!)


2.5.5 ����������� ������������� ���������
make

Make �������� ����� ������ ������������, � ����� ������
������� ������, ��� ��������� ������� �������, ����������� ����. � ���������, �������
��������� ��������� ������ make, � ��� ��� �����������
���������� ���� �� �����. ��������, ������ �������� ��������, ��� ��� ����� ������,
�������� ������ ������������—��������, ��� ��� �������� ���� ��� �������� ��������,
������� ������� ��� � ����.

������ make, ������������ � FreeBSD, �������� Berkeley
make
; ����������� ��������� � ����� for it in /usr/share/doc/psd/12.make. ����� ��� �����������, ���������

% zmore paper.ascii.gz

� ���� ��������.

������ ���������� � ��������� ������ ���������� GNU make, �
������� ������������ ������� ����� ������� «info». ���� �� ������������� �����-���� ��
����� ������, �� GNU make ����� ������������� ���������� ���
������ gmake. �� ����� ��� �������� � ���� ����� � �������.

����� ����������� info-�������� �� GNU make, ��� ��������
��������������� ���� dir � �������� /usr/local/info, ������� ��� ��� ������. ��� �������� ����������
�������� ����� ������

 * Make: (make).                 The GNU Make utility.

� ����. ��� ������ �� ��� ��������, ������� ������� ������� info � ������� ����� ��
���� (��� � ��������� Emacs ������ C-h
i
).


2.6 �������

2.6.1 ��������

��������, ������������ � FreeBSD, ���������� gdb (GNU debugger). �� ����������� �� �������

% gdb progname

���� ����������� ������������ ��������� ��� �� Emacs. ��
������ ������� ��� ���:

M-x gdb RET progname RET

������������� ��������� ��������� ��� ��������� ��������� � ����� ��������������
���������. ��� �������, �� ������� ��������� ��������� � ��������� ������ ���������,
������� �������� ����������, �������� ��, ��������� ��������� ��������� ��������� ��
������������� ����� � ����� ������������, � ��� �����. �� ���� ������ ������������ � ���
���������� ��������� ��� ��������� ���� ����� ��� �������� ������� ������ � ���������.
�������� ���� �������� ����, ���� ��� �������� �������� ������, ��� �������
���������������� ����������, ������� �������� ���� ������.

� gdb ������� ���������� ������� ���������� ������� ������, �
����� ����� info-�������, ��� ��� � ���� ������� ���� ����� �������� �� ���������
�������� ������.

�������, ���� �� ��������, ��� ��� ������ ������ � ����� ��������� ������ � ���������
������ ��������, �� � ��������� ������ ��� ���� ������� ����������� ���������� xxgdb.

���� ������ ������������ ���� ��������� � ������������� gdb �
�� ��������� ����������� �������, �����, ��� ������� ����.


2.6.2 ������ ��������� �
���������

����� �������� ������������ ��������� �� ������������� gdb,
��� ����� ��������������� ��������� � ���������� -g. ��������
����� �������� � ��� ���� �����, �� �� ������� ������� ������ �������� ������� �������,
�� �� �� �������� ���. ���� �� ������� ����� ���������:

... (no debugging symbols found) ...

��� ������� gdb, �� ����������, ��� ��������� �� ����
��������������� � ������ -g.

� ����������� gdb �������� ������� break main. ��� ������ ��������� ���������� ���������������
���������������� ��� ��������� � ������ ����� � ������ ����. ������ ������� ������� run ��� ������� ���������—��� ������ ����������� �
����������������� ���� � ����� ����� ����������� ���������� ��� ������ main(). (���� �� �����-���� ����������, ������ ���������� main(), �� ������ �� ������ �����!).

������ �� ������ ��������� ��������� ��������� �� �����, ������� n. ���� �� ������ �� ����� �������, �� ������ ������� � ���, �����
s. ���������� � ������ �������, �� ������ ��������� ��
���������� ���������� ������� �������� f. �� ������ �����
������������ ������� up � down ���
��������� ���������� ������������.

��� ������� ������ ����, ��� ������� ������ � ��������� ��� ������ gdb. ��� ���� ��������� (� ��������� ���������� �������):

#include <stdio.h>

int bazz(int anint);

main() {
    int i;

    printf("This is my program\n");
    bazz(i);
    return 0;
}

int bazz(int anint) {
    printf("You gave me %d\n", anint);
    return anint;
}

��� ��������� ������������� �������� ���������� i ������
5 � �������� �� � ������� bazz(), ������� ������� ���������� ���� �����.

��� ���������� � ������� ��������� �� ��������

% cc -g -o temp temp.c
% ./temp
This is my program
anint = 4231

��� �� ��, ��� �� �������! ����� ����� ����������, ��� �� ����������!

% gdb temp
GDB is free software and you are welcome to distribute copies of it
 under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.13 (i386-unknown-freebsd), Copyright 1994 Free Software Foundation, Inc.
(gdb) break main               ������� ���������� ����
Breakpoint 1 at 0x160f: file temp.c, line 9.    gdb ������������� ����� �������� � main()
(gdb) run                   ������ �� ������ main()
Starting program: /home/james/tmp/temp      ��������� �������� ��������

Breakpoint 1, main () at temp.c:9       gdb ��������������� � main()
(gdb) n                       ������� � ��������� ������
This is my program              ��������� �������
(gdb) s                       ������� � bazz()
bazz (anint=4231) at temp.c:17          gdb ������� ���� �������
(gdb)

���������! ��� �������� anint �������� ������ 4231? ����� �� �� ��������� ��� �������� 5 � ������� main()? ������� ��������
� ������� main() � �������� ����.

(gdb) up                   ������� ����� �� ����� �������
#1  0x1625 in main () at temp.c:11      gdb ������� ���� �������
(gdb) p i                   ����� �������� ���������� i
$1 = 4231                   gdb ������� 4231

� ����! ���� �� ����, �� ������ ���������������� ���������� i. �� ������ ������� ��� ���

...
main() {
    int i;

    i = 5;
    printf("This is my program\n");
...

�� ������ ��� ������ i=5;. ��� ��� �� �� ���������
��������� �������� ��� i, �� ���������� ��������� ���������
��������, ����������� � ��������������� ������� ������ ��� ������ ���������, � � �����
������ ��� ��������� ����� 4231.

Note: gdb ������� ���� ������� ������ ���, ����� ��
�������� ��� ������������ �� �������, ���� ���� �� ���������� ������� up � down ��� ����������� �� �����. ���
���� ��������� ��� ������� � �������� �� ����������, ��� �������� ��� �����������, ��� ��
��������� � ��� ����������. (���� �������� ��������, ��� ��������� ��������� ���������� �
������������ �������� ���������� � � ���, ���� ����� ������� ����� �������� ��
�������).


2.6.3 ������������ ����� �����

���� �����, ������ ������, �������� ������, ���������� ������ ����� �������� � ������
��� ����. � «������ ������ �������» ������������ �������� ����������������� ����������
������ ����� � ������� ��� ������������� �� �������� �����, �� ������ ����� ���������
�����������. � ���������, �� FreeBSD � ������ �������� �� ������ 4.4BSD ����� �����
���������� progname.core, � ��
������ core, ��� ����, ����� ���� ��������, � ����� ���������
��������� ��������������� ���� �����.

��� ������������ ����� ����� ��������� gdb ������� �������.
������ ����, ����� �������� ������� break ��� run, ��������

(gdb) core progname.core

���� �� �� � ��� �� ��������, ��� � ���� �����, �� ��� ����� ������� ��������� �������
dir /path/to/core/file.

�� ������ ������� ����� ����� ����������:

% gdb a.out
GDB is free software and you are welcome to distribute copies of it
 under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.13 (i386-unknown-freebsd), Copyright 1994 Free Software Foundation, Inc.
(gdb) core a.out.core
Core was generated by `a.out'.
Program terminated with signal 11, Segmentation fault.
Cannot access memory at address 0x7020796d.
#0  0x164a in bazz (anint=0x5) at temp.c:17
(gdb)

� ���� ������ ��������� ���������� a.out, ��� ��� ���� �����
���������� a.out.core. �� ����� ������, ��� ���������
����������� �������� ��-�� ������� ������� � ������� ������, �� �����������, � �������
bazz.

������ ������ ������� ����� ����������� �����������, ��� ������� ���� �������, ������
��� � ������� ��������� �������� ����� ��������� � ����� ����� �������� ����� �������.
������� bt ���������� gdb ������
�������� ����������� ����� �������:

(gdb) bt
#0  0x164a in bazz (anint=0x5) at temp.c:17
#1  0xefbfd888 in end ()
#2  0x162c in main () at temp.c:11
(gdb)

��� ���� ��������� ���� ������� ������� end(); � ����
������ ������� bazz() ���� ������� �� main().


2.6.4 ����������� � ����������
���������

����� �� ���������� ������������ gdb �������� ��, ��� ��
����� ������������ � ���������, ������� ��� �����������. �������, ��� ����
��������������, ��� � ��� ���������� ����������, ����� ��� �����������. ������� ��������
� ��������, ����� �� ������ ��������� ����������� ������������ ��������, �� ��������
��������� ��� ������������ ������ ������������.

� ���� �������� ����� ��������� ��� ���� �������� gdb,
��������������� �������� ps ��� ������ ��������������
������������ �������� � ��������� �������

(gdb) attach pid

� gdb, ����� ���� ���������� ��������� ������� �������.

«��� ��� ������», �������, ��������, ��, «�� � �������, ����� � ��� ��� ������,
����������� ������� ��� �������� ���� ������». ����� ����, � ���, ������� ��������, �
��� ��� ��� �������� (�������� info-��������� ��������� gdb):

...
if ((pid = fork()) < 0)     /* _Always_ check this */
    error();
else if (pid == 0) {        /* child */
    int PauseMode = 1;

    while (PauseMode)
        sleep(10);  /* Wait until someone attaches to us */
    ...
} else {            /* parent */
    ...

������ �ӣ, ��� ��� ����� �������, ��� ������������ � �����ģ����� ��������,
���������� �������� ���������� PauseMode0 � ��������� �������� �� ������ ������� sleep()!


2.7 ������������� Emacs � �������� �����
����������

2.7.1 Emacs

� ���������, Unix-������� ������������ ��� ������ �� �� �� ����
�����������-���-���-��-��������-�-�������-������ ������-�����������-������
��������������� ����� ����������, ������� ������� � ������ ��������. [7] ������ �������
����������� ��������� ����������� �����. ��� ����� ���� �� ����� �� ��������, � �� �����
���������������, �� �� ������ ��������� �� ���, ��� ��� ����� �������. � ��� ���������. �
�������� �� �������� ���.

� ��� ��� ���������� Emacs. ��������� ������ � ���� ����������, �� ������ ��� �����.
���� �� �� ������, �� �����, ��� ���� ������ ���� ��� ������������. ����� ��� �����������
��������� ���������� ������ ��� ��� ������—� ���������� 8 �� ��� ���������� ������ � 16
�� ��� X � �������� ����������� ���������� ��� ��������� ������������������
������������������.

������ ������, Emacs �������� ���������� � ����� �������� ������������� �� ���
���������—�������������, �� ������� ���, ��� ������ ����� �� ������������ �������, ���
�� ��������! �� ����� ���� ������ ������������ � ��������� �������������� ��������
����������� ��� ���� ����� � ��������� Emacs, ������ �� ���� ������ ��� ���������� ������
� ��������.

����� ���� ������� ������ ���������� ������� ���, ��� ����� ������ Emacs, �� ���
������ ��������� �� ������������, �������������� ������� ��� �������������:

  • ����� ������ ��������, ����������� ��������� ����� � ������ ��� �����, ��� �
    ���������� ��������� (��������), ������� � ������ ��� ����� �����, � ��� �����, � ����
    ��������.

  • ���������� ���� � ���������� ������� ������.

  • �������������� ��������� � ������������ �������� � ����������� �� �����.

  • ������ ���������������.

  • � Emacs �� ������ ������������� � ���������� ���������.

  • ��� ������������� ������ ���������� �� ������ ������� � ��������������� ������
    ��������� ����.

  • ������������� ��������� � ���������� info, ������������ ���
    ������ �������������� ������������ GNU, ������� ������������ �� ��� Emacs.

  • ������������� ��������� � ���������� gdb, �����������
    ������������ �� ��������� ���� � ������������ � ������ ���������� ���������.

  • �� ������ ������ ��������������� Usenet � ����������� ����� �� ����� ����������
    ���������.

�, ����������, ������ �� ����, ��� � �� ��������.

Emacs ����� ���� ���������� �� FreeBSD ��� ���� Emacs.

����� ����, ��� �� ����� ����������, ��������� ��� � ������� C-h t ��� �������� �������� �� Emacs—��� �������� �����������
������� control � ������������� �������� �� ������� h, � ����������� ����������� ������� control
�������� ������ t. (���� �� ������ ������������ ���� ��� ������
������ �� ���� ).

���� � Emacs ������� ����, ����� ������� ������������ ������������ �������, ��� ���
��� �������������� ����-���� ������� ������� ������ ��������� ������, ��� ������ ���� �
����� ������� � ������ �����. �, ���� �� ���������� � �������� �������������� Emacs, ��
�� ����������, ��� ��� ����� ������ ������ ����� ���� «M-x
replace-s RET foo RET bar RET
», ��� ��� ������� �����, ��� ��� ��������. �, �
����� ������, � Emacs ������� ������� ����� �������� �������, ����� �������� �� ��� �
������� ����.

� �������, ���������� ����� ����� ������������ ����������, ��� ��� ��� ��������� �����
� ������� ����. � ������� ������������ ������� ����, ������, ��� �������� �����, �� ���
���, ���� �� �� �������, ��� ��� �������� � ������������ ���� ��������, � ������ �����
���������� ��������� C-x C-f. ����� �� ������ ���� �������������, ���������� � ��������
��������� ������� ����.

���� �� �� ������ ���������, ��� ������ ���������� ���������� ������, �������� �����
�� ���� �
�������� ��—Emacs ������, ��� ��� ������. �� ������ ����� ��������������� ������� ����
��� ������ ���� ������, ������� ��������
��������� �����, ������ � ������������ �����������.

������, ��������� ���� �������� ��������� ������� Meta,
������� x, ���������� ������� Meta, ����� replace-s (���������� ���
replace-string—��� ����� ������������ Emacs ��������
����������� ��������� �������). ������� ������� return, �����
foo (������, ������� �� ������ ��������), ������� �������
return, ����� bar (������, ������� ������� foo) � ������� return �����. Emacs
�������� �������� �� ������ � ������, ������� �� ������ ��� ���������.

���� �� �������������, � ����� ����� ������� ���� ��������� ������� Meta, �� ��� ������ �������, ������� ������� �� ������ �������
�������� Unix. � ���������, �� PC �� ���, ������� ������ ��� ������� alt (���, ���� ��� �� ������ �� �������, ������� escape).

��, ����� ����� �� Emacs, ������� C-x C-c (��� ��������
��������� ������� control, ������� �� x, ������� �� c � ���������� �������
control). ���� � ��� ���� �������� �������������� �����,
Emacs ������ ������ �� �� ����������. (�� ���������� �� �������� ������������, � �������
��������� � C-z ��� �� ������� ������� ������ �� Emacs—��� ����
Emacs �������� �������� � ������� ������ � ������������� ���������� � ������ ������ �
��������, �� ������� ��� ����������� ����������).


2.7.2 ��������� Emacs

Emacs ����� �������� �����������; ��������� �� ��� �������� �����������, ���������
����� ���������.

������ ����, ����� ������������ ��� ��������� ����������� �����-����, � Emacs
����������� ������ Lisp, ���������� �������������� ��� ����������, ��������� ���
��������� Emacs Lisp. ��� ����� ���� ��������� ������ ��������, ���� �� ������ ������
������� ���-�� ���� Common Lisp, ������ ��� �� ����������� ������, ��� Common Lisp (����
��� �� ������ �������!).

����� ����� ������� Emacs Lisp, ������ ������� ��
Emacs

������ ��� ���������� ��������� Emacs ��� ����� ����� ����� �� �� �� ���� Lisp, ���
��� � ������� ���� ������ ����� .emacs, �������� ��� ������
������ �������. ������ ���������� ��� � ���� �������� ������� � ������������� Emacs, ����
�� ��� �������; �� ������� ������� �� ����� � (�������) ���� ��� ���������� ���������
���������.


2.7.3 ������ ����� .emacs

� ���������, ����� ������� ����� �����, ����� ��������� ��������; ������ �� ���� ����
����� ������������ ���������.

  • ���, ��� ���������� � ������� ;, �������� ������������ �
    ������������ Emacs.

  • � ������ ������ -*- Emacs-Lisp -*- ����� ���
    ����, ����� �� ����� ������������� ��� ���� .emacs � ���������
    Emacs � ����� ��� �������� �������������� ������� Emacs Lisp. Emacs ������ ��������
    ������� �������� ����������� �� ������ ����� �����, � ����� ��������� ����� �� ����������
    � ������ .emacs.

  • ������� tab � ��������� ������� �������� ��� �������
    ������������ �������, ������� ��� ������� ������� ��������� � ������� ������ ���� �����
    ����������� ������. ���� �� ������ ���������� ���-���� ������ tab, �� ��� ������� ������� tab
    ����������� ������� control.

  • This file supports syntax highlighting for C, C++, Perl, Lisp and Scheme, by guessing
    the language from the filename.

  • � Emacs ��� ������� ���������������� ������� � ������ next-error. � ���� ������ ���������� ���������� ��� ��������� ���
    ������������� �� ����� ������ ���������� � ������ �� ������� M-n; �� ���������� �������������� ������� previous-error, ������� ��������� ���������� � ��������� ������
    �� ������� M-p. ����� �������� ������������ �������� ��, ��� ��
    ������� C-c C-c ���� � �������� �������, � ������� ���������
    ������, ����� ������ �� ��������������� ������.

  • �� �������� ����������� Emacs �������� ��� ������, ��� ��� ���� �� ������� ���-�� ���
    Emacs � ������ ��������������� ����, �� ������ ������ �������

    % emacsclient filename
    

    � ����� ����� ������� ������������� ���� � ����� Emacs! [8]

Example 2-1. ��������� ���� .emacs

;; -*-Emacs-Lisp-*-

;; This file is designed to be re-evaled; use the variable first-time
;; to avoid any problems with this.
(defvar first-time t 
  "Flag signifying this is the first time that .emacs has been evaled")

;; Meta
(global-set-key "\M- " 'set-mark-command)
(global-set-key "\M-\C-h" 'backward-kill-word)
(global-set-key "\M-\C-r" 'query-replace)
(global-set-key "\M-r" 'replace-string)
(global-set-key "\M-g" 'goto-line)
(global-set-key "\M-h" 'help-command)

;; Function keys
(global-set-key [f1] 'manual-entry)
(global-set-key [f2] 'info)
(global-set-key [f3] 'repeat-complex-command)
(global-set-key [f4] 'advertised-undo)
(global-set-key [f5] 'eval-current-buffer)
(global-set-key [f6] 'buffer-menu)
(global-set-key [f7] 'other-window)
(global-set-key [f8] 'find-file)
(global-set-key [f9] 'save-buffer)
(global-set-key [f10] 'next-error)
(global-set-key [f11] 'compile)
(global-set-key [f12] 'grep)
(global-set-key [C-f1] 'compile)
(global-set-key [C-f2] 'grep)
(global-set-key [C-f3] 'next-error)
(global-set-key [C-f4] 'previous-error)
(global-set-key [C-f5] 'display-faces)
(global-set-key [C-f8] 'dired)
(global-set-key [C-f10] 'kill-compilation)

;; Keypad bindings
(global-set-key [up] "\C-p")
(global-set-key [down] "\C-n")
(global-set-key [left] "\C-b")
(global-set-key [right] "\C-f")
(global-set-key [home] "\C-a")
(global-set-key [end] "\C-e")
(global-set-key [prior] "\M-v")
(global-set-key [next] "\C-v")
(global-set-key [C-up] "\M-\C-b")
(global-set-key [C-down] "\M-\C-f")
(global-set-key [C-left] "\M-b")
(global-set-key [C-right] "\M-f")
(global-set-key [C-home] "\M-<")
(global-set-key [C-end] "\M->")
(global-set-key [C-prior] "\M-<")
(global-set-key [C-next] "\M->")

;; Mouse
(global-set-key [mouse-3] 'imenu)

;; Misc
(global-set-key [C-tab] "\C-q\t")   ; Control tab quotes a tab.
(setq backup-by-copying-when-mismatch t)

;; Treat 'y' or <CR> as yes, 'n' as no.
(fset 'yes-or-no-p 'y-or-n-p)
    (define-key query-replace-map [return] 'act)
    (define-key query-replace-map [?\C-m] 'act)

;; Load packages
(require 'desktop)
(require 'tar-mode)

;; Pretty diff mode
(autoload 'ediff-buffers "ediff" "Intelligent Emacs interface to diff" t)
(autoload 'ediff-files "ediff" "Intelligent Emacs interface to diff" t)
(autoload 'ediff-files-remote "ediff"
  "Intelligent Emacs interface to diff")

(if first-time
    (setq auto-mode-alist
      (append '(("\\.cpp$" . c++-mode)
            ("\\.hpp$" . c++-mode)
                    ("\\.lsp$" . lisp-mode)
            ("\\.scm$" . scheme-mode)
            ("\\.pl$" . perl-mode)
            ) auto-mode-alist)))

;; Auto font lock mode
(defvar font-lock-auto-mode-list 
  (list 'c-mode 'c++-mode 'c++-c-mode 'emacs-lisp-mode 'lisp-mode 'perl-mode 'scheme-mode)
  "List of modes to always start in font-lock-mode")

(defvar font-lock-mode-keyword-alist
  '((c++-c-mode . c-font-lock-keywords)
    (perl-mode . perl-font-lock-keywords))
  "Associations between modes and keywords")

(defun font-lock-auto-mode-select ()
  "Automatically select font-lock-mode if the current major mode is
in font-lock-auto-mode-list"
  (if (memq major-mode font-lock-auto-mode-list) 
      (progn
    (font-lock-mode t))
    )
  )

(global-set-key [M-f1] 'font-lock-fontify-buffer)

;; New dabbrev stuff
;(require 'new-dabbrev)
(setq dabbrev-always-check-other-buffers t)
(setq dabbrev-abbrev-char-regexp "\\sw\\|\\s_")
(add-hook 'emacs-lisp-mode-hook
      '(lambda () 
         (set (make-local-variable 'dabbrev-case-fold-search) nil)
         (set (make-local-variable 'dabbrev-case-replace) nil)))
(add-hook 'c-mode-hook
      '(lambda () 
         (set (make-local-variable 'dabbrev-case-fold-search) nil)
         (set (make-local-variable 'dabbrev-case-replace) nil)))
(add-hook 'text-mode-hook
      '(lambda () 
         (set (make-local-variable 'dabbrev-case-fold-search) t)
         (set (make-local-variable 'dabbrev-case-replace) t)))

;; C++ and C mode...
(defun my-c++-mode-hook ()
  (setq tab-width 4)
  (define-key c++-mode-map "\C-m" 'reindent-then-newline-and-indent)
  (define-key c++-mode-map "\C-ce" 'c-comment-edit)
  (setq c++-auto-hungry-initial-state 'none)
  (setq c++-delete-function 'backward-delete-char)
  (setq c++-tab-always-indent t)
  (setq c-indent-level 4)
  (setq c-continued-statement-offset 4)
  (setq c++-empty-arglist-indent 4))

(defun my-c-mode-hook ()
  (setq tab-width 4)
  (define-key c-mode-map "\C-m" 'reindent-then-newline-and-indent)
  (define-key c-mode-map "\C-ce" 'c-comment-edit)
  (setq c-auto-hungry-initial-state 'none)
  (setq c-delete-function 'backward-delete-char)
  (setq c-tab-always-indent t)
;; BSD-ish indentation style
  (setq c-indent-level 4)
  (setq c-continued-statement-offset 4)
  (setq c-brace-offset -4)
  (setq c-argdecl-indent 0)
  (setq c-label-offset -4))

;; Perl mode
(defun my-perl-mode-hook ()
  (setq tab-width 4)
  (define-key c++-mode-map "\C-m" 'reindent-then-newline-and-indent)
  (setq perl-indent-level 4)
  (setq perl-continued-statement-offset 4))

;; Scheme mode...
(defun my-scheme-mode-hook ()
  (define-key scheme-mode-map "\C-m" 'reindent-then-newline-and-indent))

;; Emacs-Lisp mode...
(defun my-lisp-mode-hook ()
  (define-key lisp-mode-map "\C-m" 'reindent-then-newline-and-indent)
  (define-key lisp-mode-map "\C-i" 'lisp-indent-line)
  (define-key lisp-mode-map "\C-j" 'eval-print-last-sexp))

;; Add all of the hooks...
(add-hook 'c++-mode-hook 'my-c++-mode-hook)
(add-hook 'c-mode-hook 'my-c-mode-hook)
(add-hook 'scheme-mode-hook 'my-scheme-mode-hook)
(add-hook 'emacs-lisp-mode-hook 'my-lisp-mode-hook)
(add-hook 'lisp-mode-hook 'my-lisp-mode-hook)
(add-hook 'perl-mode-hook 'my-perl-mode-hook)

;; Complement to next-error
(defun previous-error (n)
  "Visit previous compilation error message and corresponding source code."
  (interactive "p")
  (next-error (- n)))

;; Misc...
(transient-mark-mode 1)
(setq mark-even-if-inactive t)
(setq visible-bell nil)
(setq next-line-add-newlines nil)
(setq compile-command "make")
(setq suggest-key-bindings nil)
(put 'eval-expression 'disabled nil)
(put 'narrow-to-region 'disabled nil)
(put 'set-goal-column 'disabled nil)

;; Elisp archive searching
(autoload 'format-lisp-code-directory "lispdir" nil t)
(autoload 'lisp-dir-apropos "lispdir" nil t)
(autoload 'lisp-dir-retrieve "lispdir" nil t)
(autoload 'lisp-dir-verify "lispdir" nil t)

;; Font lock mode
(defun my-make-face (face colour &optional bold)
  "Create a face from a colour and optionally make it bold"
  (make-face face)
  (copy-face 'default face)
  (set-face-foreground face colour)
  (if bold (make-face-bold face))
  )

(if (eq window-system 'x)
    (progn
      (my-make-face 'blue "blue")
      (my-make-face 'red "red")
      (my-make-face 'green "dark green")
      (setq font-lock-comment-face 'blue)
      (setq font-lock-string-face 'bold)
      (setq font-lock-type-face 'bold)
      (setq font-lock-keyword-face 'bold)
      (setq font-lock-function-name-face 'red)
      (setq font-lock-doc-string-face 'green)
      (add-hook 'find-file-hooks 'font-lock-auto-mode-select)

      (setq baud-rate 1000000)
      (global-set-key "\C-cmm" 'menu-bar-mode)
      (global-set-key "\C-cms" 'scroll-bar-mode)
      (global-set-key [backspace] 'backward-delete-char)
                    ;      (global-set-key [delete] 'delete-char)
      (standard-display-european t)
      (load-library "iso-transl")))

;; X11 or PC using direct screen writes
(if window-system
    (progn
      ;;      (global-set-key [M-f1] 'hilit-repaint-command)
      ;;      (global-set-key [M-f2] [?\C-u M-f1])
      (setq hilit-mode-enable-list  
        '(not text-mode c-mode c++-mode emacs-lisp-mode lisp-mode
          scheme-mode)
        hilit-auto-highlight nil
        hilit-auto-rehighlight 'visible
        hilit-inhibit-hooks nil
        hilit-inhibit-rebinding t)
      (require 'hilit19)
      (require 'paren))
  (setq baud-rate 2400)         ; For slow serial connections
  )

;; TTY type terminal
(if (and (not window-system) 
     (not (equal system-type 'ms-dos)))
    (progn
      (if first-time
      (progn
        (keyboard-translate ?\C-h ?\C-?)
        (keyboard-translate ?\C-? ?\C-h)))))

;; Under UNIX
(if (not (equal system-type 'ms-dos))
    (progn
      (if first-time
      (server-start))))

;; Add any face changes here
(add-hook 'term-setup-hook 'my-term-setup-hook)
(defun my-term-setup-hook ()
  (if (eq window-system 'pc)
      (progn
;;  (set-face-background 'default "red")
    )))

;; Restore the "desktop" - do this as late as possible
(if first-time
    (progn
      (desktop-load-default)
      (desktop-read)))

;; Indicate that this file has been read at least once
(setq first-time nil)

;; No need to debug anything now

(setq debug-on-error nil)

;; All done
(message "All done, %s%s" (user-login-name) ".")
   

2.7.4 ���������� ���������� ������, �
�������� ����� �������� Emacs

����, ������, ���� �� ����������� ��������������� ������ �� ������, ��� ��������� �
����� .emacs (C, C++, Perl, Lisp � Scheme), �� ��� ��������,
���� ����� ����� ���� ��� ��������� «whizbang», � ������� ������� ����� ���������������
������������?

������ ����� ����� ���������, �� ������������ �� � ������ whizbang � ������� ���
Emacs, ������� ������ ��� �������� �����. ������ ��� ����� ��������� .el, ��� �������� «Emacs Lisp». ��������, ���� whizbang ��������
������ FreeBSDm �� ����� �������� ����� ����� ��������

% find /usr/ports/lang/whizbang -name "*.el" -print

� ���������� ��, ���������� �� � ������� Lisp ��� Emacs ����� �������. �� FreeBSD
2.1.0-RELEASE ��� ������� /usr/local/share/emacs/site-lisp.

���, ��� �������, ���� ��������� ���������� ������� ������ �������� ���

/usr/ports/lang/whizbang/work/misc/whizbang.el

�� �� ��������

# cp /usr/ports/lang/whizbang/work/misc/whizbang.el /usr/local/share/emacs/site-lisp

����� ��� ����� ������, ����� ���������� ����� ����� � ��������� �������� �� �����
whizbang. �����, ��� �������, ��� ��� ������������ �� .wiz. ���
����� �������� ������ � ��� ���� .emacs, ����� Emacs ����
������������ ���������� �� whizbang.el.

������� ������ auto-mode-alist � ����� .emacs � �������� ������ ��� whizbang, �����, ���:

...
("\\.lsp$" . lisp-mode)
("\\.wiz$" . whizbang-mode)
("\\.scm$" . scheme-mode)
...

��� ��������, ��� Emacs ����� ������������� ���������� � ����� whizbang-mode, ����� �� ������������ ����, �������������� �� .wiz.

���� ���� �� ������� ������ ��� font-lock-auto-mode-list.
�������� � ��� whizbang-mode ���������� ����:

;; Auto font lock mode
(defvar font-lock-auto-mode-list 
  (list 'c-mode 'c++-mode 'c++-c-mode 'emacs-lisp-mode 'whizbang-mode 'lisp-mode 'perl-mode 'scheme-mode)
  "List of modes to always start in font-lock-mode")

��� ��������, ��� Emacs ������ ����� ������������ ����� font-lock-mode (�� ���� ��������� �������������� �����������) ���
�������������� ������ .wiz.

� ��� ���, ��� �����. ���� ���� ���-��, ��� �� ������ ������ ������������� ���
�������� ������ .wiz, �� ������ �������� ������ whizbang-mode hook (�������� my-scheme-mode-hook � �������� �������� �������, �������
��������� auto-indent).


2.8 �������������� ����������

  • Brian Harvey and Matthew Wright Simply
    Scheme
    MIT 1994. ISBN 0-262-08226-8

  • Randall Schwartz Learning Perl
    O’Reilly 1993 ISBN 1-56592-042-2

  • Patrick Henry Winston and Berthold Klaus Paul Horn Lisp (3rd Edition) Addison-Wesley 1989 ISBN 0-201-08319-1

  • Brian W. Kernighan and Rob Pike The Unix
    Programming Environment
    Prentice-Hall 1984 ISBN 0-13-937681-X

  • Brian W. Kernighan and Dennis M. Ritchie The C Programming Language (2nd Edition) Prentice-Hall 1988
    ISBN 0-13-110362-8

  • Bjarne Stroustrup The C++ Programming
    Language
    Addison-Wesley 1991 ISBN 0-201-53992-6

  • W. Richard Stevens Advanced Programming in
    the Unix Environment
    Addison-Wesley 1992 ISBN 0-201-56317-7

  • W. Richard Stevens Unix Network
    Programming
    Prentice-Hall 1990 ISBN 0-13-949876-1


Chapter 3 ���������� ����������������

��� ����� ������� ������ ������� (Murray Stokely).


3.1 �����

��� ����� ��������� ��������� �� ������� ����������� ������������, �������
������������� ������������ ������������� Unix, � ����� ��������� ����� ���������
������������, ���������� ������������� �������� ��������� ������������� ����.


3.2 �����������
����������� ������������

��������� ���������� ���������� ������� ������ ������������ � �����������������
������� �� �����. ���������� ������ �������� �� �������� «���������� ����������», ���
������� ������� ������� �� ������ �������� � ������������, ������������ ����������
����������� ��� ���������� ����� ������� �������. ����� ����������� ��� ������
�������������� ���, ��� ������ ��� �������� ��� ��������� ����� ������, ������� �����
���� ��� ���������� �������.

����� �� ������������� � ����� Unix �������� �������� � ������������� ������������
����� ���������. ���������� ������� �� ������ ������ ����������������� ����� (�� ���� ���
������), �������� �������, �������������� �������������� ��� ������� ���������� �������.
�������� Unix ����������� �� ���������, ��� ��� ���������� �������� ����� ������
����������.


3.3 ������������ ������

������������ ������ ��������� ������ � ��������� ����������� ���-������� 1. ������� ������� ����������� ��� �������� � 1988 ���� ������ �
��������-������ ����� (Moorse). � ���������, ����� ����� �� ����� ����������� � � ����
���. �� 17 ���������� ������������ CERT �� 1999 ���, 10 ���� ��������������� �������
������� � ����������� �����������, ��������� � �������������� ������. �����
���������������� ���� ���� � �������������� ������������ ������ �������� �� ����������
�����.

����� ����������� �������������� ������� ���������� ���� ��� �������� ����������
���������� � ���������� ��������� ����������. ���� �������� ������� ���� LIFO (���������
����� ������ �����) � ������� ����� ������� ������ ��������. ����� ��������� ��������
�������, ��������� ����� «������� �����». ��� ������� ������� �� ����������, ���������� �
�������, � ����� ������������� ���������� ������������ ��������� ����������. «���������
�����» �������� ���������, �������� ������� ��������� ������� �����. ��� ��� ��� ��������
��������� �������� ������ � ���������� ����� �������� �� ������� �����, ������ ����������
����� ��������������� «��������� �������», ������� ���������� ����� ������ �����, ��� ���
��������� ���������� ����� ����� ���������� ������������ ����� ��������. 1 ����� �������� �� ������� ����� ����������� � �����, � ��� ��������
�������� ��������� ������������, ��������� � ������������� �����, ��� ��� ���������������
��������� ���������� � ������� ����� �������� ����� �������� �� ���� �������,
������������ �������� �������������� ��������� ����� ���.

���� ����� � ������������� ����� �������� ������ �����������������, ���� ����� �����
������������ ��� ������ �����, ���������� �� ��������� ������ (malloc/free) ��
«����».

��� � �� ������ ������ ������ ����������������, � C �� ����������� ��������������
�������� ������ � �������� ��� ����������. ����� ����, ����������� ���������� C �����
����� ������� �������.

strcpy(char *dest, const char *src)

����� ����������� ������� �����

strcat(char *dest, const char *src)

����� ����������� ������� �����

getwd(char *buf)

����� ����������� ����� buf

gets(char *s)

����� ����������� ����� s

[vf]scanf(const char *format, …)

����� ����������� ���� ���������.

realpath(char *path, char resolved_path[])

����� ����������� ����� path

[v]sprintf(char *str, const char *format, …)

����� ����������� ����� str.


3.3.1 ������ ������������
������

� ��������� ������� ���� ������� ������ ������������ ������, ��������������� ���
���������� ������ �������� � ������ ����������, ��������� ��������������� �� �������
�������. (�� ������� 4)

#include <stdio.h>

void manipulate(char *buffer) {
  char newbuffer[80];
  strcpy(newbuffer,buffer);
}

int main() {
  char ch,buffer[4096];
  int i=0;

  while ((buffer[i++] = getchar()) != '\n') {};

  i=1;
  manipulate(buffer);
  i=2;
  printf("The value of i is : %d\n",i);
  return 0;
}
     

������� ���������, ��� ����� ��������� ����� ��������, ���� � ���� ��������� ���������
�� ������ 160 ��������.

[XXX figure here!]

��������, ��� ��� ���������� �������� ���������� (�����, ��� exec(/bin/sh)), �����
���� �������� ����� ����������� ����.


3.3.2 ��� �������� ������������
������

����� ������������� �������� �������� ������������ ����� �������� ������������� ������
������ �������������� ������� � ������� ����������� �����. ������� strncpystrncat �������� ������
����������� ���������� C. ��� ������� ����� ���������� �� ����� ���������� ����������
���� �� �������� ������ � �������. ������ � ���� ������� ���� ��������� �������. �� ����
�� ��� �� ����������� ������� ������� NUL, ���� ������ �������� ������ ������, ���
��������. �������� ����� ����� ��-������� ������������ � strncpy � strncat, ��� ��� ���
������������� ����� ���������� � ���������� �������������. ���� ����� � ������������
������ ������������������ �� ��������� � strcpy ���
����������� �������� ������ � ������� �����, ������ ��� strncpy ��������� ��������� NUL ������������ �� ���������
�����.

��� ��������� ���� ������� � OpenBSD ���� ������� ������ ���������� �����������
������. ������� strlcpystrlcat �����������, ��� ��� ��� ������ ����������� �������
������ ������� ��������, ���� �� ����� ������� �������� ��������� �����. ����� ���������
���������� �� ���� ��������� ����� 6. ���������� OpenBSD strlcpystrlcat ���� �� FreeBSD
������� � 3.5.


3.3.2.1 ���������������� �������� ������
�� ����� ����������

� ���������, ��� ��� ������ ������������ ����� ������� ����� ����, ������� �����
�������� ������ ��� ������������� ������ ��� ������������� ������� � ��������� ������.
������ ���� ������ �������. ���������� ��������� ���������� � ����������� � �����������
C/C++ ��� ���������� �������� ������ �� ����� ����������.

����� �� ����� ���������� �������� StackGuard, ������� ���������� ��� ��������� ���� �
���������� ���� gcc. �������� ����� StackGuard, http://immunix.org/stackguard.html:

«StackGuard ���������� � �������� ���� �� ����, �� �������� �������� ����� �������� �
�����. ��� ������ ������� StackGuard �������� ����� �� ������� �������� ���������� �����.
���� ����� �������� �� ������� ��� ����������� ����������, �� ���� ������� ���������
����� �� ����, � ��������� �������� �� ��� ���������� ��������� � �������������� �
��������� �������, � ����� ���������� ������.»

«StackGuard ���������� � ���� ���������� ����� � ���������� ���� gcc, � ������
�������� function_prolog() � function_epilog(). function_prolog() ����������������� ���
�������� ������� � ����� ��� ������ ������ �������, � function_epilog() ���������
����������� ������� ��� �������� �� �������. ����� �������, ����� ������� ���������
������ �������� ������������ �� �������� �� �������.»

�������������� ������ ���������� �� StackGuard �������� ����������� ��������
���������� ����������� ���� ������������ ������, �� ��� �� ��������� ��� �������� ��
������.


3.3.2.2 �������� ������ �� �����
���������� � �������������� ���������.

��������� �� ������ ����������� ��������� ���������� ��� ������������ �����������,
������������� � �������� ����, ������� �� �� ������ �����������������. � ���� ���������
������� ��������� ���������� ���������, � ������� ����������� ������������ �������
���������� C (strcpy, fscanf,
getwd, � ��� �����..), �������������� ������������� ������
����� ��������� �����.

  • libsafe

  • libverify

  • libparnoia

� ���������, ��� ������ ����� ��������� ���������� �����������. ��� ���������� �����
�������� ������ ������ ������ ���������� �������, � �� ����� ��������� �������� ��������.
��� ������ ����� �� ���������, ���� ���������� �������������� � ����������
-fomit-frame-pointer. � ���� �� ���������� ��������� LD_PRELOAD � LD_LIBRARY_PATH �����
���� ��������������/����� �������������.


3.4 �������� � ������������� �����
UID

������� �� ������� ���� 6 ��������� ��������������� (ID), ��������� � ����� ������
���������. ������� �� ������ ���� ����� ��������� � ���, ����� ����� ����� ��� ������� �
������ ������ �������. � ���������, ��� seteuid-���������� ������ �������� ����
����������, ��� ������ � ��� �������� �������������.

ID ��������� ������������ ����� ���� ������� ������ ��������� ��������������.
��������� login ������������� ���, ����� ������������ ������ �
�������, � �� ����� ��������.

����������� ID ������������ ��������������� ��������� exec(), ���� � ��������� ���������� ��� seteuidt. ����������
����� ��������� ����� seteuid() � ����� ������ ���
��������� ������������ ID ������������ � �������� ��������� ID ������������ ���
������������ set-user-ID. ����� ����������� ID ������������ ��������������� ���������
exec(), ��� ���������� �������� ����������� � �����������
set-user-ID.


3.5 ����������� ����� ������ �����
���������

����������� ������������ ������� ����������� ������� � �������� �������� �������������
���������� ������ chroot(). ���� ��������� ����� ������
�������� �������, ������������ �������� ������������ ��� ��������� ���� � ����� ��������
� ���� ����������� ��� ���������. ��� ����, ����� ���� ����� ��� �������� �������,
������� ������ ����� ����� �� ���������� (�����) ��������, � ������� ���� ����. �����
����� ������� �� ������� � ����, ���� �� �� ��������� ����� chdir() � ����� ����� �����. ������� ����� ��������, ��� �������
����� � ��������� ����� �� chroot-�����, ���� �� ����� ���������� ��������������. ���
����� ���� ���������� ��������� ������ ��������� ��� ������ ������ ����, ������������
��������� � �������� ��� ������ � ������� ������� ���������.

��������� ���������� ������ chroot() ����� ���������
������� �������������� sysctl-����������
kern.chroot_allow_open_directories. ����� ��� ���������� ����������� � 0, chroot() �� ��������� � ������� EPERM, ���� ���� �����-����
�������� ��������. ���� ��� ����������� � �������� �� ���������, ������ 1, �� chroot() �� ��������� � ������� EPERM, ���� ���� �����-����
�������� �������� � ������� ��� ���������� ������ chroot().
��� ���� ������ �������� �������� ���������� ��������� ����� ��������� �������.


3.5.1 ���������������� ������� (jail) ��
FreeBSD

��������� ������� (Jail) ��������� ����������� chroot(),
����������� ������ �������������� ��������� ��������� `����������� ��������’. ��� ������
�������� ������ �������, ��� ������� ������������ ������ �������������� ����� ����������
����� IP, � ���� «���������� ������������ root» � ���� ������ �������� ����������.

��� ������ ������ ������, ����� �������� ���� �������������� � ���� ��� ������ ������
suser() ����� ������������ ��������. ������ ���������
������ � suser() ���� �������� �� ����� ��������� suser_xxx(). ��� ������� �������� �� ����������� � ����������
������� � ������ �������������� ��� ���������, �� ����������� � ������.

������� �������������� ������ ����� ������ ����� �����:

  • �������������� ������������ � ������� setuid, seteuid, setgid, setegid, setgroups, setreuid, setregidsetlogin

  • ������������� ����������� �� ������������� �������� ��� ������ setrlimit

  • �������������� ��������� sysctl-���������� (kern.hostname)

  • chroot()

  • ������������� ��������� ����� �� vnode: chflags, fchflags

  • ������������� ����� �������� vnode, ��� ����� ������� � �����, �������� ��� ���������,
    ������, ������, ����� ������� � �����������.

  • ������������ �������� � ������������������ ����� � ������� ������ �������� (����� �
    �������� < 1024)

Jail �������� ����� �������� ������������ ��� �������
���������� � ���������� ���������, �� ���� � ��������� ����������. �� ������� ������ �
������� suser_xxx �� ������������� ��������� IPC, ��� ���
����� ����������, ��� MySQL, �� ����� �������� � ������. ����� �������������� ����� �����
����� ���� ������ ������, �� ��� ������� ����������, ��� ������ «�����».


3.5.2 ����������� ���������
POSIX.1e

Posix �������� ������� ��������, ������� ��������� ����� �������, ������ ����������
��������, ����� ������������� ����������, ����� ���������� � ������� ����������
��������.

���� �������� ��������� � ������ � ��������� � ������ �������� ������� TrustedBSD. ��������� ���������
���������������� ��� ���� ��������� �� FreeBSD-current (cap_set_proc(3)).


3.6 �������

���������� ������� �� ������ ��������, ��� ����� ������������ ���������. ����
���������� (�� ���� �� ����������): ���� ������������, �������, ���������� �����,
�������, IPC, ������������ � ���� ������, ������� ������� �������� �������, �����������
������, ����� �������� ������ � ������.

������� �� �������, ��� ������� ������������� ��� ����� ������������� �����, �������
����� ���� ������������. ������ ����� ���� ���������� ������ ������������ ����������
����������, ��������� ������ �������� ��������� ��������� ��������� �����, ������� ��
�������� �����������. �������� �������� ������ ���� �������� ������ ��������� ������,
�������� CGI-�������� �� ���-������. ��� ���� ������ ��� ����� ������� ������ ��������
����� («../», «/»), ������������� ������� � ������������ �������� ��������.

� perl ������� ����� ����� �������� ����, ��� «�����������» (taint) �����, �������
����� ������������ ��� ���������� �������� ������������ ������, ����������� ���
���������, �� ���������� ��������. ���� ����� ��������� ��������� ��������� ������,
���������� ���������, ���������� �����������, ���������� ��������� ��������� �������
(readdir(), readlink(), getpwxxx() � ���� �������� ����.


3.7 ����������� ���������

����������� ��������� — ��� ���������� ���������, ��������� �����������������
������������ �� ������������� ������������������ �������. ������� �������, �����������
����������� �����������, ��� ��������� ������� ������ ��������� ����� ������.

��������� �� ������ ���������������� ������ ������������� ����� ������� ��������
�������, �������� ������� � �������� ������. ������� �� ����� ������� ��������
������������ ���������, ��� ��� �� ��������� � ��� ����� ��������� ������ ��������.
�������� ������� �������� access(2) � ����������� �������
open(2) ��������� �� ��������. ������������ �����
����������� ����� � ���������� ����� ����� ��������. ������ ����� �����������������
���������� ������ ��������� seteuid(), � ����� �����
������� open(). � ��� �� ������� ���������� ������ ������
������������� ���� ����� ���� ������� (umask) ����� ������� ������� open() �� ��������� ������������� ������� chmod().


Chapter 4 * Localization — I18N


Chapter 5 ������������ � ���������� � ���������
����

����� ����������� Poul-Henning Kamp <phk@FreeBSD.org>.

� ���� ����� ����������� ��������� ������������ � ����������, ������� ������
����������� � ������ �������� ������� FreeBSD.


5.1 MAINTAINER � make-������

���� 1996.

���� ��������� ����� ������������ FreeBSD �������������� ��������� ��������� ���
������� �����, ��� ����� �������� �� ���� ����, ������� �������

MAINTAINER= email-addresses

� ����

Makefile

, ��������������� ���� ����� ���������
����.

����� ����� � ���������:

�������������� ������� ����� � �������� �� ����. ��� ��������, ��� �� �����
��������������� �� ����������� ������ � ��������� ��������� � ���������, �������
��������� � ���� ����� ����, � � ������ ������������ �����������, ������� �� �������
����������, �������������� �������� �� ������������ ����� ������.

��������� � ���������, ��� ������� �������� ��������������, ������ ��� ��� �����
�������, ������ ���� ������� ��� �� ������������. ������ ���� �������������� �� ��������
� ������� ���������� �������� ������� ������� �� ��������� �������� �� ����������� �����,
����������� ������ ��������� ��� ������� ���������������. ������ �������������, ����� ��
���������� �������� ��������� �� ������������ ����-���� ���, ���� ��� ������
��������.

������� ��, ������ ��������� �������� ��� ������ ��� ���������������, ���� ��� ��
�������� ��������� ��� ������. � ������ �������, ������������� ��� ������ ���� ����������
���������, ��� ����� ���� � ������ �����.


5.2
����������� ����������� ��������� ��������������title>

����� ������������ Poul-Henning Kamp <phk@FreeBSD.org>
David O’Brien <obrien@FreeBSD.org>.

���� 1996.

��������� ����� ������������ FreeBSD ������� �� ������������ �����������, �������
�������������� ��� ������� FreeBSD. �� ������������ �������� �� �������� �����
����������� ����������� ������������������ (contributed), ��� ������� ������.
��������� ����� ����� ������� ������� perl, gcc � patch.

�� ��������� ��������� ��� ��� ������ � ����� ����������� ������������ ��������������
��������� ������, � ��� ��� ����� ���� ����������� � ����������. ��������� �����������
������ ��� � �� �������.

�� ���� ������� ����� ��������� ������� ��� ������ � ������� «�����������» ���� ��
���� �������, ������� ���������� ��������� � ������� ��� �������������� ������ ����
������������ �����������. ����� ����, ������������ ������������� � �������� �������
��������� ������������ ����������� ����������� ������� ������ �� ���� �����, ��� ��� ��
����� ������������ ������������ ����� ������ �������, ������� ����������� �������
��������� diff-������ ������������ «�����������» ������ �������� ������� ��� ������
(���� �� ������� ������� � cvs). ��� ������ ������ ����� ������� ����� � �������������
��� ������������� ������ ��������� ����������� ������������� ������ ������������
�����������.

� ����� ������, ������, ��� �������� ���, ��� ������ �������� ������. ����
������������� ���� ������ � ���������� ������ �� �������� ��� ������, � ������� ��������
�������, ����� ���� ������� � ���������� ������ � �������� �������� ������� �������������
� ��� ����� ��������� ������ �������������. ����������� ������������� ������ � �������
����� �������� �������� �������� ��� �������� �������.

Note: ��-�� �������� ����������� � ������� ������� ������ RCS � �������������
����� ���������� � CVS, ������, ����������� �/��� ������������� ��������� ������ �� ������������� � ������, �������
��� ��� ������������� � ����� ����������. ��� �������� � «����������� ���������������
������» ��� ����������� � ��������� «�������������» � ���������� ��� ������ � ��������
1.1.x.x. ���� ������ ���������, ��������� ���������� � ���� ������, ����� ���������
������ �������.

� �������� ������� ����, ��� �������� ��� ������, ����� ������������ ������������ ����
���������������� TCL:

������� src/contrib/tcl �������� �������� ������ ������ �
��� ����, � ������� ��� ���������������� ��� �����������. �����, ������� ��������� ��
��������� �� FreeBSD, ����� ���� �������. � ������ Tcl ����������� mac, win � compat ���� ������� ����� ��������� ��������������

������� src/lib/libtcl �������� ������ ���� Makefile «� ����� bmake», ������� ���������� ����������� �������
bsd.lib.mk make-����� ��� ���������� ���������� � ���������
������������.

� �������� src/usr.bin/tclsh ����������� make-����� � �����
bmake, ������� �������� �� ���������� � ��������� ��������� tclsh � ��������� � ��� ���������� ������� ��� ������ �����������
������ �� bsd.prog.mk.

������� src/tools/tools/tcl_bmake �������� ���������
shell-��������, ������� ����� ������ ��� ���������� ������������ ����������� tcl. ��� ��
�������� ������ ����������� � ��������������� ������������ �����������.

����� ����� ��, ��� ������� src/contrib/tcl ���������� �
������������ � ���������: ��������������, ��� �� �������� �������� ������ � ��� ����, �
������� ��� ���������������� (� ��������������� ����� ���������� CVS � ��� ����������
�������� ���� RCS) � ����������� ����� ����������� ���������, ����������� ��� FreeBSD.
������� ‘easy-import’ �� ������ freefall ������� � ��������������, �� ���� ���� ��������
�� ������ ���������� ���� ��������, �� ����������� �������� ������ � �� ���������� �����
� ������� �� ��, ��� «��� ���������». CVS �� ������� ������ �������������� � ���
���������� ����������� ������� ������ ��������� ������������ ������.

��-�� ����� ���������� ����������� ������� ����� ����������� � CVS ���������, �����
«�����������» ����� �� ������������ ���� ������� ��������� � ���������������� ��������
�������, � ����� ��������� ����� ������������ � ����� ����������. ����������� �����
������� �� ������ ����������� � ������, ����������� �� ��������� FreeBSD, � �����
«�����������», ��� ��� ��� �������� � ���������������� ������ ������������� � ��������
�������������� ������� ������, ��� ��� ��������� ���������.

��� ��� ������ ������ �������� �����, ������� �������� ��� ����������� ������������� �
�������, ��������� �� FreeBSD ������������� � �����������, �� ����������� ������� �����
��������������� ������, �� �������������� �������� ��� FreeBSD � ����� ����������
����������� ��������� ������������. �����, ���������� ��������� � ����������� ������ �
���������� � ������, ���������� ��������� ������, ��������� �� ������.

���� ��� ������� ������, �� ����� Makefile � ����� bmake ����� ���� ������������� �� ��������������� ������
������������� ��������� ��������, ���-��, ��� �������� ��� ����� ����������� �� �����
������. ���� ��� ����� �������, �� ����������� ��������� ��� ������� (���� ����������) �
������� src/tools ������ � ����� ������, ����� ��� ����
�������� ������� �������������� �����.

� ������� src/contrib/tcl ������ ���� �������� ���� FREEBSD-upgrade, � ������� ����� ����������� ����� ����:

  • ����� ����� ���� ���������

  • ��� ��� ���� ������������ ����������� �/��� �� ����� �������� ����������� ����� ��
    ���������.

  • ���� �������� ����� ��� ������������� ������

  • ��������, ����� ��������� ���������, ����������� ��� FreeBSD.

������, ����������, �� ������������ FREEBSD-upgrade ������ �
��������� �������� ����� ������������ �����������. ������ ����� �� ������ ���������
������� cvs add FREEBSD-upgrade ; cvs ci ����� ���������������
��������������. ���� ������ ������ �������� �� �������� src/contrib/cpio:

This directory contains virgin sources of the original distribution files
on a "vendor" branch.  Do not, under any circumstances, attempt to upgrade
the files in this directory via patches and a cvs commit.  New versions or
official-patch versions must be imported.  Please remember to import with
"-ko" to prevent CVS from corrupting any vendor RCS Ids.

For the import of GNU cpio 2.4.2, the following files were removed:

    INSTALL     cpio.info   mkdir.c
    Makefile.in cpio.texi   mkinstalldirs

To upgrade to a newer version of cpio, when it is available:
    1. Unpack the new version into an empty directory.
       [Do not make ANY changes to the files.]

    2. Remove the files listed above and any others that don't apply to
       FreeBSD.

    3. Use the command:
        cvs import -ko -m 'Virgin import of GNU cpio v<version>' \
            src/contrib/cpio GNU cpio_<version>

       For example, to do the import of version 2.4.2, I typed:
        cvs import -ko -m 'Virgin import of GNU v2.4.2' \
            src/contrib/cpio GNU cpio_2_4_2

    4. Follow the instructions printed out in step 3 to resolve any
       conflicts between local FreeBSD changes and the newer version.

Do not, under any circumstances, deviate from this procedure.

To make local changes to cpio, simply patch and commit to the main
branch (aka HEAD).  Never make local changes on the GNU branch.

All local changes should be submitted to "cpio@gnu.ai.mit.edu" for
inclusion in the next vendor release.

obrien@FreeBSD.org - 30 March 1997
   

5.3
������������� �����

������ ����� ���� ���������� �������� ��������� ������������� ��� ��� ���� � ������
�������� ������� FreeBSD. ��������, ���� ���������� ������� �������� � ���� ����������
���������� ��������� ���� ����� ���, ��� ���������� ����������, � �� �� ����� ��������
������� ����� ����, �� ���������, ��� �������� ���� �������� �������������. ��� ���������
������������� ������ � ������ �������� ������� FreeBSD ������� ��������� ����������.

  1. ����� ����, ���������������� ��� ����������� ���������(�) CPU, �� � ����� ���������
    ����, �������� �������������.

  2. ����� ���� � ���������, �������������� �����, ��� BSD ��� GNU, ��������
    �������������.

  3. ����, ���������� ����������� �������� ������, ������������ ���������� ������������, ��
    �������� ��������������, ���� ������ � ���� �� ��������� ������� (1) ��� (2). �� ������
    ���� �������� � ����������� � ����������� ������� ASCII (������������� ��������� �������
    file2c ��� uuencode).

  4. ����� ������������� ���� ������� ������ �������� �� ������� �������� �������
    ������������� �� ����, ��� �� ����� �������� � ��������� CVS.

  5. ������������� ����� ���������� � ������� src/contrib ��� src/sys/contrib.

  6. ����� ������ ������ ������ ��������� ������. ��� ������������� ��������� ��, ����
    ������ ��� ����������� ������������� � �����, �� ���������� �������������.

  7. ��������� ����� ��������� arch/filename.o.uu>.

  8. ����� ����;

    1. ������ ������ ����������� � conf/files.* (��� ���������
      ����������).

    2. ������ ������ �������������� � LINT, �� �������� �������
      ������������� ������ � ������ ���������� ������, ������ �� ��� ���� �����������������
      ��� ���. �������, ����� �������� ������� ������������� ����� �������� ���� �������.

    3. ������ � ��������� � ������ ������ �������� ������� ��������
      �������
      .

  9. ����� ������ ������������:

    1. �������� �������
      ������������� ������, ������ �� ��� ����� ������ ���������� ������� make world.

    2. ����� �������
      ������, ������ �� ��� � �����.


5.4 ������������
����������

����� ������������ Satoshi Asami <asami@FreeBSD.org>,
Peter Wemm <peter@FreeBSD.org>, � David O’Brien <obrien@FreeBSD.org>
9 ������� 1996.

���� �� ���������� ��������� ������������ ��������� � ����� ��� ������ �����
������������ �����������, ������� ���� ������������ �� ��������, �� ������ ������ ������
����������� �� ������������� ��������. ��� �������, ������������ ������ �� ����� ������
������ � ������� ������ ������������ �����������.

��� ���������� ������������ ���������� ������������ ��� ��������:

  • �������� � 1.0

  • ���� ���� ���������, ������� ����� �������� �������������, ����������� ������� �����
    ������ (��������, ��� ������� ELF ��� ����������)

  • ���� ���� ���������, �� ����������� �������������, ����������� ������� �����
    ������

� �������, ���������� ������� � ����������� ������ �������� � ���������� ��������
������ ������, � �������� �������, ��������� ���������� ������ ������� � ���� ��������
��������� �������� � ��������� �������� ������ ������.

�������� ����� ��������� ������ � ����� �������.������� (x.y). ��� ������������ ���������
������� a.out �� ����� ��������� �������� � �������� ������ � ����� x.y.z. ����� ����� ������ ����� y
(�� ���� ������ �����) ��������� ������������ ��� ��������� ������� ������ ������������
��������� ��� ����������� ����, � ����� ����������� ������������ ����������. ���� ����
��� ������������ ����������, ������������ ������ «�����»-������� ������, �� ld.so ����� ������������ ���������� � ���������� �������. �������
�������: ���� �� ���������� � libfoo.so.3.3.3, �� �����������
������� � ���������� ������ 3.3 � ����� ��������� ���������� �
����� �����������, ������������ � libfoo.so.3.(���, ��� >= 3).(���������� ��
����������)
.

Note: ld.so ������ ����� ������������ ����������
«�������» ������. ����� �������: �� ����� ������������ ������������ libc.so.2.2, � �� libc.so.2.0, ���� ����
��������� ���������� ���� ������������ � libc.so.2.0.

�������� ��� ������������ ����������� ELF ������ �� �������� � �������� ��������.
������ ��� �� ����� ��������� ������� � ������� ����� ������, � ���� ����� Makefile «������� ��� ��� �����» � ����������� �� ����
�������.

��� ��������� �� � ������� ������, ������� ���� ���������� �� ��������� ������ ������
������������ ���������� ������ ���� ��� ����� ��������. ����� ����, ���� ��������������
�� ��������� �������� ������ ������������ ���������� ������ ���� ��� ����� ��������
�������� �� (�������� c 3.0 � 4.0). ����� �� ������� ��������� � ��������� ����������,
������� ������� ���������� ������ ������, ���������� ������� �������� ��������� � �����
Makefile. ��������� �������� �� ��, ��� ������ ����� ���������
� ������� ������ �������� � ���������� ������ ������ ������������ ���������� � ����� Makefile, � ��� ������ ����������� ���������� ����� �� ��
��������.

II. �������������� ����� ����������

Table of Contents
6 * Signals
7 * Sockets
8 * IPv6 Internals

Chapter 6 * Signals

Signals, pipes, semaphores, message queues, shared memory, ports, sockets, doors


Chapter 7 * Sockets


Chapter 8 * IPv6 Internals

III. ����


Chapter 9 * DMA


Chapter 10 ������� ����

����� ������������ Paul Richards <paul@FreeBSD.org>
Jörg Wunsch <joerg@FreeBSD.org>


10.1 ������� ���������
������� ���� ��� ������ gdb

��� ��������� �������� �� ������ � �������� ���� � ���������� ������� ������. ���
�������, ��� ����� ����� ������ ���� �� ��������� ��������, ������������� � ����� /etc/fstab. ����� ������� ������ �� ����������, �� ����������
������������ ��������, ��������, �����, � ������ ������ �� ��������������.

Note: ����������� ������� dumpon(8) ��� ��������
���� �����, ��� ����� ��������� ��������� �����. ����� ��������� �� ������� swapon(8) �������
�������� ������ ���� ������� ��������� dumpon. ������ ���
����������� �������� ���������� dumpdev � ����� rc.conf(5). ����
������ ��� ����������, �� ����� ���� ��� ������ ��������������������� ������������ �����
������������� �������� ��������� savecore(8). ���
�������� ��������� ���� ���� � �������, �������� � ���������� dumpdir ����� rc.conf. �� ���������
��������� ��� ��������� ������ �������� /var/crash.

���� �� ������ ������ ���������� ��� ������ ������ ������ ���� ����� �������� dump � ������ config �����������������
����� ������ ����. ����� ������ ������������ �� ������������� � �� ������ ��������������,
������ ���� �� ������ �������� ��������� ������ ������ ����, ������� �������� ���������
���� ������ ��� ��������.

Note: ����� ������ gdb �������� �������� gdb, ���������� � «������ ������� ����». ������� � ���� �����
����������� �������� gdb � ���������� -k. � ������ ������� ���� gdb �������� ��ϣ
����������� �� (kgdb).

Tip: ���� �� ����������� FreeBSD ������ 3 ��� ����� ������, �� ������ ���������
�������� ����������� ���� �������� strip, � �� ������������� ������� ���������� ����:

# cp kernel kernel.debug
# strip -g kernel

���� ��� �� ��� �� � ���������, �� �����������. (�� FreeBSD 4 � ����� ������� �������
���� ��� ����������� ������������� � ����� �������� ���������� ���� make.) ����� ���� �������, ������������� ��� ��� ������ ������ ����,
�� ������ ���������� ��� ������� �������, ������ make
install.

��������, ��� � ������ ������� FreeBSD (�� 3.1, �� ������� ���� �����), ������������
���� � ������� a.out, ������� �� ������� �������� ������ ������������� ��������� �
������. � ������� �������� �������� � �� ��������� ���������� ���� ��� �������� �����.
��������� ������ FreeBSD ���������� ���� � ������� ELF, ��� ��� �� ��������
���������.

���� �� ���������� ����� ����, ������, ������� ��� ������ ���� � �����������
����������, �� ��� ����� ��������� � �������� � ������ �����, ����� ����� ��������� �
����������� ����������������, ���������� ��� ������ � �������������������� ������ ���
������ ����� -s, ������������ ��� ��������, � ����� ���������
����� ����:

# fsck -p
# mount -a -t ufs      # so your filesystem for /var/crash is writable
# savecore -N /kernel.panicked /var/crash
# exit          # ...to multi-user
   

��� ������������������ ��������� ��������� savecore(8) ��
������������� ������� ���� ��� ���������� ������������� ����. ����� ��� �����
������������ ����, ���������� � ������ ������ �, ������ �����, ������ �� �������, ������
��� ��������� ����� ������ � ������� ���� ����� ����������.

� ������, ����� ������ ���������� �����, ��������� � ������� /sys/compile/WHATEVER � ��������� ������� gdb
-k. �� ��������� gdb �������� ���
���:

symbol-file kernel.debug
exec-file /var/crash/kernel.0
core-file /var/crash/vmcore.0

� ����� — �� ������ ���������� ��������� ����, ��������� �������� ������ ���� �����
�����, ��� �� ��� ������� � ����� ������ ����������.

��� ������ ������ ������ ������ gdb, �������������� ���
���������. ������� ������ ���� ��������� ��� ��������� ������������� � ��� ��������
������ ���� �������������. ��� ��������� �������� ������������ ������, �������
������������ �� ����� ������ ��� ��������� ������� pcvt.

 1:Script started on Fri Dec 30 23:15:22 1994
 2:# cd /sys/compile/URIAH
 3:# gdb -k kernel /var/crash/vmcore.1
 4:Reading symbol data from /usr/src/sys/compile/URIAH/kernel
...done.
 5:IdlePTD 1f3000
 6:panic: because you said to!
 7:current pcb at 1e3f70
 8:Reading in symbols for ../../i386/i386/machdep.c...done.
 9:(kgdb) where
10:#0  boot (arghowto=256) (../../i386/i386/machdep.c line 767)
11:#1  0xf0115159 in panic ()
12:#2  0xf01955bd in diediedie () (../../i386/i386/machdep.c line 698)
13:#3  0xf010185e in db_fncall ()
14:#4  0xf0101586 in db_command (-266509132, -266509516, -267381073)
15:#5  0xf0101711 in db_command_loop ()
16:#6  0xf01040a0 in db_trap ()
17:#7  0xf0192976 in kdb_trap (12, 0, -272630436, -266743723)
18:#8  0xf019d2eb in trap_fatal (...)
19:#9  0xf019ce60 in trap_pfault (...)
20:#10 0xf019cb2f in trap (...)
21:#11 0xf01932a1 in exception:calltrap ()
22:#12 0xf0191503 in cnopen (...)
23:#13 0xf0132c34 in spec_open ()
24:#14 0xf012d014 in vn_open ()
25:#15 0xf012a183 in open ()
26:#16 0xf019d4eb in syscall (...)
27:(kgdb) up 10
28:Reading in symbols for ../../i386/i386/trap.c...done.
29:#10 0xf019cb2f in trap (frame={tf_es = -260440048, tf_ds = 16, tf_\
30:edi = 3072, tf_esi = -266445372, tf_ebp = -272630356, tf_isp = -27\
31:2630396, tf_ebx = -266427884, tf_edx = 12, tf_ecx = -266427884, tf\
32:_eax = 64772224, tf_trapno = 12, tf_err = -272695296, tf_eip = -26\
33:6672343, tf_cs = -266469368, tf_eflags = 66066, tf_esp = 3072, tf_\
34:ss = -266427884}) (../../i386/i386/trap.c line 283)
35:283                 (void) trap_pfault(&frame, FALSE);
36:(kgdb) frame frame->tf_ebp frame->tf_eip
37:Reading in symbols for ../../i386/isa/pcvt/pcvt_drv.c...done.
38:#0  0xf01ae729 in pcopen (dev=3072, flag=3, mode=8192, p=(struct p\
39:roc *) 0xf07c0c00) (../../i386/isa/pcvt/pcvt_drv.c line 403)
40:403         return ((*linesw[tp->t_line].l_open)(dev, tp));
41:(kgdb) list
42:398
43:399         tp->t_state |= TS_CARR_ON;
44:400         tp->t_cflag |= CLOCAL;  /* cannot be a modem (:-) */
45:401
46:402     #if PCVT_NETBSD || (PCVT_FREEBSD >= 200)
47:403         return ((*linesw[tp->t_line].l_open)(dev, tp));
48:404     #else
49:405         return ((*linesw[tp->t_line].l_open)(dev, tp, flag));
50:406     #endif /* PCVT_NETBSD || (PCVT_FREEBSD >= 200) */
51:407     }
52:(kgdb) print tp
53:Reading in symbols for ../../i386/i386/cons.c...done.
54:$1 = (struct tty *) 0x1bae
55:(kgdb) print tp->t_line
56:$2 = 1767990816
57:(kgdb) up
58:#1  0xf0191503 in cnopen (dev=0x00000000, flag=3, mode=8192, p=(st\
59:ruct proc *) 0xf07c0c00) (../../i386/i386/cons.c line 126)
60:   return ((*cdevsw[major(dev)].d_open)(dev, flag, mode, p));
61:(kgdb) up
62:#2  0xf0132c34 in spec_open ()
63:(kgdb) up
64:#3  0xf012d014 in vn_open ()
65:(kgdb) up
66:#4  0xf012a183 in open ()
67:(kgdb) up
68:#5  0xf019d4eb in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi =\
69: 2158592, tf_esi = 0, tf_ebp = -272638436, tf_isp = -272629788, tf\
70:_ebx = 7086, tf_edx = 1, tf_ecx = 0, tf_eax = 5, tf_trapno = 582, \
71:tf_err = 582, tf_eip = 75749, tf_cs = 31, tf_eflags = 582, tf_esp \
72:= -272638456, tf_ss = 39}) (../../i386/i386/trap.c line 673)
73:673         error = (*callp->sy_call)(p, args, rval);
74:(kgdb) up
75:Initial frame selected; you cannot go up.
76:(kgdb) quit
77:# exit
78:exit
79:
80:Script done on Fri Dec 30 23:18:04 1994

����������� � ���������������� �������:

������ 6:

��� ����, ������ ��� ������ DDB (������ ����), ������� ����������� � ����������
�������� ����� ������ ��� «because you said to!» � ����������� ����� �������; ������
����������� �������� �������� � DDB ���� ��������� ��������� ��� ������������� ������
�������� ������.

������ 20:

��� ��������������� ������� trap() � �����������
�����.

������ 36:

�������������� ������������� ����� ������� �����; ������ ��� �� �����. ��������������,
��� ������� ����� ��������� �� ���������� ������������, ���� � ������ ����������
��������. ����� �� ������ ��������� ���� 403, ����� �������, ��� ������ ��������, ���
���� ������� ������ �� ��������� «tp», ���� ��� ����� �� ������� �������.

������ 52:

������, ��� ������� ���������, �� �� �������� ���������� �������.

������ 56:

������, ��������, ��� �� ��������� �� �����, ��� ��� �� ����� ���� ������! (��� ���,
��� �� ������ � ���� ������ ����: tp->t_line ������ ���
�������� ������ ������ ����������� ����������, � ��� ������ ���� ���������� ���������
����� �����.)


10.2 ������� ����������
����� � ������� DDD

�������� ����� � ������������ ���������� ����� ���� ��� ������ ������ ������������
���������, ��� ddd (��� ����������� ���������� ���� devel/ddd, ����� ������������ �������� ddd). �������� ���� -k � ��������� ������
ddd, ������� �� ������ ����������� ��� ��� ������. ��������;

# ddd -k /var/crash/kernel.0 /var/crash/vmcore.0

����� ����� � ��� ������ ���������� ������������ ���������� ����� ��� ������
������������ ���������� ddd.


10.3
���������� ������ �����

��� ������, ���� ���� �������� ��������� ������, ���� ����� �� �� ������ � �������
�������� config -g ��� �� �������������? ����� �� �ӣ �ݣ
��������. �� ���������!

�������, ��� ����� �������� �������� ��������� ������. �������� ����, ��� �� ������
��� ����� �������.

��������� � ������� ������������ ���� (/usr/src/sys/arch/conf) � �������������� ��� ���������������� ����.
���������������� (��� ��������, ���� ��� �� ����������) ����� ������:

makeoptions    DEBUG=-g                #Build kernel with gdb(1) debug symbols

����������� ����. ��-�� ��������� ����� ������� � Makefile ����� ����������� �
��������� ������ ��������� �����, ��������, trap.o. �
���������� �������, ���������� ����� -g �� ������� ��� � ��� �
������������ ����, ��� ��� � ����� ������ �� �������� ����� ���� � ��� �� �����, ��� �
������� ����, �� ����������� ������� ���������� ����������. �� ������� ����, �� ������
�������� ������ � ����� ������� ���� �������� size(1). ���� ��� ��
���������, �� ��� �������� ���������� �� ����� �����.

���������� ���� ���, ��� ��� ������� ����. ���������� ���������� ����� �� ������� �
��������� ������, ��� ��� ����� ������ � ����������� ����� ������� ����, ����� ���������
������� ��������� ��� ������� ����� � ������ ����������. ���� ��� ����� ������ ����������
����������, ������� ��������������� ��������� �����, ����� ���������������� ���� �
��������� ����� ������ gdb -k, ���� ��
�������� ���������� ��������� ����������.

�� �������������, ��� �ӣ ��� ����� ��������, ������ � ����������� ������� �ӣ
�������� ���������.


10.4
������� ���� � ������ ��������� ������� � ������� DDB

���� gdb -k �������� ���������� ��
��������� ������� � ��������������� ���������������� �����������, ���� ��������� �����,
������� �� ������� �� ������. ������ ������� �� ��� �������� ����� �������� � ���������
���������� ���� ����.

���� ��� ����� ��������� �������������� ������� ������ ����, �� �� ���� ������ �������
�������� ��������� �������, ������� ���������� DDB. �� ��������� ������������� �����
��������, ��������� ������� ���� �� �����, ����������� � �������� ���������� ���� �
������. ������ �� �� ����� ������������ �������� ������ ���� � ����� ������ ������ �
���������� � ����������� ��������, � �� �� ���� ���������� ����������, ��� � gdb.

����� ����������������� ���� ���� ��� ��������� DDB, �������� ������� � ����������

options DDB

� ��� ���������������� ����, � ����������� ����. (���������� � ����������� �� FreeBSD ��� ���������
������������ � ������������ ���� FreeBSD).

Note: ���� � ��� ���������� ������ ����������� ������, �� ���������� ����������
����� ��������� �� �����������. �������� ����� ��������; ����� ����� ��������� �������
��� DDB �������������.

����� ����, ��� ���� � DDB ��������, ���� ��������� �������� ����� � DDB. ������, �
����� �������, ������ ����������� � ������ ����� �������� -d
����� � ����������� ����������. ���� ����� �������� � ������ ������� � ������ � DDB ��
���������� ��������� ������������� ����� �� �� �� ���� ���������. ������� �� ������
��������� ������� ���� ������� �������������/������������� ���������.

������ �������� �������� ������� � ����� ��������� ����� ����� �������� �������. ����
��� ������� ������� ����� ��������. ���� �� ������ ������� � �������� �� ���������
������, ������ �������� �������:

# sysctl debug.enter_debugger=ddb

����, ���� �� ��������� �� ��������� ��������, ������ ��������������� ������������
����������� ������. �� ��������� ��� �������� � �������� ������������ ���������� Ctrl+Alt+ESC. ��� ��������
syscons ��� ������������������ ����� ���� ��������, � � ��������� ����������������
���������� ��� �������, ��� ��� ����������� �������� ���������� ����������. ���
���������������� �������� ������� ��������, ����������� ������������ ������������������
BREAK �� ������ ������� ��� ����� � DDB (options
BREAK_TO_DEBUGGER
� ���������������� ����� ����). �� ��������� ����� �� ��������,
��� ��� ���������� ��������� ���������������� ���������, ������� �������� ����������
������������������ BREAK, � �������, ��� ���������� ������.

������ ������ ����������� �� ����� � DDB ��� ������������� ����� ��������� ��������,
���� ���� ��� ����������. �� ���� ������� �� ����� ���� ��������������� ���� � DDB ���
������, ������� �������� ��� ���������.

������� DDB �������� ��������� ��������� ������� gdb. ������
����� ���, ��������, ����� ������ ����� ��������:

b function-name
b address
   

�������� �� ��������� �������������� � ����������������� ����, �� ����� �������� �� ��
���� ��������; ����������������� �����, ������������ � ���� a-f, ������ ������������ ��������� 0x
(��� ����������� ��� ������ �����). ��������� ������� ���������, ��������: function-name + 0x103.

����� ���������� ������ ����������� ����, ������ ��������:

c

����� �������� ����������� �����, �������:

trace

Note: ��������, ��� ��� ����� � DDB �� ����������� ����������, ���� � ������
������ ����������� ����������, ��� ��� ����������� ����� ����� �� ���� ��� �����
����������.

���� �� ������ ������ ����� ��������, �������

del
del address-expression
   

� ������ �������� ������� ����� ��������� ����� �� �� ���������� ����� ��������, �
������� ����� �������� ����� �������. �� ������ ����� ����� ������� ����� ����� ��������,
������ ��� ����� ����� ������� �� ������ �����; ��� ����� �������� ��:

show b

����� ��������� ���� ��� ����, ����������:

s

��� ���� ����� �������������� ��������� ���������� �������, ������ �� ������
������������ �� � ������� DDB, ���� �� ����� ���������� ������������ �������������
��������:

n

Note: ��� ���������� �� ������� next ��������� gdb; ��� ������ �� ������� gdb finish.

����� �������� �������� � ������, �����������, (� �������):

x/wx 0xf0133fe0,40
x/hd db_symtab_space
x/bc termbuf,10
x/s stringbuf
     

��� ������� � ������ ���� �����/���������/���� � ������ �
�����������������/����������/���������� ����. ����� ����� ������� �������� �������
��������. ����� ������� ��������� 0x10 ��������, ������ �������:

x ,10

�������� �� ������� �����������

x/ia foofunc,10

��� ������������������ � ������ ������ 0x10 ���������� ������� foofunc ������ � �� ������� ������������ ������ foofunc.

����� �������� �������� � ������, ����������� ������� write:

w/b termbuf 0xa 0xb 0
w/w 0xf0010030 0 0
   

����������� ������� (b/h/w) ��������� �� ������ ������������ ������, ������ ��������� �� ���
��������� �������� ������� ��� ������, � ���������� ����� ���������������� ��� ������ ���
������ � ��������� ������� ������.

���� ��� ����� ������ ������� ���������� ���������, �����������:

show reg

������������� �� ������ ������� ���������� ������ �������� �� �������, ������,

p $eax

� �������� ��� ��:

set $eax new-value

���� ��� ����� ������� ��������� ������� ���� �� DDB, ������ �������:

call func(arg1, arg2, ...)

����� �������� ������������ ��������.

��� ������ ��������� ���������� �� ���� ���������� ��������� � ����� ������� ps(1) ��������������
����� ��������:

ps

������ �� ������, ������ ���� �������� � �������� � ������ ��������� ������������.
���������, ��� � ����������� �� ������� ���������� ������, �� ��� ����� ���� �����
�������� ���, ��� ���������. ��������� ���� �� ��������� �������� ��� �������� �
������������ ����� �������:

panic

��� �������� � �������� ����� ���� � ������������, ��� ��� ����� �� ������
���������������� ���� �� ����� ������� ������ ��� ������ gdb.
��� �������, ��� ������� ������ ��������� �� ������ �������� continue.

call boot(0)

��� ����� ��������� ������� �������� ��� ����������� �������� ���������� �������,
sync() ��� ���� ������ � ���������� ������������. ����
���������� ����� � �������� ������� � ���� �� ����������, ��� ����� ���� ����� ����������
�������� �������� �������.

call cpu_reset()

��� ��������� �������� ��� ������ � ����������� �� �� �����, ��� ������� �������
������� ������.

���� ��� ����� ������� ���������� �� ��������, ������ ��������:

help

������ ������������ ����������� ���������� ����� �������� ����������� �� ddb(4) ��� ����������
� ������ �������. �������, ��� ������ ������ ���������� ����������� ��� ���������
���������� ����.


10.5
������� ���� � ������ ��������� ������� ��� ������ ���̣����� GDB

��� ����������� �������������� �� FreeBSD ������� � ������ 2.2, � ��� �� ����� ����
����� ������.

� GDB ��� ����� ������� ��������� ���������
�������
. ��� �������� ��� ������ ������ �������� ��������� ��
����������������� ������. � ������� �� ������ �������, ��������� ����, ��� ����� ���
��������� ������� ���� �����. ���� �� ��� �������� ������, ��������������� ������� ���
�������, ������� ��� �������� ������ � ����� ���� �� ����� ��������� � ���, � ������
�������� ������� �������, �� ������� �������� �� �� ����� ���� �� ���� (�� ��� ����������
����������).

�� ������ ��������� ����������� ���� ��� ������ ������� config
-g, �������� DDB � ������������ � ��������������� ���
������� �������. ��� ���� ������� �������� ���� ��-�� ���������� ����������. ����������
��� ���� �� ������� ������, ������� ���������� ���������� �������� strip -x � ��������� ��� ���� � �������������� ��������� ��������
-d. ���������� ���������������� ����� ������� ������, �������
������������� ����� «flags 080» �� ��������������� ���������� sio � ������
����������������� ������ ����������� �����. � ������ �� ���������� ������ ��������� �
������� ���������� �������� ���� � ��������� gdb:

% gdb -k kernel
GDB is free software and you are welcome to distribute copies of it
 under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.16 (i386-unknown-freebsd),
Copyright 1996 Free Software Foundation, Inc...
(kgdb)

������������������ ����� ��������� ������� (��������������, ��� ������������ ������
���������������� ����) ����� ��������:

(kgdb) target remote /dev/cuaa0
   

������ �� ������� ����� (���, ������� ������� � DDB ���� �� ������ ��������
����������� ���������) ��������:

Debugger("Boot flags requested debugger")
Stopped at Debugger+0x35: movb  $0, edata+0x51bc
db> gdb
   

DDB ������� ���������:

Next trap will enter GDB remote protocol mode

������ ���, ����� �� ������ �������� gdb, ����� �����
�������� ����� ��������� GDB � ��������� DDB. ����� ���������� ������� ���������
����������, ������ �������� s (step). ��� ����������� GDB
������� ���������� ��� ������� �����:

Remote debugging using /dev/cuaa0
Debugger (msg=0xf01b0383 "Boot flags requested debugger")
    at ../../i386/i386/db_interface.c:257
(kgdb)

�� ������ �������� � ���� ������ ����� �����, ��� � � ����� ������ ������ GDB, �������
������ ������ � �������� �������, ������ ��� � ������ gud-mode ������ ���� Emacs (���
���� ��� �������������� ����� ��������� ���� � ������ ���� Emacs) � ���� ��������.


10.6 ������� �����������
������� � ������� GDB

��� ������� ���������� �������� �������, ������� ��������� � ������, ��� ���
������������� GDB � ������ ���������� ������� � ������, ������������ ������������ ������,
��� ����� ������� GDB, ��� �������� ���������� � �������� � ���� �������.

������ ����� ��� ����� ��������� ������ (��� ������) � ���������� ����������
����������:

# cd /sys/modules/linux
# make clean; make COPTS=-g

���� �� ����������� GDB � ������ ���������� �������, �� ��� ����������� ����, ���� ���
�������� ������, ������ ��������� ������� kldstat �� �������
������:

# kldstat
Id Refs Address    Size     Name
 1    4 0xc0100000 1c1678   kernel
 2    1 0xc0a9e000 6000     linprocfs.ko
 3    1 0xc0ad7000 2000     warp_saver.ko
 4    1 0xc0adc000 11000    linux.ko

���� �� ����������� ��������� ����, ��� ����������� ����������� ������ linker_files ������� � linker_files->tqh_first � ��������� ���������� link.tqe_next �� ��� ���, ���� �� ������� ������ � ��� filename, ������� �� �����. ������� address ���� ������ �������� ������� �������� ������.

����� ��� ����� ���������� �������� ���������� �������� ������:

# objdump --section-headers /sys/modules/linux/linux.ko | grep text
  3 .rel.text     000016e0  000038e0  000038e0  000038e0  2**2
 10 .text         00007f34  000062d0  000062d0  000062d0  2**2

��, ��� �� �����, �������� ������� .text, � ������� ����
��� ������ 10. ��������� �������� ���� (����� ������ �� �ޣ��) �������� ���������
��������� ������ ������ �����. �������� ��� �������� � ������ ��������, ����� ��������
�����, �� ������� ��� ������ݣ� ��� ������. � ����� ������� �� ������� 0xc0adc000 +
0x62d0 = c0ae22d0. �������������� �������� add-symbol-file � GDB
��� �������� ��������� �� ������:

(kgdb) add-symbol-file /sys/modules/linux/linux.ko 0xc0ae22d0
add symbol table from file "/sys/modules/linux/linux.ko" at text_addr = 0xc0ae22d0?
(y or n) y
Reading symbols from /sys/modules/linux/linux.ko...done.
(kgdb)

������ �� ������ �������� ������ �� ���� �������� � ������.


10.7 �������
�������� �������

��� ��� ��� ������ DDB ��� ��������� ������� �������, �� � ������ ��������������
������ �������� ������� ��� ���������� ������� �������. �� ������ ��������� ��
������������� ���������������� ������� (���� � ������������� ������������ �������, ����
��� �������� ����� -h � ����������� Boot:) � ���������� ������� �������� � ������� �����������������
�����. DDB �������� � ����� ������������������� ��������� �������, � ��� ����� �
���������������� ��������.


Chapter 11 ���������� ����� ����������
������������ ����

����������� Jörg Wunsch <joerg@FreeBSD.org>

Note: ����� ���, ��� ������ ���� ������, �� ������ ������� �������� �������
����������� � «������������ ����».


11.1 ��� �� ����� �������� ����, � ����� ������?

������������� ���������� ���� � �������� ������� � ������� � «������������ ����» �
����������� FreeBSD. ��� �� ������� �������� «����������» � ���������� «� �����
�����». �������� ����� �������� ����������� ������� ���� �������������� ���������� ����
� ������ �����, ��� ����� ��� ���, ��� ��������� ��������� ������� make depend � �������� ���������� ���� ����� ������� config(8), �������
���������� ������������� �������� ���������������� ��������� � ���������������� ������ ��
�����, ������� ����������. �������� ������� �������� ���������� ��� ������ ����������� config(8), ��� ��� ���
���������� ������, ����� ����� ���� ������.

� ����� ������ �������� ���� �������� �� ����� ��� ����������� ������� ������������� C
��� �������� ���������� ����. ����� ������� ���������� ��������� ������������� �����
����� ���������, ��������������� ����� �������� ������� ���� (��� ����� .h ����) ������ ���� �������� � ������ �� ��������� ����������, ��
���� ����� ��������, ������������ �� ���������, ����� ���� �������������� �����������
������������. ��� ������ �������� �������� ���:

#ifndef THIS_OPTION
#define THIS_OPTION (��������� �������� �� ���������)
#endif /* THIS_OPTION */
   

���� �������� �������������, �������� ������ �������� ��� ��������� � �����
���������������� �����, �������� ������������� �������� �� ��������� � �������� ��� �����
���������. ����� ����, ����� �������� ����� ����������� � �������� ��� �� ����� ������
�������������, ��� ��� ��� ������ ���� ���������� ��������� ����� C � ���������
������������� �������� �� ���������.

����� �������� �������� ����������, ������� �� ��������� ������������� ��������, �
������ �������� ��� ��������� ��������� ����� ����, �������� ��� �

#ifdef THAT_OPTION

[����� ��� ���]

#endif
   

������� ���������� THAT_OPTION � ���������������� ����� (��
��������� ��� ��� ����) �������� � ��������� ���������������� ����.

��, ��� ������ � ������ C, ����� �������, ��� ��� ����� ��������� ��� «config
option», ��� ��� ���� �� ������� ���� ���� ������� #ifdef
������ ���� �� ������ ����� ������

options    notyet,notdef
   

� ����� ���������������� ������ � ����� ����������, ������ ���������� ���� ��
��������. :-)

����� �����, ������������� ���������� ���� ��� ���������� ������ ����� �������
������������ �� ������������� � ������ �������� ������� ����. � ������������� �����
���������� � ����� ����� �������
������������ �����, ����� ������ �������� ���������� � ��������� ���� .h � �������� ���������� ����, ������� �� ���������� ���������� opt_foo.h. ����� �������, ����� ����
��������� ������� ����������� � Makefile, � ������� make �����
����������, ��� ����� ����������������� ��� ��������� ������������� ���������.

��������� ��� ������������� ��������� � ������ ����� ����� ���� ������������ ���
��������� ��������� ��� ��� ����������������� ����������, ������� ����� �������� ����
�����: ��� ��� ������ ����� �������� ����� ������ #ifdef
��������� ���� ����, �� ��� ��� ������������ � �������� ������������ ����. � ����� ������
�������������, ������������ ��������� ����� �������, ����� ��������������� �� ������
������� ����� ��������� (� ����� ����, �� �������������� �������������� ������� ������
����). ��� ������ ������� ���� �������������� ����� ����� ������, ��������� config(8) �����
�������� �������������� � �� �������������� �����, ����������� � ���������������� �����,
������ ��� ����� �������� �� � ���� Makefile ����.


11.2 � ��� � ������ ��� �����
�������?

��-������, �������������� ���� sys/conf/options (��� sys/<arch>/conf/options.<arch>, �������� sys/i386/conf/options.i386), � �������� ���� opt_foo.h, � ������� ����� �����
��������� ���� ����� �����.

���� ������� ���-��, ��� ������� �� �������������� ����� �����, �������� ���.
��������, �����, ���������� ����� ��������� ���������� SCSI, ����� ���� �������� � opt_scsi.h. �� ��������� ������� ���������� ����� � ���������������
����� �����, ������, FOO, �������� � ����, ��� �� ��������
���������� � ��������������� ���� opt_foo.h. ��� ����� ����
�������������� � ������ ����� ������� ��������� ������� ����� �����.

���� ����� opt_foo.h ���
�������������� ����� ����� ��� ���, ���������� ����� ���. �������� ��� �������� �
���������������� ����� ������ � ����� options[.<arch>]. ������� config(8)
������������� ��������� ��������� � ������� ���� ���� ��� ��������� ����� �������.
����������� ����� ������ ��������� � ������������ �����..

���������� ������� �������� ���������� ����� � ����� ����� opt_foo.h �������� � ������������
������� �������� ���������� ������ ���� ��� ��������� ����� �� ����� � ����������������
�����.

�������, ����������, ����� ����� ���� ������� �� ����� �����. ���� ������ �� �� ������
��� ��������� ���� ����� � ��� ��� ����� �� �����������, �� �������

% find /usr/src/sys -type f | xargs fgrep NEW_OPTION
     

��� ������� �� �����. �������� ��� � �������������� ��� ��� �����, � ����� ��������

#include "opt_foo.h"

������ �� ���� ����� #include <xxx.h>. ��� ������������������ ����� �����, ��� ���
����� ����� �������������� �������� �� ��������� �� ������� ���������� ������, ���� ���
�������� �� ��������� ������ � �����

 #ifndef NEW_OPTION #define NEW_OPTION (���-��)
      #endif

� ������� ���������.

���������� �����, ������� �������������� ���-�� � ��������� ������������ ����� (��
���� �����, ����������� � �������� /usr/include/sys/),
����������� ������ ��������. opt_foo.h �� ����� ���� ������� � �� �����, ������ ��� ���
������� ��������� ����� ��������, �� ���� �� �� �������, �� � ������ ��� ��������� �����
���������� ������������������ �������� ��� ���� �����. ��, ����� ���������� ����� ����� �
������, �� ��� �� �� �����������.


Chapter 12 * UFS

UFS, FFS, Ext2FS, JFS, inodes, buffer cache, labeling, locking, metadata,
soft-updates, LFS, portalfs, procfs, vnodes, memory sharing, memory objects, TLBs,
caching


Chapter 13 * AFS

AFS, NFS, SANs etc


Chapter 14 * Syscons

Syscons, tty, PCVT, serial console, screen savers, etc.


Chapter 15 * ������ �������������

IV. ���������� ���������

Table of Contents
16 * x86 Assembly Language Programming
17 * Alpha

Chapter 16 * x86 Assembly Language Programming


Chapter 17 * Alpha

�������� ������ ������������, ��� �� ���������� � ��� ������������.

������ ������������� ���� ��� FreeBSD/alpha.

V. ����������

Table of Contents
Bibliography

Bibliography

[1] Dave A Patterson and John L
Hennessy
, 1998, 1-55860-428-6, Morgan Kaufmann Publishers, Inc., Computer
Organization and Design
: The Hardware / Software Interface, 1-2.

[2] W. Richard Stevens, 1993, 0-201-56317-7, Addison
Wesley Longman, Inc., Advanced Programming in the Unix Environment, 1-2.

[3] Marshall Kirk McKusick, Keith Bostic, Michael J Karels, and John S Quarterman, 1996, 0-201-54979-4, Addison-Wesley
Publishing Company, Inc., The Design and Implementation of the 4.4 BSD Operating
System
, 1-2.

[4] Aleph One, Phrack 49; «Smashing the Stack for
Fun and Profit»
.

[5] Chrispin Cowan, Calton
Pu,
and Dave Maier, StackGuard; Automatic Adaptive
Detection and Prevention of Buffer-Overflow Attacks
.

[6] Todd Miller and Theo de
Raadt
, strlcpy and strlcat — consistent, safe string copy and
concatenation.
.

Logo Море(!) аналитической информации!

2004 г

Руководство FreeBSD
(FreeBSD Handbook)

Проект Русской Документации FreeBSD

содержание

Предисловие

Целевая
аудитория

Люди, которые используют FreeBSD с недавнего времени, найдут, что первая часть этой
книги проводит читателя через процесс установки FreeBSD и кратко освещает идеи и
традиции, на которых базируется UNIX®. Работа с этой
частью требует несколько большего, чем просто желание исследовать — необходима
возможность принимать к сведению новые идеи.

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

Список рекомендуемой дополнительной литературы вы можете найти здесь: Прил. B.

Изменения по сравнению со второй редакцией

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

  • Гл. 11, Настройка и оптимизация, была расширена новой
    информацией о ACPI управлении питанием и ресурсами, системной утилите cron и
    дополнительных параметрах оптимизации ядра.

  • Гл. 14, Безопасность, была расширена новой информацией о
    виртуальных частных сетях (VPN), списках контроля доступа файловой системы (ACL), и
    сообщениях безопасности.

  • Гл. 15, Принудительный контроль доступа (MAC), новая глава этой
    редакции. Она описывает, что такое MAC и как этот механизм может быть использован для
    защиты системы FreeBSD.

  • Гл. 16, Устройства хранения, была расширена новой информацией
    о устройствах хранения USB, образах файловой системы, квотах файловой системы, файловых
    системах в файлах и в сети, зашифрованных дисковых разделах.

  • Гл. 17, Vinum, новая глава этой редакции. В ней описано
    как использовать Vinum, менеджер логических томов, который предоставляет независимые от
    устройств логические диски и программные уровни RAID-0, RAID-1 и RAID-5.

  • К Гл. 21, PPP и SLIP, был добавлен раздел о решении
    проблем.

  • Гл. 22, Электронная почта, была расширена новой информацией об
    использовании альтернативных транспортных агентов, SMTP аутентификации, UUCP, fetchmail,
    procmail, и другими разделами повышенной сложности.

  • Гл. 23, Сетевые серверы, появилась в этой редакции.
    Эта главы включает информацию о установке Apache HTTP Server, FTPd, и настройке Samba
    сервера для клиентов Microsoft Windows. Некоторые разделы были перемещены сюда из Гл. 24, Сложные вопросы работы в сети.

  • Гл. 24, Сложные вопросы работы в сети, была
    расширена новой информацией об использовании устройств Bluetooth в FreeBSD, настройке
    беспроводных сетей, и сетях Asynchronous Transfer Mode (ATM).

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

  • Множество эстетических улучшений были внесены в таблицы и иллюстрации этой книги.

Изменения во
второй редакции

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

  • Был добавлен полный указатель тем.

  • Все ASCII-иллюстрации были заменены на графические.

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

  • Содержимое было логически реорганизовано на три части: «В Начале», «Системное
    администрирование» и «Приложения».

  • Гл. 2 («Установка FreeBSD») был полностью переписан,
    добавлено большое количество снимков экрана, чтобы облегчить понимание текста для новых
    пользователей.

  • Гл. 3 («Основы UNIX») был
    расширен и содержит дополнительную информацию о процессах, даемонах и сигналах.

  • Гл. 4 («Установка приложений: порты и пакеты») был расширен
    и содержит дополнительную информации об управлении бинарными пакетами.

  • Гл. 5 («X Window System») был полностью переписан и обращает
    больше внимания на современные технологии для рабочего стола, такие, как KDE и GNOME на XFree86™ 4.X.

  • Гл. 12 («Процесс загрузки FreeBSD») был расширен.

  • Гл. 16 («Устройства хранения») был составлен из того, что
    раньше было двумя различными разделами «Диски» и «Резервное копирование». Нам
    кажется, что данные темы будут легче и исчерпывающе описаны как один раздел. Была
    добавлена секция о программном и аппаратном RAID.

  • Гл. 20 («Последовательные коммуникации») был
    полностью реорганизован и актуализирован для FreeBSD 4.X/5.X.

  • Гл. 21 («PPP и SLIP») был существенно обновлён.

  • Было добавлено множество новых секций в Гл. 24
    («Сложные вопросы работы в сети»).

  • Гл. 22 («Электронная почта») был расширен, теперь он
    включает больше информации о настройке sendmail.

  • Гл. 10 («Работа с приложениями, написанными для Linux®») был дополнен включением информации об установке Oracle® и SAP® R/3®.

  • Следующие новые темы были рассмотрены в этой, второй, редакции:

    • Настройка и оптимизация (Гл. 11).

    • Мультимедиа (Гл. 7)

Структура
этой книги

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

Гл. 1,
Введение

Знакомит пользователя с FreeBSD. Рассказывает об истории проекта FreeBSD, его задачах
и модели разработки.

Гл. 2,
Установка

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

Гл. 3, Основы
UNIX

Рассказывает об основных командах и функциональности операционной системы FreeBSD.
Если вы знакомы с Linux или другой UNIX-подобной операционной системой, возможно, вы можете
пропустить эту главу.

Гл. 4, Установка
приложений: порты и пакеты

Рассказывает о процессе установки программного обеспечения сторонних производителей с
использованием «Коллекции Портов FreeBSD» и стандартных бинарных пакетов.

Гл. 5, The X Window
System

Описывает X Window System вообще и использование XFree86 под управлением FreeBSD в частности. Также описывает
популярные окружения рабочего стола, такие как KDE и GNOME.

Гл. 6,
Прикладные программы

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

Гл. 7,
Мультимедиа

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

Гл. 8,
Настройка ядра FreeBSD

Объясняет почему вам может понадобиться перенастроить ядро и детально описывает
процесс настройки, сборки и установки нового ядра.

Гл. 9,
Печать

Рассказывает об управлении принтерами в FreeBSD, включая информацию об титульных
страницах, учёте использования принтеров и первоначальной настройке.

Гл. 10, Работа
с приложениями, написанными для Linux

Описывает возможности Linux-совместимости в FreeBSD.
Также предоставляет детальные инструкции по установке для многих популярных приложений
для Linux, таких как: Oracle, SAP R/3 и Mathematica®.

Гл. 11,
Настройка и оптимизация

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

Гл. 12, Процесс
загрузки

Рассказывает о процессе загрузки FreeBSD и объясняет, как управлять этим процессом при
помощи различных настроек.

Гл. 13,
Пользователи и основы управления учётными записями

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

Гл. 14,
Безопасность

Описывает множество различных утилит, которые помогут вам поддерживать FreeBSD в
безопасном, надёжном состоянии, включая Kerberos, IPsec, OpenSSH и межсетевые экраны.

Гл. 15,
Принудительный контроль доступа (MAC)

Описывает что такое принудительный контроль доступа (Mandatory Access Control, MAC) и
как этот механизм может быть использован для защиты системы FreeBSD.

Гл. 16,
Устройства хранения

Описывает как управлять накопителями информации и файловыми системами в FreeBSD,
включая физические диски, массивы RAID, оптические и ленточные носители, диски в
оперативной памяти и сетевые файловые системы.

Гл. 17,
Vinum

Рассказывает как использовать Vinum, менеджер логических разделов, при помощи которого
можно создавать и использовать независимые от устройств хранения логические диски и
программно реализовывать RAID-0, RAID-1 и RAID-5.

Гл. 18,
Локализация

Описывает использование FreeBSD на языках, отличных от английского. Рассказывает о
локализации на уровне системы и отдельных приложений.

Гл. 19, На
переднем крае разработок

Объясняет различия между FreeBSD-STABLE, FreeBSD-CURRENT и FreeBSD-RELEASE.
Рассказывает, кому из пользователей будет полезно отслеживать версию системы в разработке
и вкратце описывает этот процесс.

Гл. 20,
Последовательные коммуникации

Объясняет как подключать терминалы и модемы к вашей FreeBSD как в серверном, так и в
клиентском режиме.

Гл. 21,
PPP и SLIP

Описывает использование PPP, SLIP или PPP через Ethernet для соединения с удалёнными
системами при помощи FreeBSD.

Гл. 22,
Электронная почта

Объясняет использование различных компонентов почтового сервера и более углублённо
рассматривает простые вопросы конфигурации для наиболее популярного программного
обеспечения почтовых серверов: sendmail.

Гл. 23,
Сетевые серверы

Предоставляет детальные инструкции и примеры файлов настройки для использования
компьютера с FreeBSD в качестве файлового сервера (NFS), сервера доменных имен (DNS),
сервера сетевой информационной системы (NIS), или сервера точного времени (ntpd).

Гл.
24, Сложные вопросы работы в сети

Рассматривает множество вопросов работы с сетью, включая совместный доступ компьютеров
в вашей локальной сети к Internet, расширенные вопросы маршрутизации, беспроводные
соединения, bluetooth, ATM, IPv6 и многое другое.

Прил. A,
Получение FreeBSD

Перечисляет различные источники, из которых можно получить FreeBSD на CDROM или DVD,
равно как и различные сайты в Internet, с которых можно скачать и установить FreeBSD.

Прил. B,
Библиография

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

Прил. C,
Ресурсы в Internet

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

Прил. D, Ключи
PGP

Содержит ключи PGP некоторых разработчиков FreeBSD.

Договоренности,
используемые в этой книге

Для того чтобы обеспечить целостность и простоту чтения текста в данной книге мы
применяем некоторые договорённости.

Типографические договорённости

Наклонный шрифт

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

Моноширинный шрифт

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

Полужирный шрифт

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

Пользовательский ввод

Клавиши представляются в виде полужирного текста для того, чтобы
выделяться среди остального текста. Комбинации клавиш, которые должны вводиться
одновременно разделяются символом `+‘, например:

Ctrl+Alt+Del

Это будет означать, что пользователь должен нажать клавиши Ctrl,
Alt и Del одновременно.

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

Ctrl+X, Ctrl+S

Это будет означать, что пользователь должен нажать Ctrl и X одновременно, после чего одновременно нажать Ctrl и S.

Примеры

Примеры, которые начинаются с E:\> обозначают команды
MS-DOS®. Пока не указано противного, эти команды могут
вводиться из окна «Сеанс MS-DOS» в современных системах
Microsoft® Windows®.

E:\> tools\fdimage floppies\kern.flp A:

Примеры, которые начинаются с # обозначают команды,
которые должны быть запущены с правами суперпользователя в FreeBSD. Вы можете войти в
систему как пользователь root для того, чтобы ввести эти
команды или войти в систему обычным пользователем и использовать su(1) для того, чтобы
получить привилегии суперпользователя.

# dd if=kern.flp of=/dev/fd0

Примеры, начинающиеся с % указывают, что команда должна
быть исполнена с правами обычного пользователя. Пока не указано противного, используется
синтаксис C-shell для установки переменных окружения и других команд.

% top

Благодарности

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

Несколько компаний поддерживали разработку этого документа, оплачивая авторам их труд,
оплачивая публикацию и т.д. В частности, BSDi (в последствии приобретённая компанией Wind River Systems) оплачивала труд по
улучшению этой книги участникам Проекта Документации FreeBSD, что в итоге сделало
возможным выпуск первой печатной версии в марте 2000 года (ISBN 1-57176-241-8).
Впоследствии компания Wind River Systems оплатила работу нескольких авторов по улучшению
генерации книги в удобном для печати виде и добавлению нескольких глав. Кульминация этой
работы являла собой публикацию второй печатной версии в ноябре 2001 года (ISBN
1-57176-303-1). В 2003-2004 годах FreeBSD Mall, Inc заплатила нескольким контрибьюторам за улучшение
Handbook при подготовке к третьей редакции.


Обратная связь
Информация для авторов

Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum

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

Yoghurt

Гость


  • #1

В этой теме собираются книги на русском языке по операционной системе FreeBSD и только по ней.

Выкладываю те книги, что есть у меня:

FreeBSD. Установка, настройка, использование

freebsd_ustanovka_nastrojka_ispolzovanie.jpg

Линк: _http://urna.org/freebsd-books/freebsd_ustanovka_nastrojka_ispolzovanie.rar
Размер: 107,97 Мб
Формат: PDF

Полный справочник по FreeBSD

polnyj_spravochnik_po_freebsd.jpg

Линк: _http://urna.org/freebsd-books/polnyj_spravochnik_po_freebsd.rar
Размер: 124,03 Мб
Формат: PDF

FreeBSD. Энциклопедия пользователя

Линк: _http://urna.org/freebsd-books/freebsd_enciklopedia_polzovalelja.rar
Размер: 129,18 Мб
Формат: PDF

Последнее редактирование модератором:

smair

Гость


  • #8

jonjonson,
Если вещь нужна, то на размер не смотришь. Знакомый на модеме исошники линукса тягает — и ничего -три -четыре -пять ночей на образ :)

Последнее редактирование модератором:

Понравилась статья? Поделить с друзьями:
  • Комплексный метод руководства сюжетно ролевой игрой с л новоселова
  • Пункт 373 инструкции к единому плану счетов no 157н
  • Мануал для voicelive touch
  • Кардивитол капсулы инструкция по применению взрослым от чего помогает
  • Ивз 2010 руководство по эксплуатации