|-----------------------------------------------------------------------------------------------|
|                                       Compilando Kernel                                       |
|-----------------------------------------------------------------------------------------------|
| 03-02-2003 |                                                                       | Cuantico |
|-----------------------------------------------------------------------------------------------|
|                            _____ ___ _   _   _____     _                                      |
|                           |  ___|_ _| | | | | ____|___(_)_ __   ___                           |
|                           | |_   | || |_| | |  _| |_  / | '_ \ / _ \                          |
|                           |  _|  | ||  _  | | |___ / /| | | | |  __/                          |
|                           |_|   |___|_| |_| |_____/___|_|_| |_|\___|                          |
|                                   cuantico@orangemail.com.do                                  |
|                                                                                               |
|-----------------------------------------------------------------------------------------------|


	Bueno, a travez de todas las luchas que he cogido con mi
linux (no es q sea dificil),  pero  al  tener un winmodem, mas
si  es  pctel, se daran cuenta de la tremenda lucha q se coje,
en fin he aprendido bastante.

	Es una de las cosas primordiales,  que  todos ustedes al
iniciarse  y  los  iniciados  ya  deben de  saber.. Claro como
compilar el linux.

	Primero que todo tu linux (cualquiera q tengas instalado),
trae la maginifica opcion de  que  tu mismo puedas compilar tu
kernel  ( nucleo de linux ), y asi acomodarlo  a  tus  propias
necesidades (hardware, etc :P),  ya que al instalar tu sistema
operativo, ya lo trae preocompilado por  supuesto.  pero tiene
un "pero", y es que viene con las  configuraciones mas comunes,
muchas veces te detecta la tarjeta de sonido, y no  se escucha,
pero entonces debe activar su soporte en  la  configuracion del
kernel (solo un ejemplo, para que me entiendas)

	A compilar!!, por pasos...

	Abre tu consola y has lo siguiente.
(claro lo que  esta luego  del "[cuantico@localhost cuantico]")
[cuantico@localhost cuantico] cd /usr/src/linux

	Si  al  hacer  esto te  dice que  no se encuentra ningun
directorio con tal nombre, resulta que este no esta creado, lo
creas de la siguiente manera:

	Claro  debes  pasarte a root antes, tecleando la palabra
"su":

[cuantico@localhost cuantico] su
Password: *************

ahi:
[cuantico@localhost src] md linux
(para crear el directorio)

	Ya  esta  creado  el  directorio,  pero al ser nuevo, si
