Sistemas & Desarrollo

encontrados: 45, tiempo total: 0.015 segundos rss2
17 meneos
261 clics
Explorando el kernel Linux: los secretos de Kconfig/kbuild [ENG]

Explorando el kernel Linux: los secretos de Kconfig/kbuild [ENG]

El sistema de configuración/construcción del kernel Linux, también conocido como Kconfig/kbuild, ha existido durante mucho tiempo, desde que el código del kernel de Linux migró a Git. Sin embargo, como infraestructura de soporte rara vez es el centro de atención; incluso los desarrolladores de kernel que lo usan en su trabajo diario nunca lo piensan realmente. Para explorar cómo se compila el kernel de Linux, este artículo se sumergirá en el proceso interno de Kconfig/kbuild, explicando cómo se generan los archivos .config y vmlinux/bzImage y mostrando un truco inteligente para el seguimiento de dependencias.
21 meneos
269 clics

Guía de programacion de módulos del kernel Linux [ENG]

Este libro es una guía de programación de módulos del kernel Linux que se puede distribuir libremente. Inicialmente se centró en la versión 2.2 del kernel hasta que su autor principal, Ori Pomerantz, dejó de tener tiempo para mantenerlo actualizado, con lo que sus mantenedores han cambiado a lo largo de los años hasta que, finalmente, Jim Huang se hizo cargo de su actualización para cubrir hasta las versiones 5.x del kernel Linux.
17 4 0 K 26
17 4 0 K 26
209 meneos
3805 clics
Arrancar un 486 desde un disquete con el kernel Linux más reciente y estable hasta a la fecha [ENG]

Arrancar un 486 desde un disquete con el kernel Linux más reciente y estable hasta a la fecha [ENG]  

En agosto de 2019 participé en un concurso cuyo desafío era sincronizar un archivo MIDI con un sintetizador de voz cantando la letra. En el concurso de esta semana la idea era encontrar un ordenador con un 486 como procesador (pizza box form factor) y hacerlo funcionar, así que me puse a buscar uno por Internet. Después de encontrarlo, el reto era iniciar una versión reciente de Linux, cosa que no fue trivial. Finalmente, después de configurar el kernel de forma mínima y generar un pequeño initramfs, conseguí meterlo en un disquete e iniciar el equipo.
112 97 3 K 52
112 97 3 K 52
3 meneos
21 clics

Diferencias entre ASLR, KASLR y KARL  

A raíz de la publicación de la noticia del lanzamiento del Kernel 4.12 de Linux, el cual trae por primera vez activada por defecto la característica KASLR, y casi simultáneamente la publicación de otra noticia sobre la implementación de una característica llamada KARL en OpenBSD, me ha parecido que sería interesante aclarar las diferencias entre estas técnicas de seguridad, pues pienso que la combinación de ambas va a ser muy importante de cara al futuro de la seguridad de los sistemas, pues van a impedir explotar vulnerabilidades relacionadas con la corrupción de memoria (buffer overflow). Pero antes de entrar a detallar las características de KASLR y KARL, echemos un vistazo ASLR.
6 meneos
91 clics

Cómo compilar el kernel de Linux, parte 1: teoría… mucha teoría [ENG]

Hoy vamos a empezar una serie de entradas acerca de cómo se compila el kernel de Linux para entender mejor cómo funciona un ordenador. Y empezaremos con teoría… con mucha teoría. En esta entrada veremos, para empezar, las tareas básicas de un kernel. Comencemos…
4 meneos
49 clics

Estilo de código en el kernel Linux [ENG]

En este pequeño documento se describe el estilo de código preferido para desarrollar el kernel Linux. El estilo de código es muy personal y no se va a forzar ningún estilo en este documento, pero escribir siguiendo determinada forma hace que el código sea mucho más mantenible. Pero, antes de nada, sugiero descargar e imprimir una copia del estilo de código GNU para NO leerla nunca. Quémala. Es un gran gesto simbólico. Y a continuación, las normas del estilo de codificación del kernel Linux.
7 meneos
56 clics

Portando Linux a una nueva arquitectura, parte 2: el código inicial [ENG]

En la primera parte de esta serie (www.meneame.net/m/SysDevs/portando-linux-nueva-arquitectura-parte-1-ba ) hemos sentado las bases para portar Linux a una nueva arquitectura de procesador explicando los pasos preliminares (sin llegar a escribir ningún código fuente). Este artículo continúa desde allí profundizando en el código de arranque, lo que incluye desde el código necesario para arrancar Linux hasta la creación del primer hilo del kernel.
7 meneos
190 clics

¿Cómo funciona la llamada al sistema ‘open’ en Linux? [ENG]

