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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
|
<!--
The FreeBSD Documentation Project
The FreeBSD Spanish Documentation Project
%SOURCE% en_US.ISO8859-1/books/handbook/kernelconfig/chapter.sgml
%SRCID% 1.186
$FreeBSD$
$FreeBSDes: doc/es_ES.ISO8859-1/books/handbook/kernelconfig/chapter.sgml,v 1.2 2004/10/08 22:14:25 jesusr Exp $
-->
<chapter id="kernelconfig">
<chapterinfo>
<authorgroup>
<author>
<firstname>Jim</firstname>
<surname>Mock</surname>
<contrib>Actualizado y reestructurado por </contrib>
<!-- Mar 2000 -->
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Jake</firstname>
<surname>Hamby</surname>
<contrib>Texto original por </contrib>
<!-- 6 Oct 1995 -->
</author>
</authorgroup>
</chapterinfo>
<title>Configuración del kernel de &os;</title>
<sect1>
<title>Sinopsis</title>
<indexterm>
<primary>kernel</primary>
<secondary>Compilar un kernel a medida</secondary>
</indexterm>
<para>El kernel de &os; es el corazón del sistema
operativo. Es el responsable de la gestión y control de la
memoria, reforzamiento de los controles de seguridad, gestión
de redes, acceso a dispositivos y muchas cosas más. &os;
es un sistema dinámico y configurable, pero a veces
sigue siendo necesario reconfigurar y recompilar
un kernel hecho a la medida de nuestras necesidades.</para>
<para>Una vez leido este capítulo sabrá usted:</para>
<itemizedlist>
<listitem>
<para>Por qué puede ser necesario que compile un kernel
personalizado.</para>
</listitem>
<listitem>
<para>Cómo crear un fichero de configuración del kernel,
o bien editar un fichero existente.</para>
</listitem>
<listitem>
<para>Cómo utilizar el fichero de configuración
para crear
y compilar un nuevo kernel.</para>
</listitem>
<listitem>
<para>Cómo instalar su nuevo kernel.</para>
</listitem>
<listitem>
<para>Cómo resolver algunos problemas si algo sale mal.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1>
<title>¿Qué razones hay para compilar un kernel personalizado?</title>
<para>Tradicionalmente &os; ha contado con lo que se conoce como
un kernel <quote>monolítico</quote>. Esto quiere decir que
el kernel era un gran y único programa que se comunicaba con una lista
previa de dispositivos, y que si se deseaba modificar el comportamiento
del kernel se debía compilar un nuevo kernel y reiniciar el sistema
con el nuevo kernel.</para>
<para>Hoy en día &os; evoluciona muy rápidamente
hacia un modelo donde la funcionalidad del kernel se
basa en módulos, los cuales pueden cargarse y
descargarse dinámicamente de acuerdo a las necesidades del
kernel. Esto permite al kernel adaptarse al nuevo hardware que
sale al mercado (como las tarjetas PCMCIA en sistemas
portátiles), o bien
añadir nuevas funcionalidades al kernel que no eran
al compilarlo la vez anterior. Esto es lo que conocemos como
kernel modular.</para>
<para>A pesar de lo dicho aún es necesario llevar a cabo cierta
configuración estática en la configuración
del kernel. A veces se debe a que la funcionalidad del
sistema está tan ligada al kernel que no puede hacerse
mediante carga dinámica de módulos. En otros casos puede
tratarse simplemente de que nadie ha programado un módulo
para esa funcionalidad concreta que pueda cargarse
dinámicamente en el kernel.</para>
<para>Compilar un kernel personalizado es uno de los ritos de
iniciación más importantes a los que los usuarios de
casi todos los BSD han de enfrentarse. Este proceso lleva su
tiempo, pero le aportará grandes beneficios a su
sistema &os;. A diferencia del kernel
<filename>GENERIC</filename>, con el que puede funcionar una cantidad
apabullante de hardware disponible en el mercado, un kernel personalizado
contiene únicamente lo necesario para que funcione el hardware de
<emphasis>su</emphasis> sistema. Obviamente esto tiene sus
ventajas:</para>
<itemizedlist>
<listitem>
<para>Mayor rapidez en el arranque del sistema. Dado que el
kernel sólo tiene que probar el hardware que realmente está
en el sistema el tiempo que necesitará para arrancar se
reducirá visiblemente.</para>
</listitem>
<listitem>
<para>Menor uso de memoria. Generalmente un kernel personalizado
utiliza menos memoria que un kernel
<literal>GENERIC</literal>, lo cual es importante ya que el
kernel debe encontrarse siempre en memoria real. Por ésta
razón un kernel personalizado puede ser de gran utilidad
en sistemas con una cantidad limitada de memoria RAM.</para>
</listitem>
<listitem>
<para>Hacer funcionar hardware específico. Un kernel personalizado
le permite añadir al sistema dispositivos como tarjetas de sonido,
que no están incluidas en el kernel <literal>GENERIC</literal>.
</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="kernelconfig-devices">
<sect1info>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>Escrito por </contrib>
</author>
</authorgroup>
</sect1info>
<title>Inventario de hardware del sistema</title>
<para>Antes de aventurarnos en la configuración del kernel
nunca está de más disponer de un inventario
completo del hardware que hay en
la máquina. En los casos en los que &os; no es el
sistema operativo principal de la máquina puede
conseguir el inventario consultando la configuración
de otro sistema operativo. Por ejemplo, el
<application>Gestor de dispositivos</application> de µsoft;
suele contener información importante sobre los
dispositivos que haya en la máquina. El
<application>Gestor de dispositivos</application> está
en el panel de control.</para>
<note>
<para>Algunas versiones de µsoft.windows; tienen un icono
de <application>Sistema</application> con forma de pantalla
desde el que se puede acceder al <application>Gestor de
dispositivos</application>.</para>
</note>
<para>Si no hay otro sistema operativo en la máquina el
administrador tendrá que conseguir la información
por su cuenta. Una forma de hacerlo es mediante &man.dmesg.8; y
&man.man.1;. La mayoría de los controladores de dispositivo
que hay en &os; tienen una página de manual, que suele
incluir una lista del hardware que puede hacer funcionar. En
la prueba del sistema durante el arranque va apareciendo una
lista del harware que hay en la máquina. Por ejemplo,
las siguientes líneas indican que el controlador
<devicename>psm</devicename> ha encontrado un ratón:</para>
<programlisting>psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: [ITHREAD]
psm0: model Generic PS/2 mouse, device ID 0</programlisting>
<para>Puede añadir este controlador al fichero de
configuración de su kernel personalizado o cargarlo
utilizando &man.loader.conf.5;.</para>
<para>A veces los datos que muestra <command>dmesg</command>
solamente muestran mensajes del sistema en lugar de la
salida de la prueba de arranque. En esos casos puede
ver la verdadera salida de <command>dmesg</command> en el
fichero <filename>/var/run/dmesg.boot</filename>.</para>
<para>Otro método para identificar el hardware del sistema
es usar &man.pciconf.8;, que tiene una salida mucho más
verbosa. Veamos un ejemplo:</para>
<programlisting>ath0@pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00
vendor = 'Atheros Communications Inc.'
device = 'AR5212 Atheros AR5212 802.11abg wireless'
class = network
subclass = ethernet</programlisting>
<para>Este fragmento, obtenido con
<command>pciconf <option>-lv</option></command> muestra cómo
el controlador <devicename>ath</devicename> ha encontrado un
dispositivo Ethernet inalámbrico. Escriba
<command>man <replaceable>ath</replaceable></command> para
consultar la página de manual de &man.ath.4;.</para>
<para>La opción <option>-k</option> de &man.man.1; le
suministrará valiosa información. Sigamos
con el ejemplo anterior:</para>
<screen>&prompt.root; man -k <replaceable>Atheros</replaceable></screen>
<para>Con esto obtendremos una lista de páginas de manual que
contienen esa palabra en particular:</para>
<programlisting>ath(4) - Atheros IEEE 802.11 wireless network driver
ath_hal(4) - Atheros Hardware Access Layer (HAL)</programlisting>
<para>Una vez que tenemos nuestra flamante lista de hardware del sistema
el proceso de compilar un kernel personalizado debería parecer
un poco menos inquietante.</para>
</sect1>
<sect1 id="kernelconfig-modules">
<title>Controladores del kernel, subsistemas y módulos</title>
<indexterm>
<primary>kernel</primary>
<secondary>drivers / modules / subsystems</secondary>
</indexterm>
<para>Antes de compilar un kernel personalizado conviene
pensar antes los motivos. Si lo que se necesita es
añadir hardware específico al sistema es
posible que sea posible utilizarlo mediante un
módulo.</para>
<para>Los módulos del kernel están en el directorio
<filename class="directory">/boot/kernel</filename> y se
pueden cargar dinámicamente en un kernel en funcionamiento
con &man.kldload.8;. La mayoría, por no decir todos, los
controladores del kernel tienen un módulo específico
y una página de manual. Por ejemplo, en la sección
anterior hablábamos del controlador Ethernet inalámbrico
<devicename>ath</devicename>. La página de manual
de este dispositivo contiene la siguiente
información:</para>
<programlisting>Alternatively, to load the driver as a module at boot time, place the
following line in &man.loader.conf.5:
if_ath_load="YES"</programlisting>
<para>Si hace lo que dice ahí, es decir, añadir
la línea <literal>if_ath_load="YES"</literal> al fichero
<filename>/boot/loader.conf</filename> hará que el
módulo se cargue dinámicamente cada vez
que el sistema arranque.</para>
<para>Hay casos, no obstante, en los que no existe el módulo
correspondiente. Esto sucede con ciertos subsistemas y con
controladores muy importantes, como por ejemplo el de
<acronym>FFS</acronym>, que necesita el kernel. Igual sucede con
la posibilidad de utilizar redes (INET). Por desgracia, en estos
casos la única forma de saber si hace falta un controlador
es buscar el módulo.</para>
<warning>
<para>Es sumamente fácil quitar un dispositivo o una
opción del kernel y encontrarse de manos a boca con
un kernel que no funciona. Por ejemplo, si elimina el
controlador &man.ata.4; del fichero de configuración
del kernel un sistema que utilice unidades de disco
<acronym>ATA</acronym> no podrá arrancar a menos que
se añada la línea correspondiente al fichero
<filename>loader.conf</filename>. Si tiene dudas busque el
módulo y deje el kernel como está.</para>
</warning>
</sect1>
<sect1 id="kernelconfig-building">
<title>Compilación e instalación de un kernel personalizado</title>
<indexterm>
<primary>kernel</primary>
<secondary>compilación / instalación</secondary>
</indexterm>
<para>En primer lugar, hagamos un breve recorrido por el directorio
donde se lleva a cabo la compilación del kernel. Todos los
directorios mencionados hacen referencia al directorio principal,
que es <filename>/usr/src/sys</filename>, al que también
podemos acceder desde <filename>/sys</filename>. Existen gran
cantidad de subdirectorios que representan diferentes partes del
kernel, pero el más importante para lo que deseamos hacer son
<filename><replaceable>arch</replaceable></filename> y
<filename>/conf</filename>, que es donde se llevara a cabo la
edición del fichero de configuración y la
compilación propiamente dicha del mismo,
el punto de partida para la personalización del kernel. El
directorio <filename><replaceable>arch</replaceable></filename>
representa la arquitectura del sistema, por lo que puede ser
<filename>i386</filename>, <filename>alpha</filename>,
<filename>amd64</filename>, <filename>ia64</filename>,
<filename>powerpc</filename>, <filename>sparc64</filename> o
<filename>pc98</filename> (una arquitectura alternativa, similar a PC
y muy popular en Japón). Todo lo que existe dentro de un
directorio de una arquitectura en particular, es específico
para dicha arquitectura; el resto del código es común
para todas las plataformas en las que &os; puede funcionar.
Observe la organización lógica de la estructura
de los directorios, con cada dispositivo utilizable en el sistema,
sistema de ficheros y opciones, cada cosa en su propio
subdirectorio.</para>
<para>A lo largo de este capítulo asumiremos que está
utilizando la arquitectura i386, puesto que sobre ella son los
ejemplos que vamos a ir exponiendo. Si no es este su caso debe
hacer los cambios adecuados a su arquitectura de hardware en las
rutas que vayamos utilizando.</para>
<note>
<para>Si <emphasis>no existe</emphasis> el directorio
<filename>/usr/src/sys</filename> en su sistema quiere
decir que no están instaladas las fuentes del
kernel. La forma más sencilla de tenerlas es
mediante <command>/stand/sysinstall</command>. Como
usuario <username>root</username> seleccione
<literal>Configure</literal>, luego
<literal>Distributions</literal>, después
<literal>src</literal> y finalmente <literal>sys</literal>.
Si no le gusta mucho
<application>sysinstall</application> y tiene acceso a un
CDROM <quote>oficial</quote> de &os; puede
instalar las fuentes por medio de la siguiente línea
de órdenes:</para>
<screen>&prompt.root; <userinput>mount</userinput> /cdrom
&prompt.root; <userinput>mkdir -p</userinput> <filename>/usr/src/sys</filename>
&prompt.root; <userinput>ln -s</userinput> /usr/src/sys /sys
&prompt.root; <userinput>cat /cdrom/sys/ssys.[a-d]* | tar -xzvf</userinput></screen>
</note>
<para>Ahora vaya al al directorio
<filename><replaceable>arch</replaceable>/conf</filename>
y copie el fichero de configuración <filename>GENERIC</filename>
con el nombre que desee. Por ejemplo:</para>
<screen>&prompt.root; <userinput>cd /usr/src/sys/i386/conf</userinput>
&prompt.root; <userinput>cp GENERIC MIKERNEL</userinput></screen>
<para>Por tradición el nombre se escribe con mayúsuculas y
si tiene varias maquinas &os, con diferente hardware es recomendable
darle a cada kernel el mismo nombre que la máquina en la que va
a ejecutarse. En este ejemplo usaremos el nombre de
<filename>MIKERNEL</filename> .</para>
<tip>
<para>Guardar su fichero de configuración directamente bajo
el directorio <filename>/usr/src</filename>, puede que no sea una
idea muy astuta. Si empieza a tener problemas puede ser muy tentador
borrar <filename>/usr/src</filename> y comenzar desde cero.
Cinco segundos después de haber hecho esto se dará
cuenta de que ha eliminado el fichero de configuración de
su kernel, en el que quizás llevaba horas trabajando.</para>
<para>Le proponemos una alternativa: guardar su fichero de configuración
cualquier otro sitio y crear un enlace simbólico al fichero
que hay en el directorio <filename>i386</filename>.</para>
<para>Por ejemplo:</para>
<screen>&prompt.root; <userinput>cd /usr/src/sys/i386/conf</userinput>
&prompt.root; <userinput>mkdir /root/kernels</userinput>
&prompt.root; <userinput>cp GENERIC /root/kernels/<replaceable>MIKERNEL</replaceable></userinput>
&prompt.root; <userinput>ln -s /root/kernels/<replaceable>MIKERNEL</replaceable></userinput></screen>
</tip>
<para>Ahora edite el fichero de configuración
<filename>MIKERNEL</filename> con su editor de textos favorito.
Si se trata de una instalación reciente probablemente el
único editor disponible sea <application>vi</application>,
del cual es complicado explicar su uso detallado en este
documento, pero existen bastantes libros que detallan su uso; puede
ver algunos en la <link
linkend="bibliography">bibliografía</link>.
&os; dispone de un editor de uso muy sencillo, llamado
<application>ee</application>; si es usted principiante le será
de mucha ayuda. Cambie los comentarios al principio del fichero
con algo que refleje los cambios realizados o al menos para
diferenciarlo del fichero <filename>GENERIC</filename>.</para>
<para>Si ha compilado un kernel en &sunos; o algún otro sistema operativo
BSD seguramente la mayor parte de fichero le será muy
familiar. Si viene usted de otros sistemas
operativos como DOS, el fichero <filename>GENERIC</filename> puede
parecerle intimidante, así que siga las instrucciones descritas
en <link linkend="kernelconfig-config">El Fichero de Configuración
</link> detenidamente y con sumo cuidado.</para>
<note>
<para>Asegúrese siempre de verificar el fichero
<filename>/usr/src/UPDATING</filename> antes de realizar cualquier
actualización del sistema si ha
<link linkend="cutting-edge">sincronizado sus fuentes</link>
para disponer de la última versión de los mismos.
En el fichero <filename>/usr/src/UPDATING</filename> está toda
la información importante sobre las actualizaciones.
Al distribuirse con &os; dicha información deberá
estar más actualizada que la que hay en este mismo
texto.</para>
</note>
<para>Ahora es momento de llevar a cabo la compilación del
código fuente del kernel.</para>
<procedure>
<title>Compilación del kernel</title>
<step>
<para>Vaya al directorio <filename
class="directory">/usr/src</filename>:</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput></screen>
</step>
<step>
<para>Compile el kernel:</para>
<screen>&prompt.root; <userinput>make buildkernel KERNCONF=<replaceable>MIKERNEL</replaceable></userinput></screen>
</step>
<step>
<para>Instale el nuevo kernel:</para>
<screen>&prompt.root; <userinput>make installkernel KERNCONF=<replaceable>MIKERNEL</replaceable></userinput></screen>
</step>
</procedure>
<note>
<para>Es imprescindible que disponga del código fuente completo de &os;
para poder compilar el kernel.</para>
</note>
<tip>
<para>Por omisión, si compila un kernel personalizado
<emphasis>todos</emphasis> los módulos del kernel
serán recompilados también. Si quiere
que la actualización de su kernel sea mucho más
rápida o compilar solamente ciertos módulos
personalizados, edite kernel modules will be rebuilt as well.
<filename>/etc/make.conf</filename> antes de compilar el
kernel:</para>
<programlisting>MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs</programlisting>
<para>Esta variable crea una lista de módulos listos para
ser compilados, sin tocar los demás.</para>
<programlisting>WITHOUT_MODULES = linux acpi sound/sound sound/driver/ds1 ntfs</programlisting>
<para>Esta variable crea una lista de módulos que serán
excluidos del proceso de compilación. Hay otras variables que
pueden resultarle útiles durante este proceso; consulte la
página de manual de &man.make.conf.5;.</para>
</tip>
<indexterm>
<primary><filename class="directory">/boot/kernel.old</filename></primary>
</indexterm>
<para>El nuevo kernel se copiará al directorio raíz
como <filename>/kernel</filename> y el kernel viejo tendrá
el nombre de <filename>/kernel.old</filename>. Ahora
reinicie su sistema para poder probar su nuevo kernel. En caso de que se
presente algun problema hay algunos consejos para la <link
linkend="kernelconfig-trouble">resolución de problemas</link> al
final de este capítulo. Asegúrese de leer la sección
que explica cómo recuperar el sistema en caso de que su kernel <link
linkend="kernelconfig-noboot">no quiera arrancar</link>.</para>
<note>
<para>Ciertos ficheros relacionados con el proceso de
arranque, como &man.loader.8;y su configuración,
se guardan en <filename>/boot</filename>. Los módulos
personalizados o de terceros se suelen guardar en
<filename class="directory">/boot/kernel</filename>,
aunque debe tener presente que es muy importante que
los módulos y el kernel estén
sincronizados. Si intenta usar módulos con un
kernel para el que no están destinados puede
haber errores o incluso producirse intesatabilidades.</para>
</note>
</sect1>
<!-- hemendik -->
<sect1 id="kernelconfig-config">
<sect1info>
<authorgroup>
<author>
<firstname>Joel</firstname>
<surname>Dahl</surname>
<contrib>Actualizado a &os; 6.X por </contrib>
</author>
</authorgroup>
</sect1info>
<title>El fichero de configuración</title>
<indexterm>
<primary>kernel</primary>
<secondary>NOTES</secondary>
</indexterm>
<indexterm><primary>NOTES</primary></indexterm>
<indexterm>
<primary>kernel</primary>
<secondary>configuration file</secondary>
</indexterm>
<para>El formato de un fichero de configuración es
bastante simple. Cada línea contiene una palabra
clave con uno o más argumentos. Para simplificar,
hay muchas líneas que solamente contienen un
argumento. Cualquier cosa detrás de un
<literal>#</literal> se considerará un comentario y
en consecuencia será ignorado. Las siguientes
secciones describen todas las palabras clave en el orden
en el que aparecen en
<filename>GENERIC</filename>.
<anchor
id="kernelconfig-options"> Si quiere una lista exhaustiva de
de opciones dependientes de arquitectura y de dispositivos
puede consultar el fichero <filename>NOTES</filename>
en el mismo directorio donde está el fichero
<filename>GENERIC</filename>. Si quiere ver las
opciones independientes de arquitectura consulte
<filename>/usr/src/sys/conf/NOTES</filename>.</para>
<note>
<para>Puede generar un fichero que contenga todas las opciones
disponibles en un kernel. Esto es algo que solamente se
usa para hacer pruebas. Si quiere generarlo ejecute, como
<username>root</username>, lo siguiente:</para>
<screen>&prompt.root; <userinput>cd /usr/src/sys/<replaceable>i386</replaceable>/conf && make LINT</userinput></screen>
</note>
<indexterm>
<primary>kernel</primary>
<secondary>configuration file</secondary>
</indexterm>
<para>A continuación veremos un ejemplo de fichero de
configuración de un kernel <filename>GENERIC</filename>
al que se han añadido comentarios adicionales donde se
ha visto que era necesario abundar un poco para mayor
claridad. Este ejemplo es igual (o, en el
peor de los casos, casi igual) que la copia del mismo
que tiene usted en
<filename>/usr/src/sys/<replaceable>i386</replaceable>/conf/GENERIC</filename>.
</para>
<indexterm>
<primary>kernel options</primary>
<secondary>machine</secondary>
</indexterm>
<programlisting>machine i386</programlisting>
<para>Esta es la arquitectura de la máquina. Debe ser
<literal>alpha</literal>, <literal>amd64</literal>,
<literal>i386</literal>, <literal>ia64</literal>,
<literal>pc98</literal>, <literal>powerpc</literal> o
<literal>sparc64</literal>.</para>
<indexterm>
<primary>kernel options</primary>
<secondary>cpu</secondary>
</indexterm>
<programlisting>cpu I486_CPU
cpu I586_CPU
cpu I686_CPU</programlisting>
<para>Las opciones anteriores definen el tipo de CPU que
haya en su sistema. Puede dejar varias líneas
de CPU (si, por ejemplo, no está seguro de usar
<literal>I586_CPU</literal> o <literal>I686_CPU</literal>),
pero si está personalizando su kernel es mucho mejor
que solamente ponga la CPU que tenga. Si no está
seguro de la CPU que tiene busque en los mensajes de arranque
que se guardan en
<filename>/var/run/dmesg.boot</filename>.</para>
<indexterm>
<primary>kernel options</primary>
<secondary>ident</secondary>
</indexterm>
<programlisting>ident GENERIC</programlisting>
<para>Este es el identificador del kernel. Modifíquelo
para que cuadre con el nombre que le haya dado a su kernel,
es decir, <literal><replaceable>MIKERNEL</replaceable></literal>
si ha seguido los ejemplos anteriores. El valor que asigne
a la cadena <literal>ident</literal> será el que
se muestre cuando arranque con su kernel, así que
es útil darle a su kernel un nombre distintivo que
permita distinguirlo fácilmente de otros, por ejemplo,
si está compilando un kernel experimental.</para>
<programlisting>#To statically compile in device wiring instead of /boot/device.hints
#hints "GENERIC.hints" # Default places to look for devices.</programlisting>
<para>&man.device.hints.5; se usa para configurar opciones
de controladores de dispositivo. La ubicación por
defecto en la que &man.loader.8; buscará durante
el arranque es <filename>/boot/device.hints</filename>. Si usa
la opción <literal>hints</literal> puede compilar el
contenido de <filename>device.hints</filename> en su kernel,
lo que hará innecesario crear ese fichero en
<filename>/boot</filename>.</para>
<!-- XXX: Add a comment here that explains when compiling hints into
the kernel is a good idea and why. -->
<programlisting>makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols</programlisting>
<para>El proceso normal de compilación en &os;
incluye información de depuración de
errores si se compila un kernel con la opción
<option>-g</option>, que activa la información
de depuración de errores al pasar a
&man.gcc.1;.</para>
<programlisting>options SCHED_4BSD # 4BSD scheduler</programlisting>
<para>El planificador de tareas tradicional y por omisión
de &os;. Déjelo como está.</para>
<programlisting>options PREEMPTION # Enable kernel thread preemption</programlisting>
<para>Permite que hilos que están en el kernel
puedan asociarse con hilos cuya prioridad sea más
alta. Ayuda con la interactividad y permite que los hilos
interrumpidos puedan ejecutarse antes en lugar de tener
que esperar.</para>
<programlisting>options INET # InterNETworking</programlisting>
<para>Networking. Deje esto como está, incluso si no
tiene en mente conectar la máquina a una red. Muchos
programas necesitan al menos disponer de lo que se llama
«loopback networking» (esto es, poder efectuar
conexiones de red con su propia máquina) así
que tener esto es obligatorio.</para>
<programlisting>options INET6 # IPv6 communications protocols</programlisting>
<para>Activa los protocolos de comunicación IPv6.</para>
<programlisting>options FFS # Berkeley Fast Filesystem</programlisting>
<para>El sistema de ficheros básico para discos
duros. Debe dejarlo como está si pretende
poder arrancar desde disco duro.</para>
<programlisting>options SOFTUPDATES # Enable FFS Soft Updates support</programlisting>
<para>Activa Soft Updates en el kernel, lo que acelerará
los accesos de escritura a sus discos. Esta funcionalidad
la facilita el kernel, pero debe activarse para cada disco
de forma específica. Revise la salida de
&man.mount.8; y verá si Soft Updates está
activado en los discos de su sistema. Si no aparece la
opción <literal>soft-updates</literal> actívela
mediante &man.tunefs.8; (para sistemas de ficheros ya
existentes) o &man.newfs.8; (en el caso de sistemas
de ficheros nuevos).</para>
<programlisting>options UFS_ACL # Support for access control lists</programlisting>
<para>Esta opción activa en el kernel las listas
de control de acceso. Consiste en el uso de atributos
extendidos y <acronym>UFS2</acronym> junto con las
características que se describen detalladamente
en la <xref linkend="fs-acl">. Las <acronym>ACL</acronym>
por omisión están activadas, y no deben
desactivarse del kernel una vez que hayan sido usadas
en un sistema de ficheros puesto que eliminará
las listas de control de acceso y el modo en el que
se protegen esos ficheros de un modo totalmente
fuera de control.</para>
<programlisting>options UFS_DIRHASH # Improve performance on big directories</programlisting>
<para>This option includes functionality to speed up disk
operations on large directories, at the expense of using
additional memory. You would normally keep this for a large
server, or interactive workstation, and remove it if you are
using &os; on a smaller system where memory is at a premium and
disk access speed is less important, such as a firewall.</para>
<programlisting>options MD_ROOT # MD is a potential root device</programlisting>
<para>Esta opción permite que la partición
raíz esté en un disco virtual basado en
memoria.</para>
<indexterm>
<primary>kernel options</primary>
<secondary>NFS</secondary>
</indexterm>
<indexterm>
<primary>kernel options</primary>
<secondary>NFS_ROOT</secondary>
</indexterm>
<programlisting>options NFSCLIENT # Network Filesystem Client
options NFSSERVER # Network Filesystem Server
options NFS_ROOT # NFS usable as /, requires NFSCLIENT</programlisting>
<para>NFS, el sistema de ficheros en red. Salvo que tenga
intención de montar particiones de sistemas de ficheros
&unix; de un servidor a través de TCP/IP puede
comentar estas opciones.</para>
<indexterm>
<primary>kernel options</primary>
<secondary>MSDOSFS</secondary>
</indexterm>
<programlisting>options MSDOSFS # MSDOS Filesystem</programlisting>
<para>El sistema de ficheros &ms-dos;. Salvo que tenga en mente
montar particiones de disco duro con formato DOS durante el
arranque puede comentar esta opción. En caso de
necesidad esta funcionalidad se cargará
automáticamente. También tiene a su
<filename role="package">emulators/mtools</filename>,
que le permitirá acceder a disquetes DOS sin tener
que montarlos y desmontarlos (y ni siquiera requiere
<literal>MSDOSFS</literal>).</para>
<programlisting>options CD9660 # ISO 9660 Filesystem</programlisting>
<para>El sistema de ficheros ISO 9660 para CDROM. Coméntelo
si no tiene unidad CDROM o solamente monta CD muy de
vez en cuando; cuando lo necesite el sistema lo cargará
dinámicamente. Los CD de sonido no utilizan este
sistema de ficheros.</para>
<programlisting>options PROCFS # Process filesystem (requires PSEUDOFS)</programlisting>
<para>El sistema de ficheros de procesos. Es un sistema
de ficheros <quote>simulado</quote> que se monta en
<filename>/proc</filename> y permite a programas como
&man.ps.1; suministrar más información
sobre qué procesos están
ejecutándose. En la mayoaría de los casos
no es necesario usar <literal>PROCFS</literal>,
puesto que la mayoría de las herramientas de
monitorización y depuración han sido
adaptadas para que funcionen sin
<literal>PROCFS</literal>. De hecho aunque lo instale
el sistema no lo montará por omisión.</para>
<programlisting>options PSEUDOFS # Pseudo-filesystem framework</programlisting>
<para>Los kernel 6.X pueden usar <literal>PSEUDOFS</literal>
al utilizar <literal>PROCFS</literal>.</para>
<programlisting>options GEOM_GPT # GUID Partition Tables.</programlisting>
<para>Con esta opción se puede tener una gran cantidad
de particiones en un único disco.</para>
<programlisting>options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]</programlisting>
<para>Compatibilidad con 4.3BSD. Déjelo como está;
ciertos programas pueden comportarse de formas muy
extrañas si comenta esta opción.</para>
<programlisting>options COMPAT_FREEBSD4 # Compatible with &os;4</programlisting>
<para>&os; 5.X en sistemas &i386; y Alpha necesita
esta opción para poder usar aplicaciones compiladas
en versiones antiguas de &os; que utilizan, por tanto,
llamadas al sistema más antiguas. Esta opción
no es necesaria en plataformas en las que funciona &os;
desde 5.X, como ia64 y &sparc64;.</para>
<programlisting>options COMPAT_FREEBSD5 # Compatible with &os;5</programlisting>
<para>Esta opción hace falta en sistemas &os; 6.X
y versiones posteriores para poder ejecutar aplicaciones
compiladas en &os; 5.X, que usan interfaces de llamada
al sistema &os; 5.X.</para>
<programlisting>options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI</programlisting>
<para>Hace que el kernel haga una pausa de 5 segundos antes de
probar los dispositivos SCSI del sistema. Si solamente tiene
discos IDE puede ignorar esta opción, o también
puede asignarle un valor menos para evitar el retardo en el
arranque. Si lo hace y &os; tiene problemas para reconocer
dispositivos SCSI en el sistema es obvio que tendrá
que incrementar el valor.</para>
<programlisting>options KTRACE # ktrace(1) support</programlisting>
<para>Activa las trazas en el kernel, algo muy útil para
la depuración de errores.</para>
<programlisting>options SYSVSHM # SYSV-style shared memory</programlisting>
<para>Facilita memoria compartida System V. El uso
más habitual es la extensión XSHM de X, que
utiliza la mayoría de programas que hacen uso
intensivo de los gráficos para incrementar la
velocidad. Si usa X es casi seguro que le vendrá bien
esta opción.</para>
<programlisting>options SYSVMSG # SYSV-style message queues</programlisting>
<para>Mensajes System V. Esta opción añade
solamente unos cuantos bytes al kernel.</para>
<programlisting>options SYSVSEM # SYSV-style semaphores</programlisting>
<para>Semáforos System V. No es demasiado frecuente
que se utilicen, pero solamente añaden unos
cuantos cientos de bytes al kernel.</para>
<note>
<para>La opción <option>-p</option> de &man.ipcs.1;
le mostrará una lista de procesos que estén
utilizando características
System V.</para>
</note>
<programlisting>options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions</programlisting>
<para>Extensiones en tiempo real añadidas en 1993
&posix;. Ciertas aplicaciones de la Colección de
Ports las utilizan, por ejemplo
<application>&staroffice;</application>.</para>
<programlisting>options KBD_INSTALL_CDEV # install a CDEV entry in /dev</programlisting>
<para>This option is required to allow the creation of keyboard device
nodes in <filename>/dev</filename>.</para>
<programlisting>options ADAPTIVE_GIANT # Giant mutex is adaptive.</programlisting>
<para>Giant es un mecanismo de exclusión mutua
(«sleep mutex») que protege un gran conjunto
de recursos del kernel. Hoy en dia no es asumible tener
un cuello de botella así por el impacto que tiene
en el rendimiento, así que está siendo
reemplazado por bloqueos que protegen los recursos de
manera individual. <literal>ADAPTIVE_GIANT</literal>
hace que Giant sea incluido en un conjunto de
«mutextes» que va rotando
Esto es, cuando un hilo quiere
bloquear el Giant mutex (pero ya está bloqueado
por un hilo de otra CPU) el primer hilo seguirá
ejecutándose a la espera de que se libere el
bloqueo. Generalmente el hilo volverá al estado
de reposo y esperará hasta que aparezca otra
oportunidad de ejecutarse. Si no está seguro de
lo que está haciendo es mejor que deje esta
opción tal y como está.</para>
<note>
<para>Tenga en cuenta que en &os; 8.0-CURRENT y
versiones siguientes todos los «mutexes»
son adaptables por omisión, salvo que se use
la opción
<literal>NO_ADAPTIVE_MUTEXES</literal>. El resultado
evidente que es Giant es adaptable por omisión,
así que la opción
<literal>ADAPTIVE_GIANT</literal> ha sido eliminada de
la configuración.</para>
</note>
<indexterm>
<primary>kernel options</primary>
<secondary>SMP</secondary>
</indexterm>
<programlisting>device apic # I/O APIC</programlisting>
<para>El dispositivo apic activa la E/S APIC en la entrega
de interrupciones. El dispositivo apic puede usarse tanto en
kernels para un procesador (UP) como para sistemas
multiprocesador (SMP). Si añada
<literal>options SMP</literal> funcionará en
sistemas multiprocesador.</para>
<note>
<para>El dispositivo apic existe solamente en la
arquitectura i386, de modo que no debe usarse
esta línea en otras arquitecturas.</para>
</note>
<programlisting>device eisa</programlisting>
<para>Use esta opción si tiene una placa base
EISA. Activa la detección automática y
permite la configuración de todos los dispositivos
que estén en el bus EISA.</para>
<programlisting>device pci</programlisting>
<para>Use esta opción si tiene una placa PCI. Permite
la detección automática de tarjetas PCI y
permite la configuración entre el bus ISA y el
PCI.</para>
<programlisting># Floppy drives
device fdc</programlisting>
<para>Este dispositivo es el controlador de la unidad de
disquetes.</para>
<programlisting># ATA and ATAPI devices
device ata</programlisting>
<para>Este controlador permite utilizar dispositivos ATA
y ATAPI. Si añade al kernel
one <literal>device ata</literal> éste detectará
cualquier dispositivo ATA/ATAPI PCI que conecte a una
máquina moderna.</para>
<programlisting>device atadisk # ATA disk drives</programlisting>
<para>Si usa <literal>device ata</literal> tendrá que
añadir también esto para poder usar unidades
de disco ATA.</para>
<programlisting>device ataraid # ATA RAID drives</programlisting>
<para>Si usa <literal>device ata</literal> tendrá que
añadir también esto para poder usar unidades
de disco ATA RAID.</para>
<programlisting><anchor id="kernelconfig-atapi">
device atapicd # ATAPI CDROM drives</programlisting>
<para>Si usa <literal>device ata</literal> tendrá que
añadir también esto para poder usar unidades
ATAPI CDROM.</para>
<programlisting>device atapifd # ATAPI floppy drives</programlisting>
<para>Si usa <literal>device ata</literal> tendrá que
añadir también esto para poder usar unidades
de disquete ATAPI.</para>
<programlisting>device atapist # ATAPI tape drives</programlisting>
<para>Si usa <literal>device ata</literal> tendrá que
añadir también esto para poder usar unidades
de cinta ATAPI.</para>
<programlisting>options ATA_STATIC_ID # Static device numbering</programlisting>
<para>Con esta opción hace que el número de
controladores sea estático; si no se usa los
números de dispositivo se asignan
dinámicamente.</para>
<programlisting># SCSI Controllers
device ahb # EISA AHA1742 family
device ahc # AHA2940 and onboard AIC7xxx devices
options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~128k to driver.
device ahd # AHA39320/29320 and onboard AIC79xx devices
options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~215k to driver.
device amd # AMD 53C974 (Teckram DC-390(T))
device isp # Qlogic family
#device ispfw # Firmware for QLogic HBAs- normally a module
device mpt # LSI-Logic MPT-Fusion
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets + those of `ncr')
device trm # Tekram DC395U/UW/F DC315U adapters
device adv # Advansys SCSI adapters
device adw # Advansys wide SCSI adapters
device aha # Adaptec 154x SCSI adapters
device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
device bt # Buslogic/Mylex MultiMaster SCSI adapters
device ncv # NCR 53C500
device nsp # Workbit Ninja SCSI-3
device stg # TMC 18C30/18C50</programlisting>
<para>Controladoras SCSI. Coméntelas si no las tiene
en su sistema. Si en su sistema tiene solamente unidades IDE
puede borrarlas todas.
Las líneas <literal>*_REG_PRETTY_PRINT</literal> son
opciones de depuración de errores de sus
respectivos controladores de dispositivo.</para>
<programlisting># SCSI peripherals
device scbus # SCSI bus (required for SCSI)
device ch # SCSI media changers
device da # Direct Access (disks)
device sa # Sequential Access (tape etc)
device cd # CD
device pass # Passthrough device (direct SCSI access)
device ses # SCSI Environmental Services (and SAF-TE)</programlisting>
<para>Periféricos SCSI. Estos también puede
borrarlos sin problemas si no los tiene en su sistema o
si solamente tiene hardware IDE.</para>
<note>
<para>El controlador USB &man.umass.4; (y unos cuantos
controladores más) utilizan el subsistema
SCSI aunque no sean dispositivos SCSI reales. No elimine
el subsistema SCSI del kernel si va a utilizar cualquiera
de estos controladores.</para>
</note>
<programlisting># RAID controllers interfaced to the SCSI subsystem
device amr # AMI MegaRAID
device arcmsr # Areca SATA II RAID
device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID
device ciss # Compaq Smart RAID 5*
device dpt # DPT Smartcache III, IV - See NOTES for options
device hptmv # Highpoint RocketRAID 182x
device rr232x # Highpoint RocketRAID 232x
device iir # Intel Integrated RAID
device ips # IBM (Adaptec) ServeRAID
device mly # Mylex AcceleRAID/eXtremeRAID
device twa # 3ware 9000 series PATA/SATA RAID
# RAID controllers
device aac # Adaptec FSA RAID
device aacp # SCSI passthrough for aac (requires CAM)
device ida # Compaq Smart RAID
device mfi # LSI MegaRAID SAS
device mlx # Mylex DAC960 family
device pst # Promise Supertrak SX6000
device twe # 3ware ATA RAID</programlisting>
<para>Controladoras RAID que pueden utilizarse en &os;. Si no las
tiene en su sistema puede borrarlas.</para>
<programlisting># atkbdc0 controls both the keyboard and the PS/2 mouse
device atkbdc # AT keyboard controller</programlisting>
<para>El controlador de teclado (<literal>atkbdc</literal>)
ofrece servicios de E/S con teclados AT y ratones PS/2. El
controlador de teclado
(<literal>atkbd</literal>) y el controlador de ratón PS/2
(<literal>psm</literal>) necesitan este dispositivo.</para>
<programlisting>device atkbd # AT keyboard</programlisting>
<para>El controlador <literal>atkbd</literal>, junto con el
controlador <literal>atkbdc</literal>, permiten utilizar el
teclado AT 84 u otros tipos de teclados AT mejorados que se
conecten mediante el controlador de teclado AT.</para>
<programlisting>device psm # PS/2 mouse</programlisting>
<para>Utilice este dispositivo si conecta su ratón en el
puerto PS/2.</para>
<programlisting>device kbdmux # keyboard multiplexer</programlisting>
<para>Funcionalidad básica para múltiples
teclados. Si no tiene en mente usar más de un
teclado en el sistema puede borrar esta línea
sin mayor problema.</para>
<programlisting>device vga # VGA video card driver</programlisting>
<para>El controlador de la tarjeta gráfica.</para>
<programlisting>
device splash # Splash screen and screen saver support</programlisting>
<para>«Splash screen» en el arranque. Los salvapantallas
necesitan este dispositivo.</para>
<programlisting># syscons is the default console driver, resembling an SCO console
device sc</programlisting>
<para><literal>sc</literal> por omisión es el controlador
de dispositivo de la consola; se parece mucho a una consola de
SCO. Dado que muchos programas de pantalla completa acceden
a la consola a través de la biblioteca de bases de datos
de terminal
<filename>termcap</filename> no tiene demasiada importancia si
usa <literal>vt</literal>, el controlador de consola compatible
<literal>VT220</literal>. Cuando acceda al sistema asigne a
su variable <envar>TERM</envar> el valor
<literal>scoansi</literal>si los programas a pantalla completa
tienen algún problema para acceder a la consola.</para>
<programlisting># Enable this for the pcvt (VT220 compatible) console driver
#device vt
#options XSERVER # support for X server on a vt console
#options FAT_CURSOR # start with block cursor</programlisting>
<para>El controlador de dispositivo VT220-compatible;
es compatible con VT100/102, anterior a él. Funciona
bien en ciertos sistemas portátiles que adolecen de
incompatibilidad de harware con
<literal>sc</literal>. Asigne a su variable de entorno
<envar>TERM</envar> el valor <literal>vt100</literal> o
<literal>vt220</literal> cuando acceda al sistema. Este
controlador le puede ser de utilidad si tiene que acceder
a gran cantidad de máquinas a través de una
red, una situación en la que suele suceder que
<filename>termcap</filename> o
<filename>terminfo</filename> no están ahí
para que las use <literal>sc</literal>.
<literal>vt100</literal>, por el contrario, debería
aparecer en práticamente cualquier
plataforma.</para>
<programlisting>device agp</programlisting>
<para>Utilice esta opción si tiene en el sistema una
tarjeta AGP. Activará AGP y también AGP GART
si su tarjeta puede usarla.</para>
<indexterm>
<primary>APM</primary>
</indexterm>
<programlisting># Power management support (see NOTES for more options)
#device apm</programlisting>
<para>Gestión avanzada de la energía. Muy
útil en sistemas portátiles. Viene
desactivada por omisión en el kernel
<filename>GENERIC</filename> .</para>
<programlisting># Add suspend/resume support for the i8254.
device pmtimer</programlisting>
<para>Controlador del reloj para eventos de gestión de la
energía, como APM y ACPI.</para>
<programlisting># PCCARD (PCMCIA) support
# PCMCIA and cardbus bridge support
device cbb # cardbus (yenta) bridge
device pccard # PC Card (16-bit) bus
device cardbus # CardBus (32-bit) bus</programlisting>
<para>Dispositivos PCMCIA. Si el sistema es portátil
necesita tener esto activado.</para>
<programlisting># Serial (COM) ports
device sio # 8250, 16[45]50 based serial ports</programlisting>
<para>Estos son los puertos serie a los que se conoce como
puertos <devicename>COM</devicename> en entornos
&ms-dos;/&windows;.</para>
<note>
<para>Si tiene un módem interno en
<devicename>COM4</devicename> un puerto serie en
<devicename>COM2</devicename> tendrá que
asignar a la IRQ del módem el 2 (por razones
técnicas ignotas IRQ2 = IRQ 9) para que pueda
acceder al dispositivo desde &os;. Si tiene una tarjeta
serie multipuerto consulte la página de manual de
&man.sio.4; si quiere más detalles sobre los
valores que debe añadir a
<filename>/boot/device.hints</filename>. Algunas tarjetas
gráficas (sobre todo las que usan chips S3) utilizan
direcciones IO del tipo
<literal>0x*2e8</literal> y dado que muchas tarjetas serie
de baja calidad no decodifican correctamente el espacio de
direcciones de 16 bits chocan con estas tarjetas, haciendo
que el puerto <devicename>COM4</devicename> sea
prácticamente inútil.</para>
<para>Es necesario que cada puerto serie tenga una IRQ
única (salvo que use una tarjeta multipuerto que
permita compartir interrupciones), así que las
IRQ de <devicename>COM3</devicename> y de
<devicename>COM4</devicename> no se pueden
utilizar.</para>
</note>
<programlisting># Parallel port
device ppc</programlisting>
<para>El interfaz del puerto paralelo de bus ISA.</para>
<programlisting>device ppbus # Parallel port bus (required)</programlisting>
<para>El bus del puerto paralelo.</para>
<programlisting>device lpt # Printer</programlisting>
<para>Permite usar el puerto paralelo para conectar impresoras.</para>
<note>
<para>Necesitará disponer de los tres anteriores para
poder utilizar impresoras mediante el puerto paralelo.</para>
</note>
<programlisting>device plip # TCP/IP over parallel</programlisting>
<para>Este controlador es para la interfaz de red a través
del puerto paralelo.</para>
<programlisting>device ppi # Parallel port interface device</programlisting>
<para>La E/S de propósito general (conocida
también como <quote>puerto geek</quote>) + E/S
IEEE1284.</para>
<programlisting>#device vpo # Requires scbus and da</programlisting>
<indexterm><primary>zip drive</primary></indexterm>
<para>Este dispositivo se usa con unidades Iomega Zip. Necesita
<literal>scbus</literal> y <literal>da</literal> . El mejor
rendimiento se alcanza con el uso de los puertos en modo
EPP 1.9.</para>
<programlisting>#device puc</programlisting>
<para>Puede utilizar este dispositivo si tiene una tarjeta
PCI <quote>tonta</quote> (por puerto serie o paralelo)
que funcione mediante el controlador &man.puc.4;.</para>
<programlisting># PCI Ethernet NICs.
device de # DEC/Intel DC21x4x (<quote>Tulip</quote>)
device em # Intel PRO/1000 adapter Gigabit Ethernet Card
device ixgb # Intel PRO/10GbE Ethernet Card
device txp # 3Com 3cR990 (<quote>Typhoon</quote>)
device vx # 3Com 3c590, 3c595 (<quote>Vortex</quote>)</programlisting>
<para>Diversos controladores para tarjetas de red PCI. Puede borrar
todas las que no estén en su sistema.</para>
<programlisting># PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device miibus # MII bus support</programlisting>
<para>El poder utilizar bus MII es necesario para ciertas tarjetas
Ethernet PCI 10/100, más concretamente las que usan
transceptores compatibles con MII o implementan interfaces
de control de transceptores que funcionan como si fueran
MII. Si incluye <literal>device miibus</literal> al kernel
dispondrá de la API miibus genérica y todos los
controladores PHY, incluyendo uno que hará funcionar
hardware que, siendo del tipo PHY, no está bajo ninguno
de los controladores PHY específicos.</para>
<programlisting>device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet
device bfe # Broadcom BCM440x 10/100 Ethernet
device bge # Broadcom BCM570xx Gigabit Ethernet
device dc # DEC/Intel 21143 and various workalikes
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device lge # Level 1 LXT1001 gigabit ethernet
device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet
device nge # NatSemi DP83820 gigabit ethernet
device nve # nVidia nForce MCP on-board Ethernet Networking
device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
device re # RealTek 8139C+/8169/8169S/8110S
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (<quote>Starfire</quote>)
device sis # Silicon Integrated Systems SiS 900/SiS 7016
device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
device ste # Sundance ST201 (D-Link DFE-550TX)
device stge # Sundance/Tamarack TC9021 gigabit Ethernet
device ti # Alteon Networks Tigon I/II gigabit Ethernet
device tl # Texas Instruments ThunderLAN
device tx # SMC EtherPower II (83c170 <quote>EPIC</quote>)
device vge # VIA VT612x gigabit ethernet
device vr # VIA Rhine, Rhine II
device wb # Winbond W89C840F
device xl # 3Com 3c90x (<quote>Boomerang</quote>, <quote>Cyclone</quote>)</programlisting>
<para>Controladores que utilizan el código del controlador
de bus MII.</para>
<programlisting># ISA Ethernet NICs. pccard NICs included.
device cs # Crystal Semiconductor CS89x0 NIC
# 'device ed' requires 'device miibus'
device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
device ex # Intel EtherExpress Pro/10 and Pro/10+
device ep # Etherlink III based cards
device fe # Fujitsu MB8696x based cards
device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc.
device lnc # NE2100, NE32-VL Lance Ethernet cards
device sn # SMC's 9000 series of Ethernet chips
device xe # Xircom pccard Ethernet
# ISA devices that use the old ISA shims
#device le</programlisting>
<para>Controladores Ethernet ISA. Consulte
<filename>/usr/src/sys/<replaceable>i386</replaceable>/conf/NOTES</filename>
para más detalles sobre qué tarjetas hace funcionar
qué controlador.</para>
<programlisting># Wireless NIC cards
device wlan # 802.11 support</programlisting>
<para>802.11 genérico. Necesitará esta línea
si va a usar redes inalámbricas.</para>
<programlisting>device wlan_wep # 802.11 WEP support
device wlan_ccmp # 802.11 CCMP support
device wlan_tkip # 802.11 TKIP support</programlisting>
<para>Criptografía en dispositivos 802.11. Necesita
estas líneas si quiere utilizar criptografía
y protocolos de seguridad 802.11.</para>
<programlisting>device an # Aironet 4500/4800 802.11 wireless NICs.
device ath # Atheros pci/cardbus NIC's
device ath_hal # Atheros HAL (Hardware Access Layer)
device ath_rate_sample # SampleRate tx rate control for ath
device awi # BayStack 660 and others
device ral # Ralink Technology RT2500 wireless NICs.
device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
#device wl # Older non 802.11 Wavelan wireless NIC.</programlisting>
<para>Diversas tarjetas inalámbricas.</para>
<programlisting># Pseudo devices
device loop # Network loopback</programlisting>
<para>El dispositivo de «loopback» para
TCP/IP. Si accede por telnet o FTP
or FTP to <hostid>localhost</hostid> también
conocido como <hostid
role="ipaddr">127.0.0.1</hostid>) lo hará a
través de este dispositivo. Es
<emphasis>imprescindible</emphasis> tenerlo en el
sistema.</para>
<programlisting>device random # Entropy device</programlisting>
<para>Generador de números criptográficamente
seguro.</para>
<programlisting>device ether # Ethernet support</programlisting>
<para><literal>ether</literal> solo es necesario si tiene
alguna tarjeta Ethernet. Incluye código
genérico del protocolo Ethernet.</para>
<programlisting>device sl # Kernel SLIP</programlisting>
<para><literal>sl</literal> permite utilizar SLIP. Ha sido
sustituido casi totalmente por PPP, que es más
fácil de usar, está mejor capacitado para
la conexión de módem a módem y es,
en general, claramente mejor.</para>
<programlisting>device ppp # Kernel PPP</programlisting>
<para>Este dispositivo incluye en el kernel la capacidad de
gestionar conexiones de llamada entrante
«dial-up». Hay también una versión
de PPP implementada como aplicación de usuario; utiliza
<literal>tun</literal> y ofrece más flexibilidad y
características como la llamada bajo
petición.</para>
<programlisting>device tun # Packet tunnel.</programlisting>
<para>Este dispositivo lo usa el software PPP de usuario.
Consulte la sección sobre
<link linkend="userppp">PPP</link> de este mismo libro.</para>
<programlisting><anchor id="kernelconfig-ptys">
device pty # Pseudo-ttys (telnet etc)</programlisting>
<para>Este dispositivo es una <quote>pseudoterminal</quote>,
o un puerto de entrada al sistema simulado. Se usa en
sesiones entrantes de <command>telnet</command> y
<command>rlogin</command>; también lo usan
<application>xterm</application> y otras aplicaciones, entre
las que encontramos a <application>Emacs</application>.</para>
<programlisting>device md # Memory <quote>disks</quote></programlisting>
<para>Pseudodispositivos de disco basados en memoria.</para>
<programlisting>device gif # IPv6 and IPv4 tunneling</programlisting>
<para>Este dispositivo implementa túneles de IPv6
sobre IPv4, IPv4 sobre IPv6, IPv4 sobre IPv4 e
IPv6 sobre IPv6. El dispositivo
<literal>gif</literal> se puede clonar a sí mismo,
así que los nodos de dispositivo se van creando a
medida que van haciendo falta.</para>
<programlisting>device faith # IPv6-to-IPv4 relaying (translation)</programlisting>
<para>Este pseudodispositivo captura paquetes que se le
hayan enviado y los dirige hacia el dæmon de
traducción IPv4/IPv6.</para>
<programlisting># The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device bpf # Berkeley packet filter</programlisting>
<para>El filtro de paquetes de Berkeley. Este pseudodispositivo
permite poner interfaces de red en modo promíscuo, lo que
significa que capturan todos los paquetes que circulen por una
red broadcast (por ejemplo una Ethernet). Dichos paquetes
pueden guardarse en disco para su posterior examen mediante
&man.tcpdump.1; (el análisis con &man.tcpdump.1; no
puede hacerse directamente también).</para>
<note>
<para>El dispositivo &man.bpf.4; también lo usa
&man.dhclient.8; para obtener direcciones IP del
encaminador (gateway) por omisión. Si usa
DHCP deje esta opción como está.</para>
</note>
<programlisting># USB support
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device ehci # EHCI PCI->USB interface (USB 2.0)
device usb # USB Bus (required)
#device udbp # USB Double Bulk Pipe devices
device ugen # Generic
device uhid # <quote>Human Interface Devices</quote>
device ukbd # Keyboard
device ulpt # Printer
device umass # Disks/Mass storage - Requires scbus and da
device ums # Mouse
device ural # Ralink Technology RT2500USB wireless NICs
device urio # Diamond Rio 500 MP3 player
device uscanner # Scanners
# USB Ethernet, requires mii
device aue # ADMtek USB Ethernet
device axe # ASIX Electronics USB Ethernet
device cdce # Generic USB over Ethernet
device cue # CATC USB Ethernet
device kue # Kawasaki LSI USB Ethernet
device rue # RealTek RTL8150 USB Ethernet</programlisting>
<para>Diversos dispositivos USB.</para>
<programlisting># FireWire support
device firewire # FireWire bus code
device sbp # SCSI over FireWire (Requires scbus and da)
device fwe # Ethernet over FireWire (non-standard!)</programlisting>
<para>Diversos dispositivos Firewire.</para>
<para>Tiene más información y una lista
con más dispositivos que funcionan en &os;
consulte
<filename>/usr/src/sys/<replaceable>i386</replaceable>/conf/NOTES</filename>.</para>
<sect2>
<title>Configuraciones con grandes cantidades de memoria
(<acronym>PAE</acronym>)</title>
<indexterm>
<primary>Physical Address Extensions
(<acronym>PAE</acronym>)</primary>
<secondary>large memory</secondary>
</indexterm>
<para>Las máquinas que tienen configuraciones
con grandes cantidades de memoria necesitan acceder
a más de 4 gigabytes de espacio de direcciones
<acronym>KVA</acronym> (User+Kernel Virtual
Address). Debido a esta limitación Intel
añadió a las CPU &pentium; Pro y modelos
posteriores la posibilidad de acceso al espacio de
direcciones físicas de 36 bits.</para>
<para><acronym>PAE</acronym> (Physical Address Extension)
a las CPU &intel; &pentium; Pro y los modelos posteriores
configuraciones de memoria de hasta 64 gigabytes.
Para poder aprovechar esto en &os; existe la
opción del kernel
<option>PAE</option>, disponible en todas las versiones
modernas de &os;. A causa de esta limitación de
memoria en los Intel no hay nada que distinga de
algún modo la memoria situada por debajo del
límite de los 4 gigabytes. La memoria que
esté por encima de los 4 gigabytes se coloca
en el «pool» de memoria disponible.</para>
<para>Si quiere activar <acronym>PAE</acronym> en el kernel
tiene que añadir la siguiente liínea al
fichero de configuración del kernel:</para>
<programlisting>options PAE</programlisting>
<note>
<para>En &os; <acronym>PAE</acronym> solamente existe
en procesadores &intel; IA-32. Hemos de advertirle
de que <acronym>PAE</acronym> no ha sido probado
todo lo necesario, así que debe considerarse
de calidad beta, sobre todo si se le compara con
otras características de &os;.</para>
</note>
<para><acronym>PAE</acronym> en &os; tiene varias
limitaciones:</para>
<itemizedlist>
<listitem>
<para>Un solo proceso no puede acceder a más
de 4 gigabytes de espacio VM.</para>
</listitem>
<listitem>
<para>No puede cargar módulos
<acronym>KLD</acronym> en un kernel que tenga
<acronym>PAE</acronym> activado debido a las diferencias
existentes entre el «framework» de
compilación del módulo y el del
kernel mismo.</para>
</listitem>
<listitem>
<para>Los controladores de dispositivo que utilizan
el interfaz &man.bus.dma.9; pueden provocar
corrupción de datos en un kernel con
<acronym>PAE</acronym> activado, una excelente
razón para no utilizarlos. Esta es
la razón de que &os; incorpore un fichero
de configuración de un kernel
<filename>PAE</filename> del que se han
extraído todos los módulos que
se sabe que no funcionan en un kernel con
<acronym>PAE</acronym> activado.</para>
</listitem>
<listitem>
<para>Algunos «system tunables» determinan el
uso de recursos de memoria basándose en la
memoria física disponible. Estos «tunables»
pueden asignar más memoria de la que realmente
debieran debido a que el sistema <acronym>PAE</acronym>
está íntimamente ligado a cantidades
bastante importantes de memoria. Un ejemplo de esto
es la sysctl <option>kern.maxvnodes</option>, que
controla el número máximo de vnodes
permitidos en el kernel. Le recomendamos que
ajuste este y otros tunables dentro valores
razonables.</para>
</listitem>
<listitem>
<para>Es posible que tenga que aumentar el espacio virtual
de direcciones del kernel (el <acronym>KVA</acronym>)
o reducir la cantidad de recursos exclusivos del kernel
que se utilicen exhaustivamente (ver más
arriba) para evitar que <acronym>KVA</acronym> literalmente
se ahogue. La opción del kernel
<option>KVA_PAGES</option> permite incrementar el
espacio <acronym>KVA</acronym>.</para>
</listitem>
</itemizedlist>
<para>Si quiere saber más sobre la estabilidad
del sistema consulte la página de manual de
&man.tuning.7;. La página de manual de &man.pae.4;
contiene información actualizada sobre
<acronym>PAE</acronym> y &os;.</para>
</sect2>
</sect1>
<sect1 id="kernelconfig-trouble">
<title>Qué hacer si algo va mal</title>
<para>Hay cuatro categorías de problemas que
podemos encontrarnos en el proceso de compilación
de un kernel personalizado:</para>
<variablelist>
<varlistentry>
<term>Fallo de <command>config</command>:</term>
<listitem>
<para>Si &man.config.8; falla cuando le pasa la
descripción de su kernel seguramente ha
cometido algún pequeño error. Por
suerte &man.config.8; les mostrará el
número de la línea que le está
dando problemas, así que no tendrá
mayor problema para localizarla. Veamos un
ejemplo:</para>
<screen>config: line 17: syntax error</screen>
<para>Si ve algo así asegúrese de que
ha tecleado la palabra clave que hay en esa
lína. Compare la de su fichero de
configuración del kernel con la de
<filename>GENERIC</filename>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Fallo de <command>make</command>:</term>
<listitem>
<para>If the <command>make</command> command fails, it usually
signals an error in your kernel description which is not severe
enough for &man.config.8; to catch. Again, look
over your configuration, and if you still cannot resolve the
problem, send mail to the &a.questions; with your kernel
configuration, and it should be diagnosed quickly.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>El kernel no arranca:<anchor
id="kernelconfig-noboot"></term>
<listitem>
<para>Si su nuevo kernel no arranca o no reconoce sus
dispositivos de hardware no desespere. &os;
dispone de excelentes mecanismos de
recuperación ante kernels defectuosos. Elija
el kernel con el que quiere arrancar en el gestor
de arranque de &os;. Puede acceder al gestor de
arranque en el momento en el que aparece el
menú de arranque. Elija la opción
número seis, <quote>Escape to a loader
prompt</quote> option, Escriba en el prompt
<command>unload kernel</command>
y después escriba
<command>boot /boot/<replaceable>kernel.old</replaceable>/kernel</command>,
o el nombre de cualquier otro kernel que tenga en el sistema
y del que sepa que puede fiarse. Si va a reconfigurar un
kernel es una buenísima idea guardar un kernel
que sepa que funciona.</para>
<para>Tras arrancar con un kernel de fiar verifique el
fichero de configuración e intente de nuevo
una compilación. El fichero
<filename>/var/log/messages</filename> es una fuente de
información muy valiosa puesto que registra, entre
otras cosas, todos los mensajes que deja el kernel cada
vez que hay un arranque satisfactorio. &man.dmesg.8;
le mostrará los mensajes que el kernel ha
generado durante el último arranque.</para>
<note>
<para>Si tiene problemas compilando un kernel recuerde que
es de vital importancia que guarde una copia de un kernel
<filename>GENERIC</filename> u otro del que pueda fiarse
y que (esto es muy importante) tenga un nombre distinto de
<filename>kernel.old</filename> para evitar que el sistema
lo borre una vez que termine una nueva
compilación. No puede confiar en su kernel
<filename>kernel.old</filename> porque al instalar un nuevo
kernel (que aún no sabe si será el que
funcione tal y como espera de él) el kernel
<filename>kernel.old</filename> se sobreescribe con el
kernel que instale. Otra cosa importante es que copie
ese kernel de fiar a
<filename class="directory">/boot/kernel</filename>, o
ciertas herramientas como &man.ps.1; no
funcionarán. Basta con que haga lo
siguiente:</para>
<screen>&prompt.root; <userinput>mv /boot/kernel <replaceable>/boot/kernel.malo</replaceable></userinput>
&prompt.root; <userinput>mv /boot/<replaceable>kernel.bueno</replaceable> /boot/kernel</userinput></screen>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>El kernel funciona, pero &man.ps.1; no:</term>
<listitem>
<para>Si el kernel que tiene instalado es de una
versión de &os; y las utilidades del sistema
son de otra, por ejemplo un kernel -CURRENT en una
-RELEASE, hay muchas herramientas de monitorización
del sistema como &man.ps.1; y &man.vmstat.8; no
funcionarán.
Ejecute un <link linkend="makeworld">make buildworld y un
make install world</link> con la misma versión de
código fuente con la que ha compilado su
kernel. Esta es una de las razones por las que no
es una idea demasiado buena utilizar versiones
diferentes de kernel y de sistema operativo.</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../book.sgml" "part" "chapter")
End:
-->
|