entras  a el te daras cuenta que esta vaco (compruebalo, "dir
linux"), necesitamos "linkearlo" (enlazarlo), al directorio de
tu linux precompilado (o ya compilado), que debe ser algo como:
/usr/src/linux-2.4.18  (no  tiene que ser asi, el 2.4.18 es la
version del tuyo, por lo que no es seguro q sea el mismo),  en
fin, lo que tienes q hacer para enlazarlo es:

[cuantico@localhost src] ln -s /usr/src/linux-VERSION-DEL-TUYO 
/usr/src/linux

Aca ya podes revisar que funciona tecleando:

[cuantico@localhost src] dir linux

Bien?, sigamos... Ahora pasamos a teclear:

[cuantico@localhost src] cd linux

	Ya aqui, podemos elegir  una  de  tres  formas  la  cual
queremos configurar el kernel  para  luego  compilarlo,  estas
tres formas son con:
make config, Este es todo en modo texto, eres newbie, no te lo
recomiendo..
make menuconfig, este, es un poquitin mas  facil, pero tampoco
lo recomiendo a newbies (no es modo grafico).
y make xconfig,  este  es  el  que  si  te  recomiendo,  pq se
configura todo en modo grafico (botones, checks, etc).

Bien tecleas:

[cuantico@localhost linux] make xconfig

	Te aparece el dialogo, lo configuras todo a  tu gusto y
necesidades. Luego ya hallas configurado  todo,  presionas el
boton llamado  Save & Exit... Te aparecera un dialogo diciendo
que debes teclear make dep, claro lo haces:

[cuantico@localhost linux] make dep
(crea  las DEPendencias necesarias para poder compilar nuestro
(tuyo solo :P), kernel)

Cuando todo termine continuamos ejecutando:

[cuantico@localhost linux] make clean
(esto  borra  los posibles binarios que ya hallan sido creados
por  otra  compilacion,  y  asi  solo trabajar con los nuevos).

Luego pasamos a crear la imagen con:

[cuantico@localhost linux] make bzImage

	Esto lo compila, y cre una imagen en "/usr/src/linux/arch/i386/boot"
(en vez de i386, puede ser 686  u  otro  ojo  en eso, es  otro
tema). Y esa imagen es la que nos ayudara a arrancar el equipo
con  el  nuevo  kernel q compilamos. Todo  esto  puede  tardar
severeos minutos, asi que mientras tanto vete a la cocina y me
preparas un sandwiche.

	Ahora, solo  te  falta  instalar los  modulos, (si no lo
haces  te  har  falta  un  famoso modversions.h que jode), lo
haremos ejecutando:

[cuantico@localhost linux] make modules

Luego que termine de crear estos modulos.. pasas a ejecutar:

[cuantico@localhost linux] make modules_install

	Esto instala los modulos en "/lib/modules/linux-VERSION-DEL-TUYO",
tambien tarda bastante :P....

	Ahora  que  crees,  nos  vamos  a  la  parte  del  mayor
suspenso, ARRANCAR  CON  EL  NUEVO  KERNEL. Para  esto hay dos
formas, una es editando el lilo LInux LOader, osea cargador de
linux), y la  otra  creando  un  disco  de arranque, la que te
recomiendo  es  editando  el  lilo, que es la unica q he usado,
pero all tus necesidades

Para arrancar con el LInux LOader (lilo), empecemos:

	Lo primero es que debemos copiar la imagen al directorio
de /boot, lo hacemos con:

[cuantico@localhost linux]  cp /usr/src/linux/arch/i386/boot/bzImage /boot
(recuerda donde dice i386, puede ser i686 u otro,  solo revisa
bien el tipo de procesador que tengas configurado)

	Ahora nos dirigimos al directorio  boot  y  cambiamos el
nombre a la imagen, asi:

>>Como la seguridad ante todo, haz una copia de seguridad del
/boot/system.map :)

[cuantico@localhost linux] cd /boot
[cuantico@localhost boot] mv bzImage vmlinuz-VERSION-DEL-TUYO
(como  se  nota  le  hemos  cambiado  el  nombre de bzImage a
vmlinuz-VERSION-DEL-TUYO, ejemplo: vmlinux-2.4.18)

	Seguro te preguntara  que  si  deseas  sobreescribir el
archivo, y desde luego le das que si (yes o oui, depen de  tu
idioma :P).

	Ahora  vamos  a  configurar  el  lilo,  etidanto     el
/etc/lilo.conf con un  editor de texto te  recomiendo  el  vi,
asi:
[cuantico@localhost boot] vi /etc/lilo.conf

Copia la siguiente linea al archivo:
---aqui empieza (solo copia la linea de abajo)----
image=/boot/vmlinuz-VERSION-DEL-TUYO label=linux-VERSION-DEL-TUYO 
root=/dev/hda1
----aqui termina (solo copia la linea de arriba)----

(recuerda siempre cambiar las  letras "VERSION-DEL-TUYO", por
la  version  de  tu  kernel,  para  ver cual version, escribi
"uname -a").
- hda1  es  donde  tengo mi linux instalado, para saber donde
tienes  tu  linux  instalado  revisalo  con  el comando de df

[cuantico@localhost boot] df
Debe salir algo como:
Filesystem Size Used Avail Use% Mounted on ||
/dev/hda1 9.97G 1.3G 7.4G 24% /