Como supongo que sabrás, nuestros programas interaccionan con el kernel mediante un mecanismo especial conocido como llamadas al sistema (system calls o syscalls). Si has escrito al menos un programa en C, sabrás que antes de hacer cualquier lectura y/o escritura a un archivo es necesario abrirlo. Para ello se utiliza la función ‘open’. En este caso es una función de la librería estándar (libc) y es ella la que se encarga de realizar la llamada al sistema por nosotros.
5 meneos
146 clics
NodeOS ya no es un sistema operativo de juguete [ENG]

NodeOS ya no es un sistema operativo de juguete [ENG]  

Esta versión de NodeOS parece que ha tenido poco movimiento, pero el hecho es que ha tenido grandes progresos más allá de la repercusión del proyecto, entre ellos, encontrar un error que ha permanecido oculto durante año y medio. Eso puede volver loco a cualquiera.
18 meneos
406 clics
Un sólo kernel de Windows [ENG]

Un sólo kernel de Windows [ENG]

Windows es uno de los sistemas operativos más versátiles y flexibles del mercado ejecutándose en una variedad de arquitecturas (x86, x86_64, ARM y ARM64) y múltiples máquinas diferentes. Además, Windows admite una variedad de máquinas diferetnes que se ejecutan en una multitud de entornos; desde centros de datos, computadoras portátiles, Xbox, teléfonos hasta dispositivos IOT integrados, como cajeros automáticos. En esta publicación hablaré sobre la evolución de las piezas principales del kernel de Windows que le permite escalar de manera transparente desde un chip NVidia Tegra (Surface RT) hasta las grandes máquinas que hacen funcionar los centros de datos de Azure.
13 5 0 K 34
13 5 0 K 34
9 meneos
115 clics
El microkernel seL4 ha sido verificado formalmente para procesadores RISC-V [ENG]

El microkernel seL4 ha sido verificado formalmente para procesadores RISC-V [ENG]

El kernel de un sistema operativo es el software que funciona a más bajo nivel en un ordenador. Es el código que funciona en modo privilegiado (S-Mode en RISC-V), por lo que es el responsable principal y único de la seguridad del sistema. Que un kernel, en este caso seL4, esté formalmente verificado significa que su implementación en C es funcionalmente correcta, ya que ha sido matemáticamente verificada mediante software probando que está libre de errores.
3 meneos
22 clics

Qué ocurre antes de que se inicie el kernel de BSD: primera parte en AMD64 [ENG]

La inicialización del sistema es una de las áreas de nicho que pocas personas analizan. Los detalles exactos varían considerablemente entre diferentes plataformas, firmwares, arquitecturas de CPU y sistemas operativos, lo que dificulta aprenderlos todos. Por lo general, si algo no funciona correctamente durante las primeras etapas del inicio del sistema o si el sistema operativo no se inicia, rara vez tiene algo que ver con el código responsable del inicio. La mayoría de las veces, se debe a otros factores, como el medio de arranque o la configuración del BIOS.
2 meneos
9 clics

Diseño e implementación de variables de condición en el kernel del sistema operativo Haiku [ENG]

Unos meses después de que comenzara mi contrato con Haiku, Inc., reescribí la implementación de las variables de condición del kernel de Haiku (a diferencia de nuestras variables de condición del espacio de usuario, que son de POSIX). Como esta nueva implementación se ha ejecutado en Haiku durante más de un año. y se envió en la última versión sin signos de problemas restantes, pensé que ya era hora de profundizar en la API, su historial de implementación y el diseño de la nueva implementación que escribí.
4 meneos
15 clics

Google revela un error de “alta severidad” sin parchear en el núcleo de Apple macOS

Investigadores de Google Project Zero han hecho pública una vulnerabilidad en macOS, después de que Apple no haya liberado un parche en los 90 días previos a la publicación. Descubierta por el investigador Jann Horn y demostrada por Ian Beer, la vulnerabilidad reside en la forma que el kernel de macOS, XNU, permite a un atacante manipular el sistema de ficheros sin informar al sistema operativo.
3 meneos
12 clics

El código binario del microkernel seL4 ha sido verificado formalmente para procesadores RISC-V [ENG]

En junio de 2020 anunciamos que el microkernel seL4 fue el primer kernel de sistema operativo del mundo con prueba de corrección de implementación verificada por máquina, también verificada para la arquitectura RV64, lo que lo convierte en el primer sistema operativo verificado formalmente para RISC-V. Ahora nos complace anunciar que esta verificación se ha extendido al código binario ejecutable, lo que significa que se ha demostrado que el código máquina que se ejecuta en el procesador es correcto. // Relacionada: El microkernel seL4 ha sido verificado formalmente para procesadores RISC-V.
2 meneos
50 clics

Inyectar código en procesos en ejecución en Linux con ‘linux-inject’ [ENG]  

‘linux-inject’ es una utilidad para Linux que inyecta una librería .so dentro de un proceso en ejecución. Funciona de forma similar a como lo hace LD_PRELOAD pero, como se ha comentado, ‘linux-inject’ inserta el código mientras el proceso está corriendo. Veamos un ejemplo de su funcionamiento.
7 meneos
143 clics
Pinguy Builder, la herramienta definitiva para crear tu propia distribución de Linux

