Arch linux time! (parte 4 – misc: aplicable a otras distros)

Si bien, según yo ya había terminado la serie de posts de Archlinux Time!, tenia varios post random que quería compartir, algunos chicos otros no, y mejor lo pongo en esta parte.

Bueno empecemos:

Optimizar y Acelerar Archlinux

Si bien archlinux corre bastante bien puede ser optimizado el boot y algunas cosillas para que corra de 10:

– Desactivar o Eliminar KDM o GDM, o sustituirlos por Enter o Slim:

KDM y GDM son algo pesados, si no nos gusta el login por terminal aunque es mas recomendable, por estabilidad, podemos hacerlo mas bonito gracias a este post en los forums de arch y agregar que inicie X al poner nuestro user y pass y que quede algo así:

Pero si quieren algo mas gráfico esta Enter o Slim que son muy ligeros y soportan temas:

yaourt -S Enter

yaourt -S Slim

Los podemos agregar a los demonios (/etc/rc.conf) o en el innitab (/etc/innitab).

pasar demonios al background

para esto solo editamos el /etc/rc.conf y los demonios que no sean esenciales del arranque los podemos pasar al background agregándoles un “@” de la siguiente manera:

DAEMONS=(syslog-ng hal fbsĺash @alsa @timidity++ @wicd @cpufreq @vboxdrv @laptop-mode @network @cups @bluetooth @hplip)

Quick-init

Con esta maravilla reduciremos nuestro tiempo de boot casi a la mitad o mas, lo que hace es optimizar el arranque.

Yaourt -S quick-init

Quick-init nos pide modificar el /etc/qinit.sysinit

y pegar lo que nos dice ahí en “#past it here”

algo parecido a esto:

/bin/mknod -m 660 /dev/sda1 b 8 1
/bin/mknod -m 660 /dev/sda2 b 8 2
/bin/mknod -m 660 /dev/sda3 b 8 3
/bin/mknod -m 660 /dev/sda4 b 8 4
/bin/mknod -m 660 /dev/sda5 b 8 5
/bin/mknod -m 660 /dev/sda6 b 8 6
/bin/mknod -m 660 /dev/sda7 b 8 7

También quick-init modifica el innitab por lo que si tenemos nuestro login ahí hay que volverlo agregar como antes, des-comentándolo, esto suponiendo que uso Slim :

#You can use rc.local instead runlevel 5

#x:5:respawn:/usr/bin/xdm -nodaemon

#x:5:respawn:/usr/sbin/gdm -nodaemon

#x:5:respawn:/usr/bin/kdm -nodaemon

x:5:respawn:/usr/bin/slim >& /dev/null

#x:5:respawn:/bin/su YOURUSER -l -c «/bin/bash –login -c xinit >/dev/null 2>&1»

Prelink

Esta herramienta lo que hace es optimizar e linkeo hacia las aplicaciones usadas según las librerías, por lo que les hace “prekinkeo”, es fácil y sencillo de hacer, cada vez que cambien las librerías es recomendable hacerlo:

yaourt -S prelink

después de instalado, simplemente hacemos:

prelink –all

y voila !

Preload

