# Kernel y CXXFLAGS

## CiScOh4x0r

Hola, bueno, soy nuevo utilizando gentoo, lo había utilizado un par de veces pero no muy completamente, así que he decidido hacerlo ahora, 

lo he instalado desde su instalación minima, amd64, si, bien, pues no me fije que el kernel traia el soporte para mi tarjeta de red inalambrica, hasta ahora... He estado intentado recompilarlo, el problema, es que no recuerdo muy bien, pero no es similar a como lo hice la primera vez cuando use el cd minimal, porque sino recuerdo mal, hay que copiar el archivo system.map, y no tengo muy buena  la idea de como hacerlo, si me pudiesen guiar.. 

el problema en si, es que, cuando copie la imagen bzImage, la primera vez, con el cd minimal, me salia "arch /x86_64" , ahora, me sale "arch/x86/" ¿por qué? ¿ no deberia ser igual? al menos esa es mi duda, y una pequeña ayuda no estaría mal.   :Embarassed: 

Por otro lado, tengo una duda con los CXXFLAGS, ya que en el me salia asi: CXXFLAGS= -02 -pipe

y según vi en el handbook era así: CXXFLAGS="${CFLAGS}"

¿debo cambiarlas? ¿o las dejo como quedarón?

----------

## the incredible hurd

 *CiScOh4x0r wrote:*   

> el problema en si, es que, cuando copie la imagen bzImage, la primera vez, con el cd minimal, me salia "arch /x86_64" , ahora, me sale "arch/x86/" ¿por qué? ¿ no deberia ser igual? al menos esa es mi duda, y una pequeña ayuda no estaría mal.

 

```

emerge genkernel

genkernel --mountboot --menuconfig all

```

Todo en un solo paso, selecciona el adecuado en Processor Type and Features

 *CiScOh4x0r wrote:*   

> Por otro lado, tengo una duda con los CXXFLAGS, ya que en el me salia asi: CXXFLAGS= -02 -pipe
> 
> y según vi en el handbook era así: CXXFLAGS="${CFLAGS}"
> 
> ¿debo cambiarlas? ¿o las dejo como quedarón?

 

Pega tu /etc/make.conf

y además, el resultado de

```
emerge --info
```

De lo contrario va a ser muy difícil ayudarte.

----------

## esteban_conde

 *Quote:*   

> ahora, me sale "arch/x86/" ¿por qué?

 

Seguramente has usado un CD para x86 en vez de x86_64.

Compruebalo antes de seguir.

----------

## CiScOh4x0r

Hola,   :Very Happy:   he logrado solucionar el problema, de re-compilar mi kernel, nada más, que sigo con la misma duda del "x86" con "x86_64", no sé, asumo que quizá soy yo   :Smile:  a menos que me digan ustedes lo contrario... Y no, no, he usado el cd minimal para AMD64, estoy seguro, nada más, que cada vez que terminaba de agregar los modulos que me hacian falta y lo compilaba, me tiraba el resultado de que se encontraba en "arch/x86/bzImage" cuando, al principio lo había copiado de "arch/x86_64/bzImage" es por eso mi confusión, no sé si estará bien... por otro lado, bien, lo que resulta es:

```
 emerge --info

Portage 2.1.4.5 (default/linux/amd64/2008.0, gcc-4.1.2, glibc-2.6.1-r0, 2.6.25-gentoo-r7 x86_64)

=================================================================

System uname: 2.6.25-gentoo-r7 x86_64 Intel(R) Core(TM)2 CPU 4300 @ 1.80GHz

Timestamp of tree: Sun, 09 Nov 2008 23:45:01 +0000

app-shells/bash:     3.2_p33

dev-lang/python:     2.4.4-r13, 2.5.2-r7

dev-python/pycrypto: 2.0.1-r6

dev-util/cmake:      2.4.6-r1

sys-apps/baselayout: 1.12.11.1

sys-apps/sandbox:    1.2.18.1-r2

sys-devel/autoconf:  2.13, 2.61-r2

sys-devel/automake:  1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.1-r1

sys-devel/binutils:  2.18-r3

sys-devel/gcc-config: 1.4.0-r4

sys-devel/libtool:   1.5.26

virtual/os-headers:  2.6.23-r3

ACCEPT_KEYWORDS="amd64"

CBUILD="x86_64-pc-linux-gnu"

CFLAGS="-march=nocona -O2 -pipe"

CHOST="x86_64-pc-linux-gnu"

CONFIG_PROTECT="/etc"

CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/revdep-rebuild /etc/terminfo /etc/udev/rules.d"

CXXFLAGS="-march=nocona -O2 -pipe"

DISTDIR="/usr/portage/distfiles"

FEATURES="distlocks metadata-transfer sandbox sfperms strict unmerge-orphans userfetch"

GENTOO_MIRRORS="http://www.las.ic.unicamp.br/pub/gentoo/ "

LANG="C"

LDFLAGS="-Wl,-O1"

MAKEOPTS="-j3"

PKGDIR="/usr/portage/packages"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

SYNC="rsync://rsync.samerica.gentoo.org/gentoo-portage"

USE="X aac acl alsa amd64 berkdb bzip2 cairo cdr cli cracklib crypt cups dbus dri dvd dvdr fortran gdbm gnome gpm gtk hal iconv ipv6 isdnlog midi mmx mudflap multilib ncurses nls nptl nptlonly openmp pam pcre perl pppd python readline reflection session spl sse sse2 ssl sysfs tcpd unicode xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" USERLAND="GNU" VIDEO_CARDS="fbdev glint i810 intel mach64 mga neomagic nv r128 radeon savage sis tdfx trident vesa vga via vmware voodoo"

Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY

```