Pinguy Builder, la herramienta definitiva para crear tu propia distribución de Linux

Aunque existen muchas herramientas para crear tu propio pendrive de instalación o tu DVD de instalación de Linux, la verdad es que existen pocas herramientas que te permitan ir más allá y crear tu propia distribución de Linux personalizada. Una de las herramientas más famosas es Linux From Scratch pero para usarlo hay que tener conocimientos muy avanzados de Gnu/Linux. Hace poco apareció una herramienta que no necesitaba tantos conocimientos pero tampoco lo puede usar un novato, es una herramienta llamada Pinguy Builder.
8 meneos
72 clics

Portando Linux a una nueva arquitectura, parte 1: lo básico [ENG]

Aunque un port simple puede contar con tan sólo 4000 líneas de código —exactamente 3775 son las del procesador Hitachi 8/300 (sin MMU) recientemente introducidas en Linux 4.2-rc1—, conseguir que el kernel de Linux se ejecute en una nueva arquitectura de procesador es un proceso difícil. Peor aún, no hay mucha documentación disponible que describa dicho proceso de portabilidad. El objetivo de esta serie de artículos es proporcionar una visión general del procedimiento de portar el kernel de Linux a una nueva arquitectura de procesador.
13 meneos
120 clics

Todo sobre la programación de señales en Linux [ENG]

El artículo describe cómo funcionan las señales en Linux y cómo se manejan usando el API de POSIX. Se cubrirán las funciones en todos los sistemas modernos de Linux, cosa que también se puede aplicar a la mayoría de los sistemas POSIX (a menos que se indique lo contrario). Para seguir bien el artículo se recomienda tener un conocimiento básico acerca de señales.
6 meneos
50 clics

Vistazo al Subsistema Windows para Linux [ING]

Recientemente anunciamos Bash en Ubuntu en Windows que permite binarios Linux ELF64 en Windows via el Windows Subsystem for Linux (WSL). Este subsistema fue creado por el equipo Microsoft Windows Kernel y ha generado mucho revuelo. Una de las preguntas más frecuentes que recibimos es la diferencia que hay con respecto a una máquina virtual. En este primer post de una serie de varios, explicaremos lo básico de WSL que responda esas y otras preguntas. En futuros posts entraremos al detalle de cada componente aquí presentado.
14 meneos
259 clics
Escalado de privilegios en Linux usando LD_PRELOAD

Escalado de privilegios en Linux usando LD_PRELOAD

Las librerías compartidas (shared libraries en inglés) en Linux/Unix normalmente tienen el prefijo lib y la extensión .so. Los programas `ld.so` y `ld-linux.so*` encuentran y cargan los objetos compartidos (librerías compartidas) que necesita un programa, preparan el programa para ejecutarlo y luego lo ejecutan. `LD_PRELOAD` es la variable de entorno que lista las rutas de la librerías compartidas, al igual que `/etc/ld.so.preload`. Hoy vamos a ver cómo aprovechar esta característica común para escalar privilegios.
10 4 0 K 55
10 4 0 K 55
8 meneos
198 clics
Las principales 25 herramientas de monitorización de rendimiento y de depuración en Linux [ENG]

Las principales 25 herramientas de monitorización de rendimiento y de depuración en Linux [ENG]

He compilado 25 herramientas de monitorización de rendimiento y depuración que son útiles cuando se está trabajando en entornos Linux. Esta lista no es completa, sin embargo tiene suficientes herramientas como para que se pueda probar y elegir las adecuadas en cada situación.
10 meneos
167 clics
La guía definitiva sobre las llamadas al sistema de Linux [ENG]

La guía definitiva sobre las llamadas al sistema de Linux [ENG]  

Esta entrada explica cómo funcionan las llamadas al sistema (system calls) del kernel Linux. Además, también explica diferentes métodos de creación de llamadas al sistema, cómo hacer llamadas al sistema de forma manual, los puntos de entrada y de salida de las llamadas al sistema en el kernel, las funciones relacionadas en glibc, errores y mucho, mucho más.
12 meneos
393 clics
¿Qué pasa cuando ejecutas “rm -rf” en una máquina con Linux? [ENG]

¿Qué pasa cuando ejecutas “rm -rf” en una máquina con Linux? [ENG]  

He hecho un pequeño vídeo para mostrar qué pasa exactamente al ejecutar “rm -rf” en una máquina con Linux. Spoiler: realmente no pasa nada, a no ser que utilices el parámetro --no-preserve-root. Aún así, por favor, no ejecutes nunca jamás estos comandos en servidores. Algunos no permiten que lo ejecutes, pero otros, generalmente más antiguos, felizmente borrarán todo el sistema.
« anterior12

menéame