un demonio que se encarga de monitorizar las aplicaciones que mas usamos e intentar tenerlas “preparadas” para su uso. (al primer boot tal vez ni llegue al login gráfico o se tarde mucho, pero después del tercer boot corre super bien, notaran la diferencia .

# powerpill -S preload

Lo agregamos al rc.conf (no lo pongan en el background) y ya esta (pruebenlo con o sin preload, si hay cambios negativos solo quitenlo, si no dejenlo).

/etc/rc.sysinit

Aquí quitamos cosas que nunca usamos como: LVM (si solo tienen un disco duro, desactívenlo, pero si tiene 2 discos duros cada uno con un Os distinto que vayan relacionados no lo hagan, si tienen varios Os en un HD y en otro información que vaya interrelacionada no hay problema.) RAID para leer aparatos encriptados:

#!/bin/bash
#
# /etc/rc.sysinit
#

. /etc/rc.conf
. /etc/rc.d/functions

echo " "
printhl "Arch Linuxn"
printhl "${C_H2}http://www.archlinux.org"
printhl "Copyright 2002-2007 Judd Vinet"
printhl "Copyright 2007-2008 Aaron Griffin"
printhl "Distributed under the GNU General Public License (GPL)"
printsep

# mount /proc, /sys and our RAM /dev
/bin/mount -n -t ramfs none /dev
/bin/mount -n -t proc none /proc
/bin/mount -n -t sysfs none /sys

# Create our default nodes that minilogd may need
/bin/mknod /dev/null c 1 3
/bin/mknod /dev/zero c 1 5
/bin/mknod /dev/console c 5 1

# More initial /dev setup that udev doesn't do
/bin/ln -snf /proc/self/fd /dev/fd
/bin/ln -snf /proc/self/fd/0 /dev/stdin
/bin/ln -snf /proc/self/fd/1 /dev/stdout
/bin/ln -snf /proc/self/fd/2 /dev/stderr
/bin/ln -snf /proc/kcore /dev/core
/bin/mkdir /dev/pts
/bin/mkdir /dev/shm

# start up our mini logger until syslog takes over
/sbin/minilogd

# anything more serious than KERN_WARNING goes to the console
# 'verbose' cmdline parameter enables more messages
if /bin/grep -q " verbose" /proc/cmdline; then
        /bin/dmesg -n 8
else
        /bin/dmesg -n 3
fi

# enable rtc access
/sbin/modprobe rtc-cmos >/dev/null 2>&1
RTC_MAJOR=$(/bin/grep -w rtc /proc/devices 2>/dev/null); RTC_MAJOR="${RTC_MAJOR%% *}"
if [ -n "$RTC_MAJOR" ]; then
        /bin/mkdir /dev/misc/
        /bin/mknod /dev/misc/rtc0 c $RTC_MAJOR 0
        /bin/ln -s /dev/misc/rtc0 /dev/rtc
fi

# Set clock early to fix some bugs with filesystem checks
# Clock is set again later to match rc.conf
if [ -f /etc/localtime ]; then
        /sbin/hwclock --hctosys --localtime --directisa --noadjfile
fi

echo > /proc/sys/kernel/hotplug

if [ -x /sbin/udevadm -a -d /sys/block ]; then
        # We have udev and /sys appears to be mounted, use UDev
        stat_busy "Starting UDev Daemon"
        /sbin/udevd --daemon
    /sbin/udevadm trigger &
    udevstart="$(/bin/date +%s%0N)"
        stat_done
else
        # Static /dev, our last resort
        status "Using static /dev filesystem" true
fi

# Load modules from the MODULES array defined in rc.conf
if ! [ "$load_modules" = "off" ]; then
        if [ -f /proc/modules ]; then
                stat_busy "Loading Modules"
                for mod in "${MODULES[@]}"; do
                        if [ "$mod" = "${mod#!}" ]; then
                                /sbin/modprobe $mod &
                        fi
                done
                stat_done
        fi
        if [ -d /proc/acpi ]; then
                stat_busy "Loading standard ACPI modules"
                ACPI_MODULES="ac battery button fan processor thermal"
                k="$(echo $BLACKLIST ${MOD_BLACKLIST[@]} | /bin/sed 's|-|_|g')"
                j="$(echo ${MODULES[@]} | /bin/sed 's|-|_|g')"
                #add disabled MODULES (!) to blacklist - much requested feature
                for m in ${j}; do
                        [ "$m" != "${m#!}" ] && k="${k} ${m#!}"
                done
                # add disablemodules= from commandline to blacklist
                k="${k} $(echo ${disablemodules} | /bin/sed 's|-|_|g' | /bin/sed 's|,| |g')"
                for n in ${ACPI_MODULES}; do
                        if ! echo ${k} | /bin/grep "<$n>" 2>&1 >/dev/null; then
                                /sbin/modprobe $n > /dev/null 2>&1 &
                        fi
                done
                stat_done
        fi
fi

# run udev uevents
if /bin/pidof -o %PPID /sbin/udevd >/dev/null; then
        stat_busy "Loading UDev uevents"
        /sbin/udevadm settle
        stat_done
        udevend="$(/bin/date +%s%0N)"
        printhl "   UDev uevent processing time: $((($udevend-$udevstart)/1000000))ms"
fi

# bring up the loopback interface
if [ -d /sys/class/net/lo ]; then
        stat_busy "Bringing up loopback interface"
        /sbin/ifconfig lo 127.0.0.1 up &
        if [ $? -ne 0 ]; then
                stat_fail
        else
                stat_done
        fi
fi

status "Mounting Root Read-only" /bin/mount -n -o remount,ro /

FORCEFSCK=
[ -f /forcefsck ] && FORCEFSCK="-- -f"
NETFS="nonfs,nonfs4,nosmbfs,nocifs,nocodafs,noncpfs,nosysfs,noshfs,nofuse,nofuseblk"

if [ -x /sbin/fsck ]; then
        stat_busy "Checking Filesystems"
        if /bin/grep -qw quiet /proc/cmdline; then
                /sbin/fsck -A -T -C -a -t $NETFS $FORCEFSCK >/dev/null 2>&1
        else
                /sbin/fsck -A -T -C -a -t $NETFS $FORCEFSCK 2>/dev/null
        fi
        fsckret=$?
        if [ ${fsckret} -gt 1 ]; then
                stat_fail
                if [ $((${fsckret}&2)) -eq 2 ]; then
                        echo
                        echo "********************** REBOOT REQUIRED *********************"
                        echo "*                                                          *"
                        echo "* The system will be rebooted automatically in 15 seconds. *"
                        echo "*                                                          *"
                        echo "************************************************************"
                        echo
                        /bin/sleep 15
                else
                        echo
                        echo "*****************  FILESYSTEM CHECK FAILED  ****************"
                        echo "*                                                          *"
                        echo "*  Please repair manually and reboot. Note that the root   *"
                        echo "*  file system is currently mounted read-only. To remount  *"
                        echo "*  it read-write type: mount -n -o remount,rw /            *"
                        echo "*  When you exit the maintenance shell the system will     *"
                        echo "*  reboot automatically.                                   *"
                        echo "*                                                          *"
                        echo "************************************************************"
                        echo
                        /sbin/sulogin -p
                fi
                echo "Automatic reboot in progress..."
                /bin/umount -a
                /bin/mount -n -o remount,ro /
                /sbin/reboot -f
                exit 0
        fi
        stat_done
fi

stat_busy "Mounting Local Filesystems"
/bin/mount -n -o remount,rw /
/bin/rm -f /etc/mtab*
# make sure / gets written to /etc/mtab
/bin/mount -o remount,rw /
# Write /proc, /sys and /dev to /etc/mtab
if [ -e /proc/mounts ]; then
        /bin/grep -e "/proc " -e "/sys " -e "/dev " /proc/mounts >> /etc/mtab
fi
# now mount all the local filesystems
/bin/mount -a -t $NETFS
stat_done

status "Activating Swap" /sbin/swapon -a &

stat_busy "Configuring System Clock"
if [ ! -f /var/lib/hwclock/adjtime ]; then
        echo "0.0 0 0.0" > /var/lib/hwclock/adjtime &
fi

/bin/rm -f /etc/localtime
/bin/cp "/usr/share/zoneinfo/Europe/Brussels" /etc/localtime
/sbin/hwclock --hctosys --localtime --directisa
stat_done

if [ -f /var/run/random-seed ]; then
        stat_busy "Initializing Random Seed"
        /bin/cat /var/run/random-seed >/dev/urandom &
        stat_done
fi

stat_busy "Removing Leftover Files"
/bin/rm -f /etc/nologin &>/dev/null &
/bin/rm -f /etc/shutdownpid &>/dev/null &
/bin/rm -f /var/lock/* &>/dev/null &
/bin/rm -rf /tmp/* /tmp/.* &>/dev/null &
/bin/rm -f /forcefsck &>/dev/null &
(cd /var/run && /usr/bin/find . ! -type d -exec /bin/rm -f -- {} ; )
: > /var/run/utmp &
# Keep {x,k,g}dm happy with xorg
/bin/mkdir /tmp/.ICE-unix && /bin/chmod 1777 /tmp/.ICE-unix
/bin/mkdir /tmp/.X11-unix && /bin/chmod 1777 /tmp/.X11-unix
stat_done

#status "Updating Shared Library Links" /sbin/ldconfig
#status "Updating Module Dependencies" /sbin/depmod -A &

status "Setting Hostname: Pinguin" /bin/hostname "Pinguin" &

# Flush old locale settings
: >/etc/profile.d/locale.sh
/bin/chmod 755 /etc/profile.d/locale.sh
# Set user defined locale
[ -z "$LOCALE" ] && LOCALE="en_US"
stat_busy "Setting Locale: en_US"
echo "export LANG=en_US" >>/etc/profile.d/locale.sh
stat_done

stat_busy "Setting Consoles to UTF-8 mode"
# UTF-8 consoles are default since 2.6.24 kernel
# this code is needed not only for older kernels,
# but also when user has set vt.default_utf8=0 but LOCALE is *.UTF-8.
for i in $(/usr/bin/seq 0 63); do
        usr/bin/kbd_mode -u < /dev/vc/${i}
        printf "e%%G" > /dev/vc/${i}
done
# the $CONSOLE check helps us avoid this when running scripts from cron
echo 'if [ "$CONSOLE" = "" -a "$TERM" = "linux" -a -t 1 ]; then printf "e%%G"; fi' >>/etc/profile.d/locale.sh
stat_done

status "Loading Keyboard Map: be-latin1" /bin/loadkeys -q -u "be-latin1" &

# Adding persistent network/cdrom generated rules
if [ -f "/dev/.udev/tmp-rules--70-persistent-cd.rules" ]; then
        stat_busy "Adding persistent cdrom udev rules"
        /bin/cat /dev/.udev/tmp-rules--70-persistent-cd.rules >> /etc/udev/rules.d/70-persistent-cd.rules
        stat_done
fi
if [ -f "/dev/.udev/tmp-rules--70-persistent-net.rules" ]; then
        stat_busy "Adding persistent network udev rules"
        /bin/cat /dev/.udev/tmp-rules--70-persistent-net.rules >> /etc/udev/rules.d/70-persistent-net.rules
        stat_done
fi

# Save our dmesg output from this boot
if [ -f /var/log/dmesg.log ]; then
        /bin/rm /var/log/dmesg.log
fi
/bin/dmesg > /var/log/dmesg.log &

# End of file

CUSTOM KERNEL COMPILATION

Si han compilado antes, seguramente no notaron gran diferencia esto es por que seguramente lo dejaron igual el ICE kernel para eso hay que hacerlo custom, antes esto era algo difícil de hacer, ahora gracias a ABS es sencillo: http://wiki.archlinux.org/index.php/Custom_Kernel_Compilation_with_ABS (muy recomendable).

Con todos estos pasos optimizaremos de manera muy notable nuestro Archlinux yo pase de un boot de 17 seg a uno entre 7 y 10 seg :) y una muy buena de optimización del sistema, que se siente al trabajar con el.

PIMP GRUB 2:

Este es un vil e indiscriminado copy pasteo del blog archxz.wordpress.com que hizo un maravilloso trabajo con grub2. Seguramente ya habran visto a los ubunteros con algun post de cambiarle el fondo al grub 2 XDDDD, pero no lo explotan de la manera hecha por archxz [copy paste mode: on]:

Buenas, hoy instalaremos grub2 gráfico en nuestro archlinux, el grub que dicen vendrá en ubuntu karmic y que en arch se puede utilizar hace mas de 7 meses, supongo estarán ya familiarizados con grub (el gestor de arranque), si alguna ves an usa suse habrán notado que el grub que utiliza es mas gráfico, bueno hace tiempo instale el grub tipo suse, pero no me resulto muy agradable, era un poco feo por decirlo, entonces seguí buscando y encontré un post en archlinux.org donde se explicaba como instalar grub2 gráfico, en ese tiempo era un poco mas complicado, pero funcionaba, yo lo utilizo desde hace mas de 6 meses, y funciona muy bien, la instalación no es para nada complicada y es sencillo crear temas, yo he hecho 6 temas los cuales pueden encontrar en AUR.

Comencemos, primero haremos una copia de seguridad de nuestra configuración de grub, esto lo hacemos con:

sudo cp /boot/grub/menu.lst /boot/grub/menu.lst.backup

Si utilizamos grub2 lo haremos con:

sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfg.backup

Ahora desintalamos grub

yaourt -R grub

Instalamos grub2-gfxmenu-overlay  desde aur

yaourt -S grub2-gfxmenu-overlay

Instalamos grub2-gfxmenu desde aur

yaourt -S grub2-gfxmenu

Ahora editamos la configuración de grub, para adaptarla a nuestro pc, editamos /boot/grub/grub.cfg y pegamos las entradas del respaldo que hicimos, teniendo en cuenta que las particiones comienzan de 1 no de 0, por lo tanto si antes era (hd0,0) ahora sera (hd0,1), quedando de esta forma con el mismo numero que la partición, por lo que para “/dev/sda3″ deberá quedar como “(hd0,3)”.  Mi grub.cfg como ejemplo.

Y por ultimo instalamos grub con

grub-install /dev/sda # O donde instalemos nuestro grub

Si todo a salido bien, tendremos nuestro grub2 gráfico funcionando, pueden usar los temas que hice (esta en aur), instalándolos con yaourt con grub2-theme-NOMBREDELTEMA, y agregando la linea

set theme=”/boot/grub/themes/NOMBREDELTEMA/theme.txt”

A su grub.cfg

UbuntuGlow

DistroBalls

ElegantArch

PlanePlant

SimplyBlack

ArchSphere

BlueC4D

KubuntuShine

Archlinuxcl

Los temas tienen los nombres de los wallpaper los cuales no son de mi autoria, y están las url de cada una en el theme.txt de cada tema. Pueden encontrar todos aquí. Los nueve temas están diseñados para una resolución de 1024×768, así que su grub.cfg debe quedar con esa resolución, las imágenes están en 1280×800 porque esa es la resolución de mi pantalla, igualmente tengo configurado grub en 1024×768.

Si tienen algún error al compilar pueden instalar los paquetes precompilados, agregando al final de /etc/pacman.conf lo siguiente para i686.

[archfox]
Server = http://hateanthem.dreamhosters.com/arch/i686

Y para x86_64

[archfox]
Server = http://hateanthem.dreamhosters.com/arch/x86_64

E instalándolo con pacman

pacman -Sy grub2-gfxmenu-overlay grub2-gfxmenu

Esto ultimo gracias a FrozenFox del foro de archlinux.org

Instalación en otras distros

He visto que muchos buscan como instalarlo en ubuntu, no es lo primordial de la entrada por eso no esta al comienzo.
Primero deben desintalar grub, luego escriben en una consola

wget http://grub.gibibit.com/files/overlay_2009-07-19.tar.gz
tar -xf overlay_2009-07-19.tar.gz
cd overlay_2009-07-19
sudo cp -Rf * /

Y luego

wget http://grub.gibibit.com/files/gsoc08_r876.tar.bz2

tar -xjf gsoc08_r876.tar.bz2
cd gsoc08_r876
mkdir build
cd build
sh ../configure --prefix=/usr --bindir=/bin --sbindir=/sbin
--mandir=/usr/share/man --infodir=/usr/share/info
--sysconfdir=/etc
make
sudo make install

Las dos lineas siguientes a “sh ../configure …” deben pegarse juntas en un terminal  como si las tres fuesen solo una. Finalmente instalan grub con

grub-install /dev/sda # O donde instalen grub

Luego configurar, como se indicaba antes.

Grub en otra partición

En instalaciones de archlinux, en donde esta el /boot separado del directorio raíz, se debe quitar el /boot a todo, incluyendo los temas, las fuentes y las entradas de grub. Ademas debemos tener cuidado en las entradas, por ejemplo suponiendo que

/dev/sda2     es        /boot
/dev/sda3     es       /

Nuestra entrada en grub quedara de esta forma

# Entry 0 - Arch Linux
menuentry "Arch Linux" --class "arch" {
set root=(hd0,2)
linux /vmlinuz26 root=/dev/sda3 ro
initrd /kernel26.img
}

Siendo la linea “set root=(hd0,2)” referida a la partición /boot y la linea “linux /vmlinuz26 root=/dev/sda3 ro” a la partición de el directorio raíz.

Problemas de resolución en tarjetas intel

Si tienen algún problema de resolución con tarjetas gráficas intel, pueden compilar desde AUR grub2-915resolution sin instalarlo y luego copiar el archivo 915resolution.mod que estará en $pkgdir/usr/lib/grub/i386-grub/ a /boot/grub/, después se debe editar el grub.cfg y agrega las lineas

insmod 915resolution
915resolution 34 1024 600

El 1024 600 depende de nuestra resolución de pantalla, ademas debe coincidir con la resolución de la linea “set gfxmode=1024×600″.

Espero les sea útil, no es algo primordial, pero hace que se vea mejor el inicio de nuestro arch. Saludos y hasta la próxima.

PD: Tres temas nuevos, aún no han sido agregados a aur, pero cuando así sea lo pondré acá.

[copy paste mode off]

Splash screen en archlinux:

Si bien algunos no les gusta ver tantas letras al bootear y quieren algo mas gráfico pero ligero y a la vez con muchas posibilidades y fácil de instalar esta fbsplash:

yaourt -S fbsplash

después podremos los initscripts:

yaourt -S initscripts-extras-fbsplash

ahora podremos algunos themes. En aur hay unos muy buenos, ahora los agregaremos al /etc/conf.d/fbsplash maso-menos de la siguiente manera:

SPLASH_THEMES=”arch-black arch-banner-icons arch-banner-noicons”

Agregamos fbsplash a los demonios en el /etc/rc.conf:

DAEMONS=(… hal fbsplash ...)

Ahora para que arranque con nuestro arch, lo agregaremos a los HOOKS del /etc/mkinitcpio.conf :

HOOKS=(base udev fbsplash …)

Ahora configuramos el grub de la siguiente manera, que después de decir lo de kernel =nuestro kernel en el caso de grub 1 , lo agregamos y en el caso de grub2 después de la linea linux=kernel, más o menos asi:

Grub2 :

linux /boot/vmlinuz26-pae root=/dev/sda4 ro ACPI_VIDEO=y VIDEO_OUTPUT_CONTROL=y logo.nologo quiet console=tty1 vga=792 splash=silent,theme:arch-banner-icons,fadein,fadeout

Grub 1:

kernel = /boot/vmlinuz26-pae root=/dev/sda4 ro ACPI_VIDEO=y VIDEO_OUTPUT_CONTROL=y logo.nologo quiet console=tty1 vga=792 splash=silent,theme:arch-banner-icons,fadein,fadeout

y después agregamos la imagen al kernel deseado:

mkinitcpio -p kernel26

En mi caso tengo otro kernel (kernel-pae) sacado de AUR por lo que iría así:

mkinitcpio -p kernel26-pae

Y listo! En arch, también podemos poner plymouth o usplash pero no los explicare :P .

Otras cosas interesantes:

Bluethoot en arch: http://archxz.wordpress.com/2009/09/09/bluetooth/

Impresoras en arch: http://jfibergran.wordpress.com/2009/04/30/configurar-impresoras-en-arch-linux/

Optimizar Rankimirrors de pacman: http://cyb3rpunk.wordpress.com/2009/11/17/rankmirrors-optimiza-mirrorlist/

Agregare mas después :P

15 comentarios en “Arch linux time! (parte 4 – misc: aplicable a otras distros)

  1. Siempre es mas agradable comenzar a aprender una distro de linux con este tipo de tutoriales, porque uno tiene claro que el computador va a andar mas rapido y se vea bien como uno quiere, asi dan ganas de informarse sobre el funcionamiento y cosas tecnicas, más si hay a alguien a quien consultar.

    Se agradece!

    Me gusta

  2. Donde estan los antiguos tutoriales de Archilinux? pues aca aparece la parte IV. Esta distribucion es para equipos con poca ram??? o es solo para usuarios muy acanzados?? pues segun lo leido esta para muy entendidos,

    Me gusta

    • plynnouth ya lo conosco ramón :), pero necesita de X, por eso no lo puse, si ves arriba puse que era una opcion, pero como que no va mucho con la filosofia de arch.

      lo de acelerar con pacman, no lo puse por que desde el primer tuto recomende powerpill..

      :), gracuas por los tips.

      Me gusta

  3. Me refiero a que el algo así parece que señala a algo que no aparece. Supongo que un enlace o una imagen. Y la frase «podemos hacerlo más bonito gracias a este post…» hace referencia ¿a qué post? Parece que se refiere a uno que no tiene enlace

    Me gusta

  4. Los links de enter y slim están invertidos. Además, SLiM está «buscando desarrolladores» desde hace mucho tiempo. Si se quiere un DM liogero, se puede esperar un poco más de tiempo a que salga LXDM, el oficial de LXDE

    Me gusta

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.