Inicio de sesión de usuario¿Más música?
|
LinuxGNU, Linux, Debian, y demás fanatismos.
CentOS (o también "Futura mudanza: interludio")Esto se podría considerar como un interludio después del artículo anterior. No tengo nuevos progresos que contar en la mudanza de los Retrincos, pero llevo trabajando un tiempo en la nueva máquina, con CentOS, y hay ciertas cosas que me gustaría comentar por aquí. El titular es: CentOS es una distribución interesante. Y eso, viniendo de un hardcore user de Debian (y Ubuntu), merece una explicación. Lo mejor que tiene Debian no es apt-get. Es una de las bazas principales, por supuesto, pero no es sólo eso. La distribución está bien pensada para hacer fácil el trabajo del administrador. Quizás no tanto del usuario, pero sí del administrador. Todo está bien organizado y pensado para que no haya que hacer hacks para que funcionen las cosas. Para mí, eso se ve sobre todo en el estilo hyper-SysV (término que me acabo de inventar, no lo busquen por ahí) de la configuración. Hay muchos programas que se configuran con ficheros sueltos en un directorio. Eso hace muy fácil añadir configuración para ese programa desde otros paquetes, o vía sincronización remota. Más cosas buenas de Debian: hay paquetes a punta pala. En serio. Es bien raro el software que merece la pena y no está empaquetado para Debian (por otro lado, hay muchos software que está empaquetado pero no merece la pena). Y todo en la distribución oficial, sin necesidad de "cazar paquetes" por Internet adelante. Me gusta mucho la gestión de ficheros de configuración de Debian. Hay muchos helpers para hacer las cosas (como la gestión de ficheros en /etc/rc?.d), lo que de cara a "scriptear" cosas es una ayuda. Creo que el término apropiado para esto es "abstracción". No tienes que tocar a mano todos los ficheros, sino que puedes usar herramientas del sistema para que lo hagan por ti; y si en algún momento cambia la ubicación de los ficheros, las herramientas seguirán funcionando. En fin. En el fondo, llevo demasiados años usando Debian como para analizar por qué me gusta. Seguro que las razones que he puesto ahí arriba no les convencen a menos que ya estuvieran usando Debian. Releyéndolas, no me convencen ni a mí. Pero íbamos a hablar de CentOS. CentOS es una recompilación de RHEL, la versión enterprise de Red Hat. Mis odios hacia distribuciones basadas en rpm vienen de la "caza de paquetes" que mencionaba antes y de yast, o lo que es lo mismo, Suse. Las distribuciones basadas en rpm, a lo mejor porque las probé poco, siempre me pareció que dependían mucho de programitas gráficos para administrarlas. Que no había programas en línea de comandos para administrar el sistema, y al final tenías que tirar de editor de texto para hacer tú mismo lo que hacía un CentOS es fácil de administrar. Para instalar paquetes tiene yum, que es en plan apt-get pero con otro nombre. Gandi tiene unos repositorios propios que vienen configurados en la máquina, pero no tienen demasiados paquetes (recuerde el lector que uno está acostumbrado a los vastos océanos paquetiles de Debian). La solución fue instalar un paquete de RPMforge que daba acceso a este repositorio. Ahora ya tengo tantos paquetes disponibles como tenía en Debian. No sólo me gusta yum por los paquetes que hay disponibles para él, sino porque tiene todas las instrucciones esperables en un gestor de paquetes. Puedes instalar y desinstalar paquetes, buscar información, listar los que encajan en un patrón, actualizar todo el sistema o sólo unos pocos paquetes, etc. No lo he dicho, pero evidentemente, maneja automáticamente las dependencias para que no tengas que instalarlas tú a mano. Los paquetes en Debian y CentOS (o más bien, RH) son distintos. En CentOS vienen paquetes más grandes, con todas las cosas que pueden hacer falta para un programa, aunque luego no se usen. Por ejemplo: hay un sólo paquete clamav (aunque también hay un paquete clamav-db), mientras que en Debian está dividido en clamav-daemon, clamav-freshclam, libclamavX (creo que "X" va por la 4), etc. En la práctica quiere decir que instalas algo más de basurilla con los paquetes de CentOS, pero ahora mismo no me afecta demasiado. Supongo que se nota más cuando quieres instalar un par de paquetes de Gnome y KDE y te instala quince más. Hay herramientas para gestionar los ficheros de configuración. Pocos he tocado de momento, pero los que decía antes (los de /etc/rc?.d) se configuran con chkconfig. Y me gusta más cómo funciona este programa que el update-rc.d de Debian. Con chkconfig se pueden ver la lista de todos los servicios que hay, en qué runlevels van a arrancar, etc. Creo que en Debian no se puede ver sólo con un comando, aunque estaría gratamente sorprendido si se pudiera. Hay también un comando (service) para invocar los scripts de /etc/init.d que todavía no entiendo muy bien qué ventaja tiene. Podría acostumbrarme a usarlo (siempre me equivoco al teclear /etc/init.d, y me sale ettercap por medio), aunque prefiero no hacerlo para luego no "trabucarme" cuando vuelva a una Debian. A mi edad estas cosas pasan. CentOS no tiene la misma filosofía hyper-SysV de Debian. Por ejemplo: la configuración de Apache en Debian se hace quitando y poniendo enlaces en directorios especiales de /etc/apache2, pero en CentOS es un poco más "a saco": hay un directorio /etc/httpd/conf.d en el que puedes dejar ficheros para configuraciones de Apache, pero para desactivarlos tienes que quitarlos de ahí. En Debian también se configuran los módulos de Apache de forma parecida, mientras que en CentOS cargas los módulos añadiendo líneas a /etc/httpd/conf/httpd.conf. Esta diferencia tan simple, y que los paquetes de Apache de Debian estén mucho más granularizados, permite instalar y desinstalar módulos de Apache del sistema sin que haya que retocar el fichero de configuración de Apache. Y de momento no tengo muchas cosas más que decir. Pero no se sorprendan si dentro de poco aparece un artículo llamado "CentOS (2)".
Dongle Wifi USB con chipset ZyDAS en LinuxSé lo que estarán pensando: "hay miles de howtos en Internet explicando cómo se hace esto". Será cierto, pero yo llevo aquí una hora precisamente por hacer caso de uno de ellos. Así que les pongo unas breves notas de lo que tuve que hacer por si sirven de ayuda. Hago notar que no tenía (casi) ni idea de cómo funcionan las redes Wifi en Linux antes de empezar. Ahora sigo sin tener ni idea pero sé cómo hablar para que no sea tan evidente. Antes de nada, explico lo que quería hacer. Que me he dejado llevar por la emoción (y la hora) y seguramente no he sido muy claro. Un compañero de trabajo me pasó un dongle USB Wifi, que pretendo usar para que mi hermana pueda tener un ordenador conectado a Internet en su habitación sin tener que agujerear la pared para pasar cable. Me dijo que funciona en Linux, y es cierto; pero recuerdo que mencionó algo de que "no era del todo fácil" (a lo que, típico de mí, no di mucho crédito). También es cierto. Lo primero que hice fue enchufar el chisme y asegurarme de que se veía con lsusb: root@howler:~# lsusb Bus 004 Device 004: ID 0ace:1211 ZyDAS 802.11b/g USB2 WiFi Bus 004 Device 001: ID 0000:0000 Bus 003 Device 001: ID 0000:0000 Bus 002 Device 001: ID 0000:0000 Bus 001 Device 004: ID 413c:3200 Dell Computer Corp. Bus 001 Device 003: ID 413c:2003 Dell Computer Corp. Bus 001 Device 001: ID 0000:0000 (Como nota curiosa, no sé qué es eso de "Dell" que sale ahí; el ordenador en el que estoy probando es un clónico.) La distribución que uso en el ordenador es Ubuntu "Feisty". El módulo del kernel para usar el dongle es zd1211rw, que debería cargarse automáticamente tras insertarlo. En casa tengo una pequeña red con un servidor DHCP, y el AP está haciendo de "puente" entre esa red y la Wifi. Con WEP funciona de forma muy sencilla, insertando unas líneas en /etc/network/interfaces como éstas:
iface eth1 inet dhcp
hostname howler-wl
wireless-essid "mi red wifi"
wireless-key "1234567890ABCDEF"
Los valores del ESSID y la key son los de su red, como es lógico. Ahora bien: yo no uso WEP, sino WPA con AES. Hay un howto para Ubuntu con muy buena pinta aquí: http://ubuntuforums.org/showthread.php?t=92327 Y como dijo alguien una vez, "siempre hay una explicación sencilla y convincente pero equivocada". El enlace que les puse ahí es un buen ejemplo. Supongo que será por lo antiguo (es del 2005), pero aunque los pasos son los correctos, hay varios detalles que hacen que, al menos en mi caso, nada funcione si lo hago como dice el autor. Hay varias cosas que tuve que hacer de otra forma. Lo primero: no hace falta compilar módulos, porque los que vienen con Feisty funcionan bien. Idem para wpasupplicant. Ésta era fácil. La manera de comprobar si su dispositivo Wifi está ahí es, como se indica, ejecutar iwconfig. En Feisty los dispositivos Wifi aparecen como tarjetas Ethernet estándar: el mío aparece como eth1. Para ver la configuración habría que teclear iwconfig eth1. Pero a continuación se dice que hay que hacer iwlist scanning, y eso a mí no me funcionó a menos que levantara antes el interfaz "a pelo" con ifconfig eth1 up. Así, sin haberlo configurado ni nada. Bruto que es uno. Para ver todas las redes Wifi que detecta el dongle, además, tuve que desactivar el ESSID con iwconfig eth1 essid off. A lo mejor "desactivar el ESSID" no es la expresión correcta; me remito a mi ignorancia de estos temas para excusarme. Una vez hechas estas dos cosas ya podía hacer iwlist scanning y detectar varias redes (entre las que estaba la mía). Para usar WPA hay que utilizar el programa wpa_supplicant, del paquete wpasupplicant. La traducción entre los términos que aparecen en la configuración de wpa_supplicant y los de la configuración de mi AP (un Linksys WAP54G) son inmediatas salvo porque el cifrado "AES" del Linksys es el "CCMP" del programa. Teniendo esto en cuenta, el fichero de configuración /etc/wpa_supplicant/wpa_supplicant.conf (una variación del wpa-psk-tkip.conf que viene en los ejemplos) queda así:
network={
ssid="mi essid"
scan_ssid=1
pairwise=CCMP
psk="mi clave muy secreta"
key_mgmt=WPA-PSK
proto=WPA
}
El programa es muy quisquilloso con la sintaxis del fichero. Al principio tenía la línea de network con un espacio separando el signo igual y la llave, y no funcionaba. Al ejecutar el programa en línea de comandos no decía nada, salvo que no usara el parámetro -Bw que aparece en el howto y que añadiera algo para mostrar la información de debug (-dd). Aparte, el parámetro -D zydas que aparece en el documento no existe. El que funciona es -D wref. Otro detalle divertido: la autenticación con WPA no funcionaba salvo cuando desactivaba el ESSID. Cuando intentaba levantar el interfaz, aparecía este mensaje en los logs del kernel: howler kernel: [ 4324.104000] ADDRCONF(NETDEV_UP): eth1: link is not ready Y que si quieres arroz, Catalina. Así que desactivé primero el ESSID y luego levanté el interfaz otra vez. En resumen, para configurar la conexión "a pelo" habría que hacer esto: iwconfig eth1 essid off ifconfig eth1 up wpa_supplicant -dd -i eth1 -c /etc/wpa_supplicant/wpa_supplicant.conf -D wext Si les sale una línea como ésta: EAPOL: SUPP_PAE entering state AUTHENTICATED Entonces es que ha funcionado. Si no ... bueno, es culpa suya: ¿quién les manda fiarse de lo que pone en una página web cualquiera? ¿No han prestado atención a lo que les dije? Ahora sólo queda configurar el dispositivo en /etc/network/interfaces. Para eso añadí estas líneas:
iface eth1 inet dhcp
hostname howler-wl
wireless-essid any
wpa_conf /etc/wpa_supplicant/wpa_supplicant.conf
La última línea es la que marca la diferencia: no funcionó hasta que la puse. Durante un rato no conseguí que se lanzara automáticamente wpa_supplicant al hacer ifup del dispositivo, y leyendo /etc/network/if-pre-up.d/wpa_supplicant descubrí que debía haber una variable IF_WPA_CONF definida con el nombre del fichero de configuración para que la cosa funcionara. No sé si estará documentado en algún sitio (algo tipo Las 10 razones más frecuentes por las que no le funciona la tarjeta Wifi, o algo así), pero yo no lo vi1. El por qué IF_WPA_CONF y la línea wpa_conf están relacionadas está explicado en man interfaces. Con eso, al fin, tengo Wifi con el dongle USB. Ignoro si alguna de las herramientas "visuales" de Ubuntu hace todo esto más fácil. Dejo esto aquí para que Google pueda decirles algo si llegan a hacer una búsqueda parecida. Así no les saldrán páginas con datos equivocados y no perderán una hora de su vida como yo. Aunque por otro lado, éstas son las cosas divertidas de usar Linux. 1 Otra cosa curiosa de ésas en las que la solución no parece tener ninguna relación con el problema: los thumbnails de videos en Konqueror no me funcionaron hasta que instalé el paquete libarts1-xine. Había instalado antes todos los paquetes de Xine sin resultado, pero era ése el que hacía falta. Que me lo expliquen.
El vmware de los recuerdosLo sé, lo sé: cada vez soy más ocurrente con los títulos de las entradas en el weblog. Es que uno es así de artistoso. Hoy me he dado un desayuno pantagruélico y debería estar más inspirado, pero qué se le va a hacer. Cosas de la edad. (Por si se lo preguntaban, el párrafo anterior sólo lo puse para poder usar la palabra "pantagruélico"; además de poco ocurrente y anciano, también soy un pedante fanfarrón) Fue por el año 2002 cuando Loki Games cerraba. Fue la empresa más importante en cuanto a juegos para Linux: portó títulos como Civilization: Call to Power, Descent 3, Railroad Tycoon II, Sid Meier's Alpha Centauri (el mejor de toda la saga Civilization y derivados, en mi opinión; se merece una entrada por sí solo), Kohan: Immortal Sovereigns, Heretic 3 (con el motor de Quake 2; un juego con el que me pasé dos o tres días jugando de 8 a 10 horas al día, y disfrutando cada una de ellas), Majesty, SimCity 3000, Soldier of Fortune ... y aún me dejo alguno. Son, ahora, juegos antiguos (Alpha Centauri es del 1999, tiene ocho años); pero como para mí son de esa época mágica en la que tienes veintipocos años y mucho tiempo libre (aunque de eso no te das cuenta hasta que empiezas a trabajar), me siguen gustando mucho. Esos juegos fueron hechos para los sistemas operativos de esa época, es decir: distribuciones que ahora también son antiguas. Casi ninguno de esos juegos funciona en mi nuevo ordenador, tanto por arquitectura (un AMD64 es un x86_64, y el instalador de los juegos no se deja coaccionar para ignorar ese detalle) como por distribución (Ubuntu "Edgy Eft" tiene una glibc moderna que hace que fallen los binarios de algunos juegos). Y es una pena, porque me sigue gustando jugar un poco a esos juegos de vez en cuando. Y cuando digo "un poco" quiero decir "más horas de las que me gusta reconocer". ¿Qué puedo decir? Tengo mis vicios. La solución a todo esto es VMware Player, archive.debian.org, qemu-img y EasyVMX.
Para abreviar, creé una máquina virtual con Debian "Woody". ¿Se acuerdan de ella? Fue la distribución estable de Debian del año 2002 (con, como siempre, un largo retraso respecto a la fecha de salida planeada). El mayor problema que encontré fue cómo instalar un sistema base. Se puede hacer a partir de los paquetes de archive.d.o, seguro, pero antes de pegarme con ellos encontré un CD de Woody que tenía por casa e instalé Woody en VMware a partir de ahí. Aún así, hubo varios problemas. Por si a alguien se le ocurre hacer lo mismo y se los encuentra:
Recuerdo que en aquellos años (2001, 2002) también se decía que Linux iba a "dominar el escritorio". Los gurús mediáticos de Linux llevan diciendo que "éste es el año de Linux en el escritorio" desde el año 2000. Y lo peor es que yo era uno de los que se lo creían, por entonces. Ahora todavía estamos lejos de eso, y pensar que estábamos tan ciegos y éramos tan ingenuos como para creer aquello me da un poco de risa. El caso es que no había fuentes suavizadas (antialiasing, que le dicen), Gnome estaba en su versión 1.4 (con GTK 1.2 y usando gmc como navegador de ficheros, en lugar de Nautilus), KDE en la 2 y pico, no existía Firefox (estaba Mozilla, que era una bestia de mil toneladas que ningún equipo era suficientemente potente como para mover con soltura) ... y lo más avant garde para un escritorio Linux era Enlightenment. Oh, Enlightenment. Cómo babeábamos con ese programa. Para mi generación es lo mismo que Xgl/AIGLX/Compiz/Beryl para la actual: lo último de lo último, lo más trendy, lo más espectacular. Enlightenment iba a cambiar el escritorio de Linux (porque aquel iba a ser el año del escritorio en Linux, recuerden). Y requería menos recursos de los que puede parecer por la descripción (aunque la CPU sufría un poco si activábamos todos los efectos y caralladas gráficas que había disponibles).
Tristemente, la versión estable de Enligtenment (0.16) es ahora la misma que en aquellos años. Es un proyecto personal de Rasterman, una de las primeras rockstars del mundo Linux. Aunque sigue trabajando en él, Enlightenment ha desaparecido del mapa. Supongo que habrá gente usándolo, pero en cuanto a integración y usabilidad no puede competir con los KDE o Gnome actuales. Pero como uno es un nostálgico, y algo había que usar en mi máquina virtual como window manager ... qué narices. Enlightenment vuela en la máquina virtual. Instalé también ETerm, un emulador de terminal que incorporaba desde hacía mucho tiempo mejoras gráficas que aparecieron luego en gnome-terminal y konsole (fondos, translucidez), y un montón de epplets que no uso, pero que están ahí porque ... bueno, porque quería una "experiencia de Enlightenment completa", supongo. En los tiempos de Woody los recursos eran más limitados que ahora, y si instalaba todo el montón de cosas "bonitas" que quería el equipo se resentía un poco. Pero como en la máquina virtual eso no era un problema ... ¡alegría! ¡Instalemos de todo! Entonces yo tenía un K6 a 266Mhz forzado a 300Mhz, y ahora tengo un Athlon64 3500+. No creo que la falta de potencia de CPU sea un problema. Resultado final: me he echado unas viciadas1 al Majesty que lo flipas2, neno3. El SimCity 3000 no funciona, y estoy revisando mis juegos de Linux (que compré hace años, por eso de tenerlos originales) para ver cuáles puedo recuperar. Tengo un icono en el escritorio en el que pincho y lanza automáticamente la máquina virtual, para poder ponerme a
Y estoy por probar Enlightenment en este equipo. No es que vaya a dejar de usar KDE, claro, es sólo por curiosidad. Creo. 1Partidas. 2Forma coruñesa sinónima de "tus negras pupilas se dilatan y tu mandíbula, presa del asombro y la consternación, cae abierta como las flores de un árbol de fragancia exótica al suelo de azafranado color en la melancólica estación". 3Cualquier individuo al que el interlocutor se dirija, sea masculino, femenino, animal, vegetal, mecánico, vivo, muerto ... O como terminador genérico de cualquier frase, si se tienen entre 15 y 20 años (apreciación basada en estudios de campo). Actualización (2007/03/18): en el fichero de definición de la máquina virtual para VMware Player (woody.vmx en mi caso) hay una línea con ethernet0.virtualDev en la que se puede indicar el tipo de la tarjeta de red: e1000 (la que usé yo, Intel a gigabit), vlance (una AMD PCNet PCI) y vmxnet (la tarjeta de red virtual propia de VMware). En EasyVMX también se puede escoger el tipo de tarjeta de red, detalle en el que no me fijé. Hoy lo hice para otra cosa (una máquina virtual con Windows 2000 que no tenía controlador para la e1000), y me di cuenta de que, si hubiera escogido como tipo de red la vlance, seguro que ya hubiera tenido soporte en Woody. Quedan avisados por si les ocurre a ustedes.
Demasiado viejo para usar Debian "sid"Éste va a ser un post técnico, sobre Linux. Es una advertencia para mis lectores no técnicos. Hoy me he dado cuenta de que estoy demasiado viejo para usar Debian sid. Para las dos o tres personas que todavía no saben lo que es, sid es la versión inestable y en perpetuo desarrollo de Debian. Tradicionalmente es la que usan (usamos) los desarrolladores, para avisar pronto de cuando un paquete "rompe" o hay algún otro problema. Porque hay paquetes que rompen. De mala manera. Y a menudo. Hace años, en mis primeros años de debianita o debianero (que ambas palabras son igualmente ignoradas por la RAE), podía usar sid sin complejos. La mayor parte del tiempo que pasaba delante del ordenador se dedicaba precisamente a probar cosas, ver cómo rompían e intentar arreglarlas. No siempre a propósito, todo sea dicho. ¿Que algo rompía? No pasaba nada: ¡diversión asegurada durante varias horas! Me lo pasaba en grande mientras intentaba "desfacer el entuerto". Y si no conseguía arreglarlo, siempre podía reinstalar. No tenía nada que mereciera la pena conservar, al fin y al cabo. Todo ha cambiado. Ahora uso el ordenador de casa para trabajar, y tengo datos que no quiero perder. Si se estropeara mi disco duro y me pillara sin backups, el grito se oiría en la estepa de Mongolia. Hay muchas cosas que ni siquiera tengo en backups, porque ocuparían demasiado, y dependo exclusivamente del disco duro para conservarlas. Todo muy precario, como pueden ver. Hasta he pensado que, si tuviera dinero, me compraría un Mac. Para que vean lo que hace la edad. El caso es que, tradicionalmente, uno de los problemas más grandes que puede tener la gente que usa sid es que "reviente" la libc. Este paquete es la biblioteca que usan el 99% de los programas instalados, con lo que si falla ... se acabó. Ni siquiera un ls funcionará. Ha pasado varias veces a lo largo de la historia de sid, y seguramente volverá a pasar (por supuesto, a mí me ha pasado un par de veces). Al fin y al cabo, sid está precisamente para eso: para que las cosas se estropeen ahí, y no en la distribución estable. Es el campo de pruebas de Debian, y la gente que la usa ya sabe a lo que se expone. Bueno, para resumir: otro de los paquetes que pueden causar el caos en una instalación si fallan son los de LVM. Yo uso LVM desde hace tiempo, y también he sufrido un par de "casques" de los paquetes LVM. En una de esas ocasiones perdí todo lo que tenía en el portátil. Y la otra ocasión fue hoy. Por supuesto, si están leyendo esto ahora mismo es que todo se ha arreglado ya. Tuve la suerte de tener el portátil y poderme bajar paquetes de Ubuntu que reemplazaron a los que tenía de Debian sid. Tengo una copia de Necromantux con la que también hubiera resuelto, pero por desgracia me la dejé en el trabajo. Y también tengo unos CDs de Ubuntu, uno de ellos una edición Live, pero tampoco los tenía a mano. Una verdadera conspiración. Aparte del portátil con Ubuntu, también fueron imprescindibles otras medidas de precaución que pongo a continuación, por si ayudan a alguien:
Con todo esto, estoy pasando en pasarme a Ubuntu. Ya tengo una Debian "ubuntizada" en el portátil, y a lo mejor lo hago también en el ordenador de sobremesa. Un amigo la está usando en su ordenador de sobremesa y está muy contento con ella. Por lo que yo he visto, tiene software bastante actualizado y es muy estable. En esta etapa de mi vida (siempre quise usar esa frase) no me puedo permitir varias horas de downtime porque en sid rompan paquetes imprescindibles para el sistema. También podría pasar a testing, que es lo que tenía antes, pero tiene la desventaja de que los cambios que hay en sid tardan un tiempo en propagarse, y a veces puedes tener el problema de no poder actualizar varios paquetes porque uno del que dependen todavía no ha pasado de sid a testing. Aunque por otro lado, que de vez en cuando rompa algo y te deje con la duda de si perderás todo tu trabajo tiene una ventaja: es la mejor motivación para hacer de una vez el backup que llevabas postergando varias semanas.
Mis programasAparte de todo lo demás, también escribo programas. Pequeñajos, mal diseñados, poco útiles y posiblemente llenos de bugs, pero los hago. Aquí pongo un resumen de los que me atrevo a enseñar.
|
Secciones de la antigua webMe lo pidoMi "wishlist" (más por recordarlo yo que por esperar que alguien me compre algo) Contenido popularAnuncios |
Comentarios recientes
2 weeks 2 days ago
19 weeks 2 days ago
24 weeks 4 days ago
27 weeks 2 days ago
27 weeks 2 days ago
31 weeks 3 days ago
34 weeks 1 día ago
35 weeks 6 days ago
37 weeks 6 days ago
39 weeks 2 days ago