mabas011
Usuario (Argentina)
Hola colegas!!! Quiero compartir con Uds. un tutorial de instalación sobre una distro quizá poco conocida, y que a mi me apasiona. Según distrowatch: Lunar es una distribución de Línux basada en fuentes con un sistema gestor de paquetes único el cual construye cada paquete o módulo para la máquina en la que está siendo instalada. A pesar de que puede tomarle un poco en hacer una instalación de Lunar completa, vale la pena porque tiende a ser bastante rápida una vez ya instalada. Al principio Lunar era un derivado de Sorcerer GNU Linux (SGL). La derivación ocurrió entre finales de enero y principios de febrero del 2002 y fue originalmente hecha por un pequeño grupo de gente que quería desarrollar colaborativamente para extender la tecnología Sorcerer. El nombre original para el proyecto era Pingüino Lunar (Lunar-Penguin), pero el grupo decidió rebautizarlo como Lunar Linux mientras que el nombre de Lunar-Penguin se ha vuelto una suerte de sombrilla la cual el equipo podría usar si deciden desarrollar colaborativamente en algo además de Lunar Linux. Lo cierto es que un distro dificil, ya que se maneja mayormente desde la consola y configurando una gran parte de las cosas a mano. Todo debe compilarse, al estilo Gentoo, pero un poco mas engorroso. Las ventajas: Una ves instalado, es muy, muy rápido. En mi opinión, mas que Gentoo. Total libertad y control sobre nuestro sistema, Programas totalmente optimizados para nuestra pc. Las desventajas: Tiene una curva de aprendizaje difícil, el soporte es nulo ya que no hay foros activos, ni información que sea de ayuda en la web, la pagina oficial esta parcialmente suspendida, esta totalmente en ingles, el hecho de compilar todo hace que se convierta en un sistema que difícilmente podamos utilizar a diario, si queremos estar actualizado. En fin te convertís en un paria linuxero, y estas solo. Como dato de referencia, les comento que yo lo tengo instalado en un netbook Commodore, con micro atom 1.66 y 1 gb de memoria. Sin embargo para este post lo he instalado en una notebook Compaq, micro dual core 1.73, 3 gb de memoria, usando Vbox, para poder tomar las capturas. La instalación parcial, osea, sistema totalmente actualizado pero sin entorno gráfico. Solo linea de comando, me tomo 9 hs. de instalación. (si, nueve) Y eso que no actualice el kernel. Si lo compilaba ese tiempo se podría haber duplicado tranquilamente. La notebook uso todo el tiempo el 100% del cpu, y mantuvo una temperatura promedio de 82 grados, con picos de 88. Lunar linux posee dos gestores de paquetes propios. Uno es LIN (Lunar INstaller) que se maneja desde la linea de comandos y LUNAR, que es un gestor semi-gráfico (es un programa para la consola), no muy amigable. Cabe destacar que es un distro rolling release, por lo cual esta siempre actualizada. Guía de instalación Dado que una distro para usuarios algo experimentados en sistemas linux, algunos pasos los abreviaré, como el particionado de discos. Abajo les dejo los links Una vez bajada e instalada la ISO en un USB o imagen para vbox, reiniciamos y nos aparecerá la siguiente pantalla: Le damos ENTER y a la barra espaciadora para que inicie con la resolución por defecto. Acá pueden elegir la resolución de la consola, sin embargo yo les recomiendo elegir la opción 0 para poder leer fácilmente la consola. En esta pantalla tengan paciencia, parece que el sistema se colgó, pero no. Puede tardas hasta 3 minutos en continuar. Si entienden ingles, les recomiendo que lean el apartado Introduction into Lunar-linux, sino sigan que no pasa nada. Denle a One step forward. Seleccionamos la distribución de nuestro teclado. En mi caso latinoamericano. Las fuentes para la consola dejenlas el default. Elijan el idioma para la instalación (igual es medio el pedo, siempre va a estar en ingles). Elegimos nuestro editor favorito. Yo eligi nano. Particionamos nuestro disco/s. Pongo las imágenes a modo de ejemplo. A mi me gusta cfdisk, así que eligi ese. Ejemplo de como particiones. Le puse 5gb al directorio raíz ya que al compilar se utiliza el doble de espacio en disco (luego se puede borrar). Los tamaños de las particiones no son los ideales, yo lo hice así para hacer el tutorial. Ya particionado y su destino de montaje. La damos a instalar. Instalamos el bootloader. Obviamente grub (lilo me trae muchos recuerdos pero ya esta obsoleto) Instalamos el kernel. Para este tuto no compile el kernel dado que toma mucho tiempo, use el precompilado. Ademas luego tendremos que actualizarlo (la ISO trae el kernel 2.6). Usamos el que mejor se adapte a nuestro equipo. Yo uso el kernel normal. Agregamos la clave para root, los grupos y usuarios. Es algo muy sencillo. Ponemos el nombre del equipo y configuramos la red. Les recomiendo fuertemente que se salteen este paso, para evitar golpearse demasiado la cabeza contra el teclado. Luego levantaremos la red a mano. Seleccionamos nuestra zona. Y terminada la instalación. Al reiniciar no encontraremos con un grub algo anticuado. Al darle enter deberemos esperar 2 o 3 minutos como antes. Y ya tenemos nuestra consola. Ponemos root y nuestra contraseña. Luego ponemos lnet y verán que la red no esta activa. La vamos a levantar a mano. Pongan los comandos como se muestra aquí: Sin embargo hacemos un ping y seguimos sin internet. Vayan devuelta con lnet y elijan la opción Edit device eth0 (o la que tengan Uds.). Le dan a la opción Reconfigure device y seleccionen ifplugd. Y ya tenemos internet (aquí navegando por Taringa con Links) Ahora actualizamos los repositorios, la moonbase con el comando: lin moonbase De aqui en adelante no pongo imagenes porque es escribir el comando y ver las secuencias de escape de el compilador. No tieene sentido. Actualizamos la gcc. Este proceso lleva aprox. 5 hs. al menos en las condiciones que yo lo instale. Alguien que tenga un cpu intel i5 o i7 le va a demorar mucho menos: lin -cr gcc Optimizamos el gestor lunar: lunar optimize Actualizamos los kernel-headers: lin kernel-headers-2.6 Actualizamos glibc lin glibc Instalamos los módulos restante. Háganlo en ese orden: lin -cr gcc bash coreutils tar wget Instalamos el lunar-init udev. Sin esto Lunar no a bootear: lin -c lunar-init udev Y por ultimo actualizamos el kernel. Esto demora mucho, hay máquinas que lo compilan en 20 minutos, pero no es mi caso. A mi máquina le lleva horas (muchas). lin linux-2.6 Con esto tendremos Lunar linux instalado y actualizado, pero sin entorno gráfico. Eso lo dejare, tal vez, para un próximo post. Compilar es muy tedioso, lleva mucho tiempo, pero rinde sus frutos. Espero que alguno se anime Saludos