Ahi notas que yo lo tengo instalado en hda1...

	Bueno Salvamos y salimos con esc, :w y :q ...
en la consola tipeas

[cuantico@localhost boot] lilo
(debe salir algo como "Added linux-VERSION-DEL-TUYO)

	Bien ahora reiniciamos tu cafetera, y cuando nos  salga
el lilo, debe de salir algo como:
linux-VERSION-DEL-TUYO

	Si quieres poner que este se arranque  por  defecto (lo
digo ahora,  despues  que  compruebes  que  todo  corre bien),
debes editar la linea default=* por algo como default=linux-VERSION-DEL-TUYO 
.

	Para iniciar desde el diskete, es algo mas facil :P...

	Debes buscar un diskete  formateado.  Para  formatearlo
solo debes de teclear el comando fdformat /dev/fd0 o solo dar
un click derecho al icono del floppy en tu escritorio  (si lo
tienes), y buscar donde dice Formatear...

Luego para crear el diskette de inicio hacemos:
[cuantico@localhost home] cd /usr/src/linux
[cuantico@localhost linux]  mkbootdisk
(Sigues los pasos configuras y listo)



Parcheando tu kernel --------------->

Sigue los pasos

[cuantico@localhost home] cd /usr/src/linux
[cuantico@localhost linux] make clean

	Copia los patchs q te has  descargados  (www.kernel.org)
al directorio /usr/src ...

	Antes que todo (seguridad  ante  todo :P),  hagamos  una
copia  de  seguridad  del  actual  kernel  compilado, para esto
escribamos:

[cuantico@localhost linux] cd ..
[cuantico@localhost src] tar cvfz copia-de-seguridad.tar.gz linux
[cuantico@localhost linux] zcat patch-2.0.xx.gz | patch -p0 -s

patch-2.0.xx.gz es tu patch
se puede meter todos los patchs que se quiera OJO,
correlativamente.. como?
osea, si tienes tu kernel 2.4.14 y lo quieres llevar a 2.4.20
tienes que bajarte los patchs:
patch-2.4.15
patch-2.4.16
patch-2.4.17
etc....

	Tendras que  hacer  lo  del  zcat  con  cada uno de los
patches  uff  suerte  q  no tengas la 2.4.2 :P. Como creo que
notaste, el ultimo numero es que dice el  ultimo  patch de tu
kernel... :)
----

	Hay otra forma de parchear tu kernnel, que es usando un
script que ya viene incluido en tu linux.  En  el  directorio
/usr/src/linux/scripts/, se llama patch-kernel.

	Si no  tiene  atributo  de  ejecutable, solo tienes que
drselo con la orden:
[cuantico@localhost linux] chmod +x scripts/patch-kernel

	Tieness que  copiar  todos  los  parches  al directorio
/usr/src/linux/ y desde ah ejecutar el script de la siguiente
forma:

[cuantico@localhost linux] cd /usr/src/linux
[cuantico@localhost linux] ./scripts/patch-kernel

	Y el  mismo script cojera todos los parches por si solo
(mas facil, haragn xD). Comprueba si ha quedado algn fichero
con  extensin  ".rej". Si lo hay quiere  decir  que  paso  un
problema, ves.. para casos como estos  es  que  necesitamos la
copia de seguridad que te dije q hiciera antes.. si la hiciste
felicidades..

Si todo va bien, limpiamos.

[cuantico@localhost linux]  find . -name '*.rej' -print
[cuantico@localhost linux]  find . -name '*.orig' -print -exec rm {} \;
[cuantico@localhost linux]  make clean

empieza otra vez... un saludo


Toda critica y coolaboracion es bien recivida... :)
Tambien podes hacer con este texto lo que te venga en ganas...

Texto escrito para el numero dos de la revista electronica FIH.


****************
Escrito por: Cuantico
Mail: cuantico@orangemail.com.do
Web: www.elhacker.info
****************