----------

## esteban_conde

 *Quote:*   

> CXXFLAGS="-march=nocona -O2 -pipe" 

 

CXXFLAGS="${CFLAGS }"

Si no lo cambias en algun momento tendras errores de compilacion, aparte de los warnigs que obtendras del compilador cada dos por tres al emerger algo.

----------

## ekz

El kernel, en el cambio de .23 a .24 ahora considera a x86 y x86_64 como una sola (o algo así), la cosa es que ahora es normal que el bzimage y otras configuraciones esten dentro del directorio x86.

 *http://pulpa.utp.edu.co/news/Lo-que-traera-el-kernel-2.6.24 wrote:*   

> Reunificación x86-32 y x86-64: Ya no hay arch/i386 y arch/x86_64, hay arch/x86 (aunque se conservan algunos enlaces simbólicos por compatibilidad). En realidad buena parte del código sigue sin compartirse; se han movido todos los archivos a un mismo directorio añadiendo sufijo “_32.c” y “_64.c”, la compartición de código se va haciendo lentamente.

 

Saludos

----------

## CiScOh4x0r

Muchas gracias por sus respuestas   :Very Happy:   he logrado recompilar mi kernel, y todo lo demás... también agradezco a ekz, por su amabilidad con la información del kernel, ya tenia esa duda! que no me dejaba descansar en paz   :Laughing:  ... y ya cambie mis CXXFLAGS, por "CXXFLAGS="${CFLAGS}"   :Very Happy:  gracias por los datos y respuestas a todos

----------

## gringo

 *Quote:*   

> El kernel, en el cambio de .23 a .24 ahora considera a x86 y x86_64 como una sola (o algo así), la cosa es que ahora es normal que el bzimage y otras configuraciones esten dentro del directorio x86.

 

erm, no. Un kernel de 64 bits estará en arch/x86_64/boot. Si no os lo creéis probad vosotros mismos y compilad un kernel de 64 bits.

La unificación se ha hecho sobre todo para integrar en un único sitio cosas que estaban dispersas o duplicadas a lo largo de las fuentes, pero si compilas un kernel de 64 bits estará donde debe estar, en la carpeta de 64 bits.

saluetes

----------

## esteban_conde

 *gringo wrote:*   

> pero si compilas un kernel de 64 bits estará donde debe estar, en la carpeta de 64 bits.

 

La verdad es que me he quedado en el 2.6.20 pero en su dia me al emerger un paquete me bajo el 2.6.25, para ver si era cierto lo que se dice arriba entre en el directorio de ese kernel y efectivamente no esta creada la carpeta x86_64, si es cierto lo que dices al compilar deberia crearla y la verdad es que no se si lo hara.

En su dia si cambio de chino estare con el ojo puesto por si acaso.

----------

## gringo

 *Quote:*   

> entre en el directorio de ese kernel y efectivamente no esta creada la carpeta x86_64, si es cierto lo que dices al compilar deberia crearla y la verdad es que no se si lo hara. 

 

pues ni idea, no me he parao a mirarlo nunca, lo que si sé es que cuando compilo un kernel para mi máquina tengo que copiar el bzImage desde arch/x86_64/boot, en su homólgo x86 no hay nada ( esto si que lo miré en momento). En powerpc pasa algo similar por lo que tengo entendido, las imágenes de 64 y 32 bits tienen carpetas distintas.

saluetes  :Wink: 

----------

## CiScOh4x0r

No entiendo, es raro... Pero, yo asumi, haber compilado uno, para que saliera en la carpeta de /x86_64, misteriosamente, o quizá por algún error, me sale en /x86 nada más... ¿Es correcto? O deberia pasar como lo has dicho?   :Confused: 

----------

## esteban_conde

Copia bzImage y mira a ver si arranca la distro con el, me inclino a pensar que los han unificado.

----------

## gringo

 *Quote:*   

> No entiendo, es raro... Pero, yo asumi, haber compilado uno, para que saliera en la carpeta de /x86_64, misteriosamente, o quizá por algún error, me sale en /x86 nada más... ¿Es correcto? O deberia pasar como lo has dicho? 

 

.config del kernel pls.  Si puedes no lo pegues aqui si no en algún servicio como pastebin o algo similar.

saluetes

----------

## esteban_conde

 *Quote:*   

> esteban@mimaquina ~ $ cd /usr/src/*25*
> 
> esteban@mimaquina /usr/src/linux-2.6.25-gentoo-r7 $ 
> 
> esteban@mimaquina /usr/src/linux-2.6.25-gentoo-r7 $ cd arch
> ...

 

A esto me referia el otro dia.

 *Quote:*   

> 
> 
> esteban@mimaquina /usr/src/linux-2.6.20-gentoo-r7 $ cd arch
> 
> esteban@mimaquina /usr/src/linux-2.6.20-gentoo-r7/arch $ ls
> ...

 

Se nota la ausencia en kernel-2.6.25 de arch/x86_64.

Por otro lado es cierto lo que se observa en otro post de este mismo hilo de ekz referente a archivos con el mismo nombre con dos versiones, una a 32 bits y otra a 64.

Lo cierto es que no he leido nada al respecto fuera de este post pero los listados parecen dar la razon a ekz.

----------

## gringo

 *Quote:*   

> Se nota la ausencia en kernel-2.6.25 de arch/x86_64

 

y tb. la ausencia de i386.

De cualquier manera, acabo de miralo en mi sistema. Lo hacen con enlaces simbólicos :

```
-->ls -la arch/x86_64/boot

total 8

drwxr-xr-x 2 root root 4096 oct  5 14:36 .

drwxr-xr-x 3 root root 4096 oct  5 14:36 ..

lrwxrwxrwx 1 root root   22 oct  5 14:36 bzImage -> ../../x86/boot/bzImage
```

una cosa que me intriga sin embargo :

```
-->file arch/x86/boot/bzImage 

arch/x86/boot/bzImage: Linux kernel x86 boot executable RO-rootFS, root_dev 0x906, swap_dev 0x1, Normal VGA
```

como se come esto ? siempre se compila un kernel de 32 bits entonces ?

kernel en ejecución : 2.6.28-rc4

saluetes

----------

## CiScOh4x0r

Hola, acabo de hacer otra instalación de gentoo en otra maquina, y efectivamente, ekz parece ser, alguna clase de unificación, ya que, me salio de la misma manera, arch/x86/bzImage , gracias por sacarme de la duda, ahora ya tengo todo solucionado...

entonces, sigue siendo un kernel de 64 bits, ¿no?   :Smile: 

yo estoy utilizando el kernel: 2.6.27-r2

----------

## ekz

Jeje, yo de verdad me cuestioné cuando pasé al kernel .24 (aún uso esta versión), en el blog de Stolz dejé constancia de ello, pero seguramente por los enlaces simbólicos que menciona gringo el proceso fue transparente y no le dí mayor importancia.

Cuando vi que CiScOh4x0r preguntaba por aquello, busqué en google un poco de información, ya que no fui capaz de explicarlo (aparte de que poco sabía).

Pero me intriga lo que plantea gringo sobre el kernel de 32bits, ¿y si fuera un sistema no-multilib, qué devolvería un file arch/x86/boot/bzImage? 

Creo que nunca nos conformaremos con que "simplemente funcione"   :Razz: 

Saludos a todos!

----------

## sirope

Mmmm.. Pes yo uso AMD64, y cuando compilo el kernel siempre me devolvió arch/x86/boot/bzImage, sin embargo x86_64 también está ahí y es ese el archivo que copio a /boot. Nunca me preocupo.. ¿Hay algún problema?

Kernel 2.6.25-gentoo-r7

saludos

----------

## gringo

lo de la unificación en x86 está claro, eso nadie lo ha discutido y está bien documentado.

Lo que me confunde es que la imágen del kenel generada en mi sistema parece ser de 32 bits aunque en la configuracion de mi kernel tenga CONFIG_X86_64=y. Pero por otra parte, para que el enlace si en total es de 32 bits ?

Una cosa interesante sería que alguien con un kernel viejo y una instalación multilib mirara que le dice file de su bzImage. 

 *Quote:*   

> Nunca me preocupo.. ¿Hay algún problema?

 

que tampoco te quite el sueño, seguramente se nos esté pasando algo obvio  :Razz: 

saluetes

----------

## esteban_conde

 *Quote:*   

> mimaquina boot # file bzImage
> 
> bzImage: Linux kernel x86 boot executable RO-rootFS, root_dev 0x306, swap_dev 0x2, Normal VGA
> 
> mimaquina boot # pwd
> ...

 

Pues ese es el resultado del kernel que veis arriba, como comente, antes no exitia x86_64 ahora lo ha creado y los resultados creo que son identicos a los de gringo, pues el bzImage de arch/x86_64/boot/ es un enlace al directorio x86.

El kernel no se si funciona, otro rato lo probare y si hay algo raro os lo cuento.

 *Quote:*   

> esteban@mimaquina /usr/src/linux-2.6.20-gentoo-r7/arch/x86_64/boot $ file bzImage
> 
> bzImage: Linux kernel x86 boot executable RO-rootFS, root_dev 0x306, swap_dev 0x1, Normal VGA
> 
> esteban@mimaquina /usr/src/linux-2.6.20-gentoo-r7/arch/x86_64/boot $ 
> ...

 

Creo que no cambia ni una silaba respecto al file bzImage del 25.

----------

## gringo

por si alguien le interesa el tema, he abierto este hilo -> https://forums.gentoo.org/viewtopic-t-715225.html

saluetes

----------