Hola compañeros! En este post les mostrare como compilar muy fácilmente un kernel en arch y derivadas. Cabe aclarar que casi no hay riesgos, salvo si hacen algo mal con el grub, Pero podrán bootear con el kernel anterior si algo saliera mal. Tambien es interesante pobrar kernels alternativos como linux-zen o linux-ck (que anda muy bien). Lo primero es descargar las herramientas que vamos a necesitar: sudo pacman -S abs base-devel Configurar makeflags de manera adecuada. Para ello lo editamos. Es muy recomendable especificar la cantidad de nucleos del procesador en el makeflags.conf. sudo nano /etc/makepkg.conf Y editamos la linea: #MAKEFLAGS="-j2" Sumenle 1 a la cantidad de núcleos que tenga su procesador. Ej. Para este post use una maquina dualcore, así que la linea quedo: MAKEFLAGS="-j3" Creamos un kernel limpio. Escriban en una terminal como root: ABSROOT=. abs core/linux Descargamos los PKGBUILDS: Pueden ver los nucleos disponibles en: https://aur.archlinux.org/packages/?=0&C=19&SeB=nd&K=kernel&outdated=&SB=n&SO=a&PP=50&do_Search=Go Para este ejemplo voy a bajar el kernel 3.17.rc6 (linux-git) En la terminal: yaourt -S linux-git Esto les va a descargar los PKGBUILDS, las dependencias y todo lo necesario automáticamente. Tengan en cuenta que esto se almacenara el /tmp, o sea en RAM. Si no disponen de al menos 1gb. de RAM libre van a tener que usar makepkg. Si este es el caso se bajan el PKGBUILD de la yaourt -G linux-git En este momento es donde pueden editar el PKGBUILD y agregar o quitar parámetros en la compilación del kernel. Es un tema muy largo que no abarca este post, pero hay mucha info en la wiki de arch. Se posicionan en la carpeta donde lo bajaron y ponen: makepkg -si Luego de esto empezara a compilar el kernel. Este proceso demora bastante dependiendo de la máquina que posean y los parámetros de compilación. No es inusual que demore entre 2 y 4 horas. En los casos de kernel no estables es probable que el compilador haga algunas preguntas por si o por no. Si no saben aprieten enter en cada pregunta. Luego de terminada la compilación debería de haberles creado las imagenes booteables en /boot. Si no fue asi ejecutan: mkinitcpio -p linux-git Con esto ya tienen las imágenes creadas. Solo falta agregarlas al grub. Yo les recomiendo duplicar la entrada en el grub.cfg. Porque si algo sale mal podremos iniciar con el antiguo kernel. Acá pueden ver como duplique la entrada: Y aquí como aparece en el booteo: Nuestro nuevo kernel funcionando: Eso es todo. Espero que se animen ya que no riesgos (casi). Saludos
Hola compañeros, En este breve post les mostraré como instalar y usar el gestor de paquetes Nix. Que es Nix? Nix es un gestor de paquetes linux que hace que la gestión de paquetes sumamente sencilla. Universal, porque puede instalarse en cualquier distro. Proporciona actualizaciones y la coexistencia de múltiples versiones de un paquete, permitiendo, ademas, restaurar su estado a un punto determinado, gestión de paquetes multi-usuario y sin necesidad de ser root. Cabe destacar que Nix no altera el sistema donde se instala, sino que coexiste con el mismo. Podremos instalar, desinstalar, actualizar, etc, sin que afecte en lo mas mínimo nuestro sistema. Esto lo logra al instalar todos los paquetes y dependencias en una sola carpeta. Nix, a mi en lo particular, siempre me a sido sumamente util cuando probaba sistemas LFS, Lunar, SMGL o Gentoo/Funtoo, cuando no tenia tiempo para compilar o lidiar con algun problema. Nix tiene muchísimas opciones útiles, aquí solo les mostraré las mas básicas como para tenerlo funcionando. Instalación: Creamos la carpeta nix en la raíz: sudo mkdir /nix Cambiamos el propietario: sudo chown mabas /nix Instalamos Nix: En mi caso uso zsh, si usan bash cambien zsh por bash. zsh <(curl https://nixos.org/nix/install) Sino también pueden hacerlo de esta otra manera: curl https://nixos.org/nix/install | sh Con esto ya tendran instalado Nix, pero al cerrar la terminal las variable PATH creada por Nix sera eliminada y no podrán iniciar las aplicaciones instaladas. Esto lo solucionan añadiendo lo siguiente al .bashrc o zshrc. echo "export PATH=$PATH:/home/mabas/.nix-profile/bin" >> ~/.zshrc Como veran la forma de almacenamiento dentro de /nix es algo coherente, aunque quizá poco práctica. Comandos básicos: Listar todos los paquetes disponibles en el repositorio Nixpkgs: nix-env -qa Buscar un paquete en el repositorio: nix-env -qa paquete Instalar un paquete: nix-env -i Eliminar un paquete: nix-env -e paquete Actualizar un paquete: nix-env -u paquete Actualizar todos los paquetes instalados: nix-env -u Simular la instalación de un paquete: nix-env -i --dry-run paquete Purgar el gestor de paquetes: Verán, Nix en realidad cuando uno actualiza y borra un paquete en realidad lo que hace es eliminar los enlaces simbólicos. Esto es lo que permite la coexistencia de diferentes versiones o restaurar el gestor a un punto determinado. Lógicamente al cabo de un tiempo esto hará aumentar de tamaño el directorio /nix considerablemente. Nix permite purgar el sistema por generaciones, o sea todo o determinada cantidad de dias. Una generación es un dia. Para purgar todos los paquete eliminados: nix-env --delete-generations old Para determinados días (por ej: 5 7 8): nix-env --delete-generations 5 7 8 Para eliminar una cantidad determinada de generaciones (por ej: 8 dias): nix-env --delete-generations 8d Algo a tener en cuenta es que Nix instalar por defecto, solamente software libre. Esto puede ser una limitación para algunos (como yo), ya que algunos paquetes utilizan dependencias que no libres. Esto podemos solucionarlo de la siguiente forma: Creamos el directorio .nixpkgs: mkdir ~/.nixpkgs Dentro de .nixpkgs creamos en archivo config.nix indicando que queremos instalar paquetes no libres: echo "{ allowUnfree = true; }" >> ~/.nixpkgs/config.nix Si usamos escritorios notaran que los programas instalados no aparecen en nuestro panel. Esto se debe a que no están instalados propiamente dicho en nuestra distro, sino que están por fuera del sistema, pero pudiendo interactuar con el mismo. Las soluciones a esto son: crear accesos directos, enlaces simbólicos o simplemente iniciarlos desde la terminal. En ~/.nix-profile/bin tendremos nuestros accesos directos a las aplicaciones instaladas. Si quieren mas info (en ingles) pueden consultar el manual Cualquier duda me consultan. Hasta la próxima!
Hola compañeros, En esta ocasión les traigo un LiveCD de Gentoo configurado para usar fuentes y binarios, valiéndose para esto de los repos de Calculate Linux. Los mismos no tienen la misma cantidad de paquetes que Gentoo, pero si una cantidad considerable. Salvo por el hecho de que es un LiveCD, la configuración del binhost , el artwork y la reduccion del tamaño (el stage4 pesaba 1.8 gb y la ISO 761 mb), el contenido de programas es como el stage4 de mi post anterior, pero actualizado al 26/12/2015. Iniciando la ISO en una máquina virtual. Debo aclarar que el nombre mabas-OS es una broma que los usuarios de gnulibre.com (sobre todo los del chat) sabrán entender. La ISO inicia con un kernel gentoo generico, sin embargo lleva dentro otro kernel binario Sabayon. Este ultimo es el que se usará si instalan físicamente. Luego de presionado ENTER deberán elegir la distribución del teclado (US por defecto). Pueden darle nuevamente ENTER, ya que cuando inicie el entorno gráfico esta configurado el teclado latinoamericano. Cargado el teclado procede a volcar el squasfs a memoria. Esto puede demorarles algunos segundos dependiendo del equipo. Terminado esto debería aparecerles el DM para loguearse. Los usuarios y las claves son: User: root - Pass: gnulibre User: gnulibre - Pass: gnulibre Siguiente la tónica de la broma le hice un logo (es larry, me quedo medio fea pobre vaca) y modifiqué el código del screenfetch-dev para que la reconozca como un distro. Actualizando antes de crear la ISO Aquí como podrán observar el uso de fuentes y binarios en conjunto. Si no estuviese configurado el binhost al Instalar Midori debería compilar 25 paquetes, en cambio de esta manera solo compilará 8 y usará 17 binarios. Aclaro que para usar los binarios de Calculate deberan usar el parámetro -g (--getbinpkg). Por ej. para instalar Midori usé: emerge -gav, en vez de -av. Si no usan -g se compilará se la forma que gentoo lo hace habitualmente. Aclaraciones: Para reducir el tamaño de la ISO he eliminado mucho, principalmente /usr/portage. Así que lo primero que deben hacer es actualizar el arbol de Portage y la base de eix: sudo emerge --sync && sudo eix-update El uso de un LiveCD de Gentoo, en mi opinión, no tiene mayor sentido salvo que se la instale. La ISO no tiene un instalador. Iba a hacer una con Calamares pero recordé que no se usarlo (y no tengo ganas de leer). De todas maneras si quieran instalarla físicamente en su disco pueden hacerlo de la siguiente forma: Necesitaran cdrtools y squashfs-tools. Crean un directorio para montar la ISO: sudo mkdir /mnt/iso montan la ISO: sudo mount -t iso9660 -o loop /donde/este/la/iso /mnt/iso Copian el image.squashfs a otra carpeta con permisos rw: cp image.squashfs ~/Documentos/ Crean una carpeta para contener toda la estructura de directorios descomprimida: mkdir ~/Documentos/gentoosq Descomprimen es squashfs: sudo unsquashfs -d ~/Documentos/gentoosq ~/Documentos/image.squashfs Hecho esto tendrán dentro de gentoosq la estructura completa y podrán instalar del mismo modo que el stage4 del post anterior. Aquí podrán descargar la ISO Cualquier duda me consultan Hasta la próxima.
Hola Compañeros, En este post les mostraré como hacer un mini sistema con linux y busybox parecido al de mi ultimo post pero en este caso será mas mínimalista y lo haremos mas artesanalmente, sin la ayuda de buildroot. La idea es crear un livecd de no mas de 8 mb. mas con la intención de aprender como se arma un sistema basico, que la utilidad que el mismo tenga. Necesitaremos tener cdrkit y syslinux instalados (en la mayoría de las distros ya vienen instalados) Aviso que no habrá muchas imágenes puesto que no tiene sentido tomar capturas de los comandos escritos en la terminal. Las versiones del kernel y busibox son las ultimas al momento de publicar este post, Uds. deberán modificarlas según lo crean conveniente. Empezamos: Nos logueamos como root. Creamos la estructura de directorios que contendran nuestro proyecto y entramos en el segundo nivel de la misma: mkdir -p midistro/{fuentes/kernel,fuentes/busybox} && cd midistro/fuentes Descargamos y descomprimos el kernel: wget -c https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.3.3.tar.xz tar -xvf linux* -C ../fuentes/kernel Descargamos y descomprimimos busybox: wget -c https://www.busybox.net/downloads/busybox-1.24.1.tar.bz2 tar -xvf busybox-* -C ../fuentes/busybox Creamos una instalación limpia, una configuración por defecto y lo compilamos (cambien el valor j9 por el que les corresponda núcleos +1, si tienen HT, nucleos * 2 +1): cd ../fuentes/kernel/linux-4.3.3 && make mrproper && make defconfig && make -j9 bzImage && cd ../../../ Si quieren darle un nombre al kernel, antes de compilarlo abran el .config y modifiquen la linea CONFIG_DEFAULT_HOSTNAME="" Y pónganle el nombre que quieran. Creamos una instalación limpia y una configuración por defecto para busybox: cd fuentes/busybox/busybox-1.24.1 && make clean && make defconfig Abrimos el .config y modificamos lo necesarios antes de compilar nano .config Aquí modificamos las siguientes lineas: CONFIG_STATIC=y CONFIG_FEATURE_HAVE_RPC=n CONFIG_FEATURE_INETD_RPC=n deben quedarles asi; estatico y sin redes RPC, sino no iniciará el sistema. Compilamos busybox: make -j9 && make install Copiamos la instalación de busybox a una carpeta que contendrá el sistema de archivos root: cp -R _install ../../fstemp && cd ../../fstemp && rm -f linuxrc Creamos la estructura de archivos y damos permisos a /tmp mkdir {dev,etc,proc,root,src,sys,tmp} && chmod 1777 tmp && cd etc Creamos los initscripts que montaran nuestro sistema: cat > bootscript.sh << EOF #!/bin/sh dmesg -n 1 mount -t devtmpfs none /dev mount -t proc none /proc mount -t sysfs none /sys for DEVICE in /sys/class/net/* ; do ip link set ${DEVICE##*/} up [ ${DEVICE##*/} != lo ] && udhcpc -b -i ${DEVICE##*/} -s /etc/rc.dhcp done EOF cat > rc.dhcp << EOF #!/bin/sh ip addr add $ip/$mask dev $interface if [ "$router" ]; then ip route add default via $router dev $interface fi EOF chmod +x rc.dhcp && chmod +x bootscript.sh Creamos un inittab basico: cat > inittab << EOF ::sysinit:/etc/bootscript.sh ::restart:/sbin/init ::ctrlaltdel:/sbin/reboot ::once:cat /etc/bienvenido.txt ::respawn:/bin/cttyhack /bin/sh tty2::once:cat /etc/bienvenido.txt tty2::respawn:/bin/sh tty3::once:cat /etc/bienvenido.txt tty3::respawn:/bin/sh tty4::once:cat /etc/bienvenido.txt tty4::respawn:/bin/sh EOF Ponemos un mensaje de bienvenida al iniciar el sistema: cat > bienvenido.txt << EOF Bienvenido!!! EOF cd .. Creamos el script que lanzará el init de busybox: cat > init << EOF #!/bin/sh exec /sbin/init EOF chmod +x init Creamos y comprimimos el initramfs: find . | cpio -H newc -o | gzip > ../fstemp.cpio.gz && cd ../../fuentes/kernel/linux-4.3.3 Ahora creamos la ISO, pero debemos cambiar algunas cosas de Makefile: nano arch/x86/boot/Makefile Agregan la siguiente linea (justo como se ve en la imagen) cp /usr/share/syslinux/ldlinux.c32 $(obj)/isoimage/ Y comentan esta otra: # isohybrid $(obj)/image.iso 2>/dev/null || true Ahora si, creamos la ISO y la copiamos al directorio principal con el nombre de midistro.iso: make -j9 isoimage FDINITRD=../../fstemp.cpio.gz && mv arch/x86/boot/image.iso ../../../midistro.iso && cd ../../../ Hasta aca ya podran iniciar la ISO desde una máquina virtual o un CD, si quiren que inicie desde un USB, ubiquense donde esta la ISO y ejecuten: isohybrid midistro.iso Y listo! Hasta la próxima!
Hola compañeros, En esta ocasión les mostraré como construir desde cero nuestro propio sistema embebido. Para eso utilizaremos buildroot, una herramienta que facilita mucho el proceso descargando las fuentes, compilando y configurando de forma automática (luego veremos que no es tan así) y soportar una gran variedad de arquitecturas. Necesitaremos tener instalado git, syslinux y cdrkit (estos dos ultimos si queremos crear un live) Primero clonaremos el repositorio remoto: cd && git clone git://git.buildroot.net/buildroot Entramos en el repositorio y ejecutamos la herramienta configuración de buildroot. Aquellos que compilen sus kernels manualmente se sentirán familiarizados con la interface. cd buildroot && make menuconfig Estas son las configuraciones recomendadas por el manual de usuario de buildroot, sin embargo Uds. adaptenlo a lo que crean mas conveniente. Configuración del menú toolchain: Toolchain —> Enable WCHAR support Enable C++ support Configuración del menú System configuration --> (buildroot) System hostname Cambiamos el nombre del host por el que nos guste (Welcome to Buildroot) System banner Cambiamos por un mensaje de bienvenida que nos guste Configuración del menu Target Packages: Target Packages —> Graphic libraries and applications (graphic/text) —> xterm dillo feh Aquí si quieren también pueden agregar algún WM. X.org X Window System —> X11R7 Servers --> Xorg-server X Window System server type —> Modular X.org X11R7 Applications —> setxkbmap twm xclock xinit xinput xkbcomp xclipboard X11R7 Drivers —> xf86-input-synaptics xf86-input-keyboard xf86-input-mouse xf86-video-cirrus xf86-video-fbdev xf86-video-vesa X11R7 Fonts --> font-xfree86-type1 font-adobe-75dpi Libraries –> Text and terminal handling —> ncurses Kernel —> Linux Kernel Defconfig name : x86_64 Target filesystem options —> [ initial RAM filesystem linked into linux kernel Target options --> Target Architecture --> X86_64 Comenzamos a compilar. Este proceso demora bastante, en mi equipo me demora 30 minutos aprox. sudo make Durante este proceso es probable que se nos presentes algunos inconvenientes con la compilacion. Aparentemente en algunos paquetes (principalmente los del grupo xdriver_xf86*) buildroot se olvida ejecutar el ./configure de los paquetes antes de hacer make, lo cual termina en un error; generalmente por la falta de los archivos de chequeo que genera el configure; los mismo son .stamp_configure, .stamp_built, .stamp_target_installed (en ese orden). Como buildroot se detendrá con un error, aprovechamos para ejecutar el .configure a mano. Entramos a ~/buildroot/output/build/paqueteque falló y ejecutamos: sudo ./configure && cd ../../../ && sudo make Otra de las cosas que suelen fallar, es que buildroot no usa el defconfig para compilar el kernel, así que debemos crear un .config para el kernel: Entramos a : ~/buildroot/output/build/linux-4.x.x/ Y ejecutamos: sudo make menuconfig Si no sabemos como configurar un kernel simplemente denle a save, salen y vuelven a master: cd ../../../ && sudo make No nos preocupemos buildroot no comenzará todo de nuevo, solo desde el punto que se produjo el error. Probablemente si se produjo un error sobrevengan varios mas, todos los solucionaremos de la misma manera. Si mas tarde queremos agregar paquetes o modificar configuraciones, podremos usar nuevamente: sudo make menuconfig && sudo make Y reconstruirá con las modificaciones. Aquí también solo compilará las modificaciones, asi que no empezaremos todo nuevamente, solo compilará e inyectará lo que modificamos. Terminado este proceso debería habernos dejado un archivo bzImage en ~/buildroot/output/images/ Este arcchivo contiene todo lo que necesitamos. Podríamos iniciarlo desde el grub si quisiéramos (recuerden que el initramfs se compiló junto con el kernel) o bien hacerlo un livecd, para poder iniciarlo desde un cd (valga la redundancia) o desde un USB. Como hacer un livecd con nuestro nuevo sistema. Creamos una carpeta para contener los archivos de la ISO, copiamos el bzImage a la carpeta que creamos y nos ubicamos dentro de la misma: mkdir ~/miiso && cp bz* ~/miiso/ && cd ~/miiso Copiamos isolinux.bin y ldlinux.c32: sudo cp {/usr/share/syslinux/isolinux.bin,/usr/share/syslinux/ldlinux.c32} ~/miiso/ Chequeen que tengan instalado syslinux en /usr/share/syslinux, porque dependiendo de la distro (yo uso gentoo) pueden ubicarse un otro directorio. Ahora crearemos un mensaje de bienvenida antes de bootear en sistema. Para ello crearemos en archivo boot.msg y dentro del mismo el mensaje que queremos mostrar. También debemos crear un archivo de configuración para syslinux. El mismo debe llamarse isolinux.cfg. Syslinux es totalmente configurable, lo que yo aquí les dejo es solo una configuración mínima y funcional. default mabas timeout 150 ontimeout localhost prompt 1 display boot.msg label mabas kernel bzImage label localhost localboot -1 MENU HIDE Creo que se entiende cada cosa, sino me preguntan. Guardamos el archivo. Creamos la ISO: sudo genisoimage -J -r -o milivecd.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ~/miiso En este momento ya podrán iniciar la iso en una maquina virtual o desde un CD/DVD. Si queremos que ademas inicia desde un USB debemos usar isohybrid: sudo isohybrid milivecd.iso Y ya podrán iniciarla desde un USB sin problemas. Algunas consideraciones: - El único usuario del sistema es root y sin password. - Para iniciar las X deben iniciarlas UDs, con startx. - Si quieren configurar a mano el sistema solo deben modificar lo necesario en ~/buildroot/output/target. Eso es todo. Hasta la próxima.
Hola compañeros, En este post les enseñaré a remasterizar un livecd. Aclaraciones: No estoy a favor de la proliferación de forks si estos no aportan algo original, con esto me refiero a distribuir una distro en la cual solo se cambian un wallpaper, un pack de iconos o instalan un par de paquetes; sin embargo eso es lo que les enseñaré, cumpliendo con la promesa que le hice a dos usuarios. Me referiré a remasterizacion de un distro basada en ubuntu (xubuntu), pero es perfectamente aplicable a cualquier live de cualquier distro solo aplicando un mínimo de conocimiento y sentido común. Herramientas que necesitaremos: squashfs-tools, cdrkit (asi de llaman en gentoo, fíjense como de llaman en sus distros) Comenzamos: Creamos la estructura de directorios que contendrán los datos de nuestra distro, bajamos la iso y la montamos: sudo mkdir -p /mnt/midistro/{iso,live} && cd /mnt/midistro sudo wget -c http://mirror.us.leaseweb.net/ubuntu-cdimage/xubuntu/releases/16.04/release/xubuntu-16.04-desktop-amd64.iso sudo mount -t iso9660 -o loop xubuntu-16.04-desktop-amd64.iso /mnt/midistro/iso/ Extraemos los datos del livecd excluyendo el squashfs, copiamos el squashfs de la iso a nuestro live temporal, lo descomprimimos, lo renombramos para mas comodidad: sudo rsync -a --exclude=/casper/filesystem.squashfs /mnt/midistro/iso/ /mnt/midistro/live/ sudo unsquashfs iso/casper/filesystem.squashfs sudo mv squashfs-root/ mifs En el caso de las *buntu el squashfs esta dentro de /casper, en el caso de las distro basadas en arch el squashfs tiene extension sfs. Si no lo encuentran tengan en cuenta que el squashfs en al archivo mas grande de la iso. Si una distro pesa (por ej.) 1.2 gs, el squashfs deberia pesar no menos de 1.1 gb. asi que lo encontraran fácilmente. Copiamos algunos archivos de configuración del sistema anfitrión para tener internet en el live, montamos /dev en el sistema huesped y hacemos chroot en el live: sudo cp /etc/{resolv.conf,hosts} mifs/etc/ sudo mount --bind /dev/ mifs/dev sudo chroot mifs/ Ya dentro del live terminamos de montar el sistema de archivos, creamos algunas variables de entorno y actualizamos el sistema: mount -t proc none /proc && mount -t sysfs none /sys && mount -t devpts none /dev/pts export HOME=/root && LC_ALL=C apt-get update Aquí ya queda a gusto de Uds. Personalizar una distro es muy sencillo y hay abundante información en la web. Agreguen, borren, modifiquen aplicaciones, wallpapers, iconos. Si se animan pueden iniciar una segunda sesión gráfica para realizar los cambios en forma grafica, para esto basta que presionen crtl+alt+fX (donde X es un numero del 1 al 7, aunque esta ultima es la que se usa por defecto y esta ocupada), se loguean, inician el servidor gráfico con startx y ejecutan en entorno grafico del livecd. También en el directorio /live/isolinux tendremos las configuraciones (entre ellas los graficos) de booteo del live. En fin, investiguen suele ser divertido. Terminada la remasterizacion generamos la nueva iso. Borramos archivos temporales y el historial de bash: rm -rf {/tmp/* ~/.bash_history, /etc/resolv.conf} Generamos una lista de paquetes instalados (dado que seguramente hemos instalados/desinstalado paquetes): dpkg -l > packages.txt Desmontamos el sistema de archivos: umount /{proc,sys,dev/pts} && exit sudo umount mifs/dev/ Copiamos la lista de paquetes al live y generamos el filesystem.manifest (lista de paquetes instalados con su version): sudo mv mifs/packages.txt live/casper/ sudo rm live/casper/filesystem.manifest sudo touch live/casper/filesystem.manifest sudo chmod a+w live/casper/filesystem.manifest sudo chroot mifs dpkg-query -W --showformat='${Package} ${Version}n' | sudo tee live/casper/filesystem.manifest Creamos en nuevo squashfs: sudo mksquashfs mifs live/casper/filesystem.squashfs Borramos el viejo md5sum y generamos uno nuevo con las modificaciones que hicimos: sudo rm live/md5sum.txt sudo find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee live/md5sum.txt Si el livecd fuera basado en arch el md5sum solo afecta al squashfs. Finalmente generamos la nueva iso con nuestra distro remasterizada a la cual le daremos en nombre de xubunturemix: sudo mkisofs -r -V "xubunturemix" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o xubunturemix.iso /mnt/midistro/live Como verán yo solo le agregue algunos programas. Es todo. Si algo no se entiende me preguntan. Saludos y hasta la próxima!
Hola compañeros, Hoy les mostraré como instalar Guix. Una distro 100%, avalada por la FSF y basada en el gestor de paguetes universal NIX. El siguiente texto de referencia de Guix fue tomado de desdelinux. La Free Software Foundation (FSF) ha anunciado una nueva incorporación a su lista de distribuciones GNU/Linux libres y recomendadas: Guix System Distribution. Como sabéis, la gran mayoría de distribuciones Linux suelen dar prioridad al software libre frente al privativo, pero por encima de los ideales está el pragmatismo, el ofrecer al usuario un sistema operativo plenamente funcional. Por ello, solo unas pocas tienen el privilegio de estar auspiciadas por la FSF. A la lista tradicional de distribuciones GNU/Linux 100% libres avaladas por la FSF se le une ahora Guix -pronunciado como pronuncia geeks-, que como su nombre adelanta, se basa en el gestor de paquetes GNU Guix. Es decir, Guix no es otra Trisquel que casi cualquier usuario puede disfrutar, sino algo más complejo, más del gusto del usuario experimentado. En palabras de Ludovic Courtès, principal mantenedor de GNU Guix: “La meta de GNU Guix es acercar el sistema GNU como fue previsto hace 31 años y trasladar sus objetivos éticos en la ejecución. Por ejemplo, la administración de paquetes funcional significa que Guix ofrece completa la “fuente correspondiente” de sus paquetes, en la forma que marca la GNU GPL -los usuarios saben exactamente cómo se obtuvo un paquete binario-. Los usuarios sin privilegios pueden instalar paquetes y todo el sistema es adaptable y hackeable, a la Emacs“. Así, parece que Guix, a diferencia del resto de distribuciones listadas por la FSF, se enfoca en el hacker linuxero más amante de la libertad o en quien busca unos cimientos sobre los que construir un sistema a medida, con la particularidad de estar basado en GNU Guix -que a su vez es un port de Nix-, que no es un gestor de paquetes al uso, ni mucho menos. Para más datos, aquí tenéis el manual de referencia. Ahora si, continuamos con el tuto: Aclaraciones pertinentes: - La distro esta demasiado verde - Tiene muy pocos paquetes (lo que busquen, es casi seguro que no lo encuentren) - Al instalarla perderan el grub junto con su grub.cfg (hagan copia de los menuntry que tengan) - Pueden perder los datos de las otras particiones si no tienen cuidado al momento de crear la configuracion del config.scm inicial. - El esquema tipico de directorios no es igual. Casi todo lo encontraran con /store. - El unico escritorio es xfce, y no esta bien implementado (aun el scm que hay en la web no sirve). - Los repos hydra de gnu, son extremadamente lentos (tengan paciencia) - La imagen del grub y del dm no son mias. Ya que no pude virtualizar Guix. Por lo tanto le he instalado fisicamente - No me haré cargo de los sistemas rotos Hechas las aclaraciones.... Primero debemos descargarnos la ultima version de Guix, en este caso la 0.8.1. wget ftp://alpha.gnu.org/gnu/guix/gsd-usb-install-0.8.1.x86_64-linux.xz La descomprimimos. unxz gsd-usb-install-0.8.1.x86_64.xz Creamos el USB. Chequeen que este vacio, sino perderan lo que tengan. Y ojo con dd, si de equivocan de particion destino borraran lo que tengan. Cambien /dev/sdc1 por el dispositivo de uds. dd if=gsd-usb-install-0.8.1.x86_64 of=/dev/sdc1 bs=512 Reiniciamos la computadora. Nos va a aparecer la pantalla del grub de Guix, le damos enter: Esto nos dejara en linea de prompt. En mi caso en prompt no aparecio, se quedo colgado buscando unidades (tengo muchas). Si pasa esto simplemente presionen ctrl + c. Si usan la distribucion de teclado latinoamericano, les aconsejo a ejecuten: loadkeys la-latin1 Ahora necesitamos conexion a internet. Dhclient eth0 deberia funcionar en la mayoria de los casos, Pero a veces la interface tiene otro nombre. Por las dudas usamos el comando iwconfig (es el unico que funciona). dhclient eth0 chequeen que esten conectados con ping. Creamos una nueva particion (en mi caso voy a usar /dev/sda6): Yo prefiero usar cfdisk, sino pueden usar fdisk. O tambien podrian haberla creado antes con gparted. cfdisk /dev/sda Creamos un sistema de archivos ext4: mkfs.ext4 /dev/sda6 Montamos la nueva particion en /mnt: mount /dev/sda6 /mnt Iniciamos los repositorios: deco start cow-store /mnt Copiamos la plantilla de configuracion por defecto: cp /etc/configuration-template.scm /mnt/config.scm Y la editamos: nano /mnt/config.scm El contenido original es este: ;; This is an operating system configuration template. (use-modules (gnu)) (use-service-modules xorg networking dbus avahi) (use-package-modules avahi) (operating-system (host-name "antelope") (timezone "Europe/Paris") (locale "en_US.UTF-8") ;; Assuming /dev/sdX is the target hard disk, and "root" is ;; the label of the target root file system. (bootloader (grub-configuration (device "/dev/sdX"))) (file-systems (cons (file-system (device "root") (title 'label) (mount-point "/") (type "ext4")) %base-file-systems)) ;; This is where user accounts are specified. The "root" ;; account is implicit, and is initially created with the ;; empty password. (users (list (user-account (name "alice") (comment "Bob's sister") (group "users") ;; Adding the account to the "wheel" group ;; makes it a sudoer. Adding it to "audio" ;; and "video" allows the user to play sound ;; and access the webcam. (supplementary-groups '("wheel" "audio" "video")) (home-directory "/home/alice")))) ;; Add services to the baseline: the SLiM log-in manager ;; for Xorg sessions, a DHCP client, Avahi, and D-Bus. (services (cons* (slim-service) (dhcp-client-service) (avahi-service) (dbus-service (list avahi)) %base-services))) Yo lo adapte a mis necesidades, y quedo asi: Tengan mucho cuidado de escribir bien la sintaxis, sino el sistema no iniciara. Los mas importante es cambiar los datos para el grub y agregar un usuario. Esta es una configuracion muy basica, pero alcanza para que el sistema inicie. Guardamos e iniciamos el sistema Guix con nuestras configuraciones. guix system init /mnt/config.scm /mnt Cuando termine reiniciamos el equipo. Les aparecerá nuevamente la pantalla del grub de Guix (no encontraran nada de sus otras instalaciones). Luego iniciará Slim. Pueden cambiar el entorno con F1. Les recomiendo usar window maker, ratpoison es mas complicado. Logueense inicialmente como root, no hace falta que pongan clave. No tendran terminales asi que abran una tty. crtl + atl + F1, para abrir tty1. Logueense como root e instalen algunas cosas que les hará falta: guix package -i xfce4-terminal setxkbmap icecat emacs thunar mc scrot feh ejecutamos setxkbmap, para tenet el teclado el latinoamericano: setxkbmap latam Agreguen los usuarios a /etc/sudoers. Pongan clave a root: passwd Volvemos a la tty gráfica en la que estabamos: ctrl + alt + F7 Window maker, como todos los wm no agrega los programas que instalamos al menu automaticamente. Asi que click derecho - run y ejecutamos xfce4-terminal en la terminal ejecutamos mc y abrimos el archivo: /GNUstep/Defaults/WMRootMenu: Agregamos los programas que necesitemos siguiendo el mismo esquema: Luego recargan window maker y ya estan en el menú. Recuerden que para instalar paquetes: guix package -i paquete Para listar paquetes disponibles: guix package -A Para buscar paquetes: guix package -A | grep paquete Guix tambien soporta la compilacion de paquetes y muchas otras cosas mas. Les recomiendo leer las man-pages. Bueno eso seria todo, lo demas es experimentar y divertirse. Saludos.