1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
<!-- $FreeBSD$ -->
<!-- The FreeBSD Documentation Spanish Project -->
<sect>
<heading>Configuración del Kernel<label id="kernelconfig"></heading>
<sect1>
<heading>Me gustaría personalizar mi kernel. ¿Es difícil?<label id="make-kernel"></heading>
<p>No!, primero, necesitas la distribución completa de fuentes o,
por lo menos, la distribución de fuentes del kernel. De esta manera
tienes los fuentes necesarios para crearte un nuevo kernel. Al
contrario que muchos Unix comerciales, nosotros tenemos la política
de <bf/NO/ vender nuestro kernel en formato binario.
<p>La instalación de los fuentes ocupa un poco más de
espacio, pero te permite consultar los fuentes del kernel en caso de
dificultad o entender que está ocurriendo realmente en la
ejecución del sistema.
<p>Una vez tienes instalada la distribución completa de fuentes, o
por lo menos la del kernel, haz lo siguiente como root:
<enum>
<item> <tt>cd /usr/src/sys/i386/conf</tt>
<item> <tt/cp GENERIC MYKERNEL/
<item> <tt/vi MYKERNEL/
<item> <tt/config MYKERNEL/
<item> <tt>cd ../../compile/MYKERNEL</tt>
<item> <tt/make depend/
<item> <tt/make all/
<item> <tt/make install/
<item> <tt/reboot/
</enum>
<p>El paso 2 no es necesario si todavía tienes un fichero de
configuración del kernel de una release anterior de FreeBSD
2.X. - simplemente, copia el fichero antiguo y examínalo
cuidadosamente para asegurar que no haya cambiado la sintaxis
da algún driver, o haya alguno anticuado.
<p>Un buen fichero de configuración para consultar es <tt/LINT/,
el cual contiene ejemplos documentados para todas las posibles
opciones del kernel. El fichero de configuración <tt/GENERIC/ se
usa para crear el kernel "por defacto" que es el que estarás
usando si no has creado ninguno nuevo.
<p>Si no necesitas hacer ningún cambio al fichero <tt/GENERIC/,
puedes saltar al paso 3, donde personalizas el kernel para tu
sistema. El paso 8 solo debe ejecutarse si los pasos 6 y 7 se
han realizado de manera satisfactoria. Esto copiará una
imágen del nuevo kernel a <tt>/kernel</tt> y <bf/realizará
una copia del antiguo kernel en/ <tt>/kernel.old</tt>. Es muy importante
recordar esto por si el nuevo kernel falla en algun momento - puedes
seleccionar <tt>kernel.old</tt> en el prompt de arranque. Al hacer
un reboot, por defecto se cargará el nuevo kernel.
<p>Si la compilación en el paso 7 falla por alguna razón, es
recomendable que empieces desde el paso 4 substituyendo
<tt/GENERIC/ por <tt/MYKERNEL/. Si puedes generar el kernel
<tt/GENERIC/, significa que algo en tu fichero de configuración
es incorrecto (o has decubierto un bug). Si la compilación del
kernel <tt/GENERIC/ falla, posiblemente tengas los fuentes
corruptos.
<p>Finalmente, si necesitas ver los mensajes originales de arranque
del sistema para compilar un nuevo kernel, ejecuta el comando
<htmlurl url="http://www.FreeBSD.org/cgi/man.cgi?dmesg"
name="dmesg">. Este comando debe imprimir en pantalla todos los
mensajes producidos por el kernel al arrancar, los cuales te
pueden servir en la configuración de tu nuevo kernel.
<p><bf/NOTA/ Recomendamos hacer un historial fechado de los kernel
que vayas creando, de la manera <tt/kernel.YYMMDD/ una vez estén
funcionando correctamente. De esta manera, si la próxima vez que
juegues con el kernel algo no funciona, puedes arrancar desde el
último kernel correcto. Esto es especialmente importante si ahora
estás arrancando desde una controladora no soportada por el kernel
GENERIC (si, experiencia personal).
<sect1>
<heading>La compilación del kernel falla por "<tt/_hw_float/ is missing."</heading>
<p>Dejame adivinar. Has borrado <htmlurl
url="http://www.FreeBSD.org/cgi/man.cgi?npx(4)" name="npx0">
de tu fichero de configuración porque no tienes coprocesador
matemático, no? Mal hecho :-) El dispositivo <tt/npx0/ es
<bf/OBLIGATORIO/. Aunque no tengas coprocesador, debes incluir
el dispositivo <tt/npx0/
<sect1>
<heading>Conflicto de interrupciones con tarjeta serie multi-port.</heading>
<p>Cuando compilo el kernel con drivers para tarjetas serie
multipuerto, el sistema me dice que sólo el primer puerto es
testeado y el resto son obviados debido a conflictos de
interrupción. Cómo soluciono esto?
<p>El problema en este caso es que FreeBSD tiene código interno que
evita caidas del sistema por conflictos de hardware o software. La
manera de solucionar esto es dejar en blanco la entrada correspondiente
a la irq en todos los puertos excepto en uno. Aquí tienes un
ejemplo:
<verb>
#
# Multiport high-speed serial line - 16550 UARTS
#
device sio2 at isa? port 0x2a0 tty irq 5 flags 0x501 vector siointr
device sio3 at isa? port 0x2a8 tty flags 0x501 vector siointr
device sio4 at isa? port 0x2b0 tty flags 0x501 vector siointr
device sio5 at isa? port 0x2b8 tty flags 0x501 vector siointr
</verb>
<sect1>
<heading>¿Cómo activo el soporte para discos QIC-40/80?</heading>
<p>Necesitas "descomentar" la siguiente línea en el fichero
genérico de configuración (o añadirla en tu propio
fichero), añade un <tt/flags 0x1/ en la línea
<htmlurl url="http://www.FreeBSD.org/cgi/man.cgi?fdc(4)" name="fdc">
y recompila.
<verb>
controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 flags 0x1 vector fdintr
disk fd0 at fdc0 drive 0 ^^^^^^^^^
disk fd1 at fdc0 drive 1
#tape ft0 at fdc0 drive 2
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
</verb>
<p>A continuación, crea un nuevo dispositivo llamado
<tt>/dev/ft0</tt> entrando en el directorio <tt>/dev</tt> y ejecutando
el comando:
<verb>
sh ./MAKEDEV ft0
</verb>
<p>Para el primer dispositivo. <tt/ft1/ para el segundo y así para
todos los dispositivos de este tipo que tengas.
<p>Tendrás un dispositivo llamado <tt>/dev/ft0</tt>, al cual puedes
escribir a través de un programa especial de manejo llamado
<tt/ft/ - mira el man en <htmlurl
url="http://www.FreeBSD.org/cgi/man.cgi?ft" name="ft"> para más
detalles.
<p>Versiones anteriores a la <tt/-current/ tenían algunos problemas
al encontrase con cintas en mal estado; si tienes problemas en los
que parece que la cinta se rebovina siempre al llegar al mismo
lugar, intenta utilizar la última versión del programa
<tt/ft/ que encontrarás en <tt>/usr/src/sbin/ft</tt> en
<tt/-current/.
</sect>
|