SlideShare una empresa de Scribd logo
1 de 30
Universidad Nacional de Ingeniería.
Facultad de Electrotecnia y Computación.
F.E.C.
Arquitectura de sistemas operativos
Proyecto de compilación del kernel de Linux
Elaborado por: No. Carnet
Morales Herrera Jeffree Jordy 2017-0479U
Molina Zambrana Ernesto Rafael 2017-0935U
Hernández Gómez María Estefanía 2017-0320U
Grupo: 4T2-CO.
Docente de la Asignatura: Danny Oswaldo Chávez Miranda.
Contenido
Introducción.......................................................................................................................... 3
Objetivos:........................................................................................................................... 3
Linux................................................................................................................................... 4
Linux Mint.......................................................................................................................... 4
Desarrollo.............................................................................................................................. 6
Instalación de Linux Mint................................................................................................. 6
Configuraciones iniciales................................................................................................ 7
Instalación de dependencias........................................................................................... 8
Descarga del kernel.......................................................................................................... 9
Impresión del mensaje durante el arranque.................................................................10
Creación de enlace simbólico........................................................................................11
Configuración.......................................................................................................................12
Configuración de fuentes de Linux...............................................................................13
Compilación e instalación del kernel............................................................................14
Cambiar logo inicio de Linux .............................................................................................18
Método 1:..........................................................................................................................19
Método 2:..........................................................................................................................19
Sistema Live.........................................................................................................................24
Driver.....................................................................................................................................27
Conclusiones.......................................................................................................................29
Bibliografía...........................................................................................................................30
Introducción
Linux es un núcleo o kernel de código abierto, lo que significa que su código fuente
es libre de estudiar, modificar y distribuir, por esta razón existen distintas
distribuciones basadas en el kernel Linux llamadas “distros” que incluyen paquetes
de software para satisfacer a sus usuarios, pudiendo incluso realizar versiones
personalizadas de estas distribuciones, siendo este es el objeto de este proyecto
Linux Mint es una distribución GNU/Linux con el propósito de ser un sistema
operativo moderno, elegante y fácil de usar y cuenta con una de las comunidades
más grandes con millones de usuarios.
Linux Mint 20.2 “Uma” fue seleccionado como para realizar una versión
personalizada de la distro instalando la versión del kernel 5.14.16.
Objetivos:
1. Compilar e instalar el kernel 5.14.16 de Linux en la distro Linux Mint.
2. Mostrar la impresión de un mensaje en el arranque del sistema operativo.
3. Modificar el logo de arranque del sistema operativo.
4. Instalar el device driver “Hello world!”.
5. Crear un sistema Live con la versión personalizada de la distro.
Linux
Durante el desarrollo de MINIX muchas personas exigían más y mejores
características para este sistema operativo, Andrew Tanenbaum, el autor, afirmaba
que este sistema operativo debía ser lo más pequeño y comprensible para el
aprendizaje, por lo que negaba estas peticiones.
Por esto un estudiante finlandés llamado Linus Torvalds escribió un clon de UNIX
conocido como Linux que podría tener más características que MINIX. Linux liberó
su primera versión (0.1) en 1991 y consistía en 9500 líneas de código en C y 950
líneas de código en ensamblador. Sin embargo, Linux siguió su desarrollo con
rapidez y lanzó la revisión mayor 1.0 en 1994.
Linux incluye una licencia conocida como GPL (GNU Public License) que especifica
que es lo que se puede y no puede hacer con el código. Los usuarios pueden utilizar,
copiar, modificar y redistribuir el código fuente y binario libremente. Una de las
restricciones es que no puedes vender ni distribuir el código binario solamente, sino
que debe incluir el código fuente.
Linux Mint
Linux Mint es una distribución GNU/Linux, basada en Ubuntu (que a su vez está
basada en Debian). También está disponible una edición basada en Debian. Linux
Mint tiene como objetivo presentar un sistema operativo moderno, con un énfasis
en la facilidad de instalar y en la usabilidad. Es reconocido por ser fácil de usar,
especialmente para los usuarios sin experiencia previa en Linux.
Linux Mint tiene 3 principales entornos de escritorio:
Cinnamon, siendo el más usado por ofrecer un entorno elegante y hermoso.
MATE, más estable y optimizado
Xfce, el mas ligero y menor uso de recursos
Este sistema operativo se compone de muchos paquetes de software, los cuales se
distribuyen la mayor parte bajo una licencia de software libre. La principal licencia
utilizada es la GNU General Public License (GNU GPL) que, junto con la GNU
Lesser General Public License (GNU LGPL), declara explícitamente que los
usuarios tienen libertad para ejecutar, copiar, distribuir, estudiar, cambiar,
desarrollar y mejorar el software. Linux Mint es financiada por su comunidad de
usuarios.
Este sistema operativo no sigue un ciclo predecible de lanzamientos, sino que los
plantea uno tras del otro. En cada caso, el proyecto define primero los objetivos del
próximo lanzamiento. Cuando se alcanzan todos los objetivos, usualmente, se
procede al lanzamiento de una beta, luego pasa por el lanzamiento de una Release
Candidate (RC) y luego si todo va bien, se anuncia la fecha para el lanzamiento de
la versión estable. Luego de un tiempo que es lanzada la versión principal, son
lanzadas las versiones alternativas.
Cada lanzamiento lleva asociado un nombre femenino, el que comienza con la letra
que le corresponde al número de versión, por ejemplo, Linux Mint 1.0 se llamó 'Ada',
la versión 2.0 'Barbara' y así sucesivamente según orden alfabético. La última
versión hasta el momento recibe el nombre de 'Uma'.
Desarrollo
Instalación de Linux Mint
Para iniciar e instalar Linux Mint nos dirigimos a la página oficial https://linuxmint.com/ y
descargamos la última versión estable, en este caso es 20.2 “Uma”
Para crear un medio de arranque utilizamos el software Etcher y una memoria USB
Configuraciones iniciales
Lo primero es instalar las actualizaciones importantes de Linux Mint, esto lo hacemos desde
el gestor de actualizaciones
Una vez actualizado Linux Mint, accedemos a la terminal como super usuario usando el
comando sudo su, de ahora en adelante todas las actividades de realizaran en modo super
usuario
Instalación de dependencias
Linux Mint utiliza el gestor de paquetes apt, todas las dependencias se descargaran e
instalaran usando este paquete.
Las dependencias instaladas servirán para compilar correctamente el kernel
- kernel-package:
- build-essential:
- make
- libncurses5-dev
- libelf-dev
- libssl-dev
- bc
- kmod
- cpio
- flex
- Linux-source
Descarga del kernel
Para descargar los archivos del kernel de Linux nos dirigimos a https://www.kernel.org/
En nuestro casodecidimos utilizar la versión 5.14.16 y lo descargamos desde un repositorio
Por defecto el archivo se guarda en la carpeta Descargas
El proceso de descomprimir y compilar el kernel se puede realizar desde cualquier
directorio, nosotros decidimos copiar el archivo descargado al directorio /usr/src
Usamos cd para dirigirnos al directorio
Para descomprimir los archivos del kernel usamos el comando tar
Al descomprimir quedará el directorio donde están todos los archivos del kernel, es este
directorio se realizaran todas las configuraciones para compilar e instalar este kernel
Impresión del mensaje durante el arranque
Para lograr que imprima el mensaje deseado tenemos que dirigirnos al archivo main.c en
el directorio /init
El mensaje tiene que escribirse debajo de las siguientes líneas de código:
system_state = SYSTEM_RUNNING;
numa_default_policy();
printk() es una función de C que imprime mensajes en el registro del kernel.
KERN_ALERT indica la importancia del mensaje haciendo que imprima, en cualquier caso.
Creación de enlace simbólico
La creación de un enlace simbólico sirve como copia de seguridad de nuestros archivos del
kernel
Configuración
Para realizar las configuraciones del kernel se utiliza el comando make menuconfig
Al ejecutar este comando se iniciará un menú donde se podrán habilitar e inhabilitar las
características y los dispositivos que soportara el kernel.
En nuestro caso lo dejaremos tal y como está, simplemente se guarda la configuración
actual
Durante la compilación el error
No rule to make target debian/canonical-certs.pem' needed by 'certs/x509_certificate_list'
ocurrió, esto debido a que no puede localizar el paquete en el directorio, esto se resuelve
eliminando este directorio de la line CONFIG_SYSTEM_TRUSTED_KEYS=”” enel archivo
.config que se guardó anteriormente con make menuconfig
Configuración de fuentes de Linux
La dependencia linux-source descarga un archivo comprimido con las fuentes de Linux y
se guarda en el directorio /usr/src
Usamos tar para extraer los archivos
Para realizar la configuración usamos el comando make ARCH=i386 defconfig, esto creara
un archivo .config según la arquitectura del CPU, en este caso i386
Compilación e instalación del kernel
En este momento ya podemos iniciar la compilación con el comando make ubicándonos en
el directorio de nuestro enlace simbólico
En nuestro caso la compilación tardo 4 horas y 7 minutos
Después de compilar procederemos a compilar los módulos con el comando
make modules
Una vez compilados los instalamos con make modules_install, existe un método de
instalar los módulos más ligeros con INSTALL_MOD_STRIP=1
Una vez instalados los módulos, instalamos el kernel con make install, de igual forma
usamos INSTALL_MOD_STRIP=1
En este momento el nuevo kernel ya esta instalado y solo es cuestión de reiniciar para ver
los cambios, pero antes hay que modificar el grub para poder ver el mensaje impreso en el
archivo main.c
Para esto nos dirigimos al directorio /etc/default y abrimos el archivo grub con nano
En el archivo grub vamos a modificar las líneas:
GRUB_TIMEOUT=10
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
Ahora serán
GRUB_TIMEOUT=30
Para que el tiempo antes de desplegar el menú de carga se mayor y el mensaje impreso se
pueda ver más tiempo
GRUB_CMDLINE_LINUX_DEFAULT=”splash”
Para que pase a modo gráfico y muestre el logo de Linux
El archivo grub quedará de la siguiente manera:
Podemos cambiar el nombre de los sistemas que se cargan en el archivo grub.cfg en el
directorio /boot/grub, esto es opcional, nosotros lo dejamos igual
Ahora queda actualizar el grub usando update-grub
Después usamos update-grub2, no es necesario ya que es solo un enlace simbólico a
update-grub pero no está demás usarlo
Ahora lo único que queda es reiniciar y ver los cambios con el comando reboot
Cambiar logo inicio de Linux
Pudimos encontrar dos métodos para cambiar el logo de inicio de Linux Mint
Método 1:
Nos dirigimos a la ruta /usr/share/plymouth/mint-logo
Renombramos el archivo original logo.png por seguridad
Elegimos la imagen que queramos, como recomendación debe ser una imagen 100x100 y
la renombramos como logo.png
Usamos el comando update-initramsfs y reiniciamos con reboot
Método 2:
Nos dirigimos a la página de gnome-look acá encontraremos múltiples temas para
personalizar nuestra distribución.
https://www.gnome-look.org/browse/
Nos dirigimos en Plymouth Themes y buscamos el tema que queramos instalar para
nuestro logo de Linux Mint, en nuestro caso será el tema Linux Mint 1.0.
Una vez seleccionado el tema procedemos a descargarlo, cuando hayamos seleccionado
el tema, hacemos clic en files y descargamos en este caso, el tema pesa 0.85mb, otros
temas pueden ser más pesados.
Una vez descargado, nos iremos a la carpeta Descargas para descomprimir el archivo
podemos usar la terminar para hacerlo, en este caso lo haremos sin comandos,
seleccionamos el archivo que acabamos de descargar, daremos clic derecho y extraer
aquí y nos dejara la carpeta ya descomprimida
Una vez descomprimida la carpeta Linux Mint (este nombre varía dependiendo del tema
que usted haya descargado), daremos clic derecho y copiar en la siguiente dirección
usr/share/plymouth/themes y pegamos
Luego abriremos la terminar en modo root, con el comando sudo su
Después escribiremos el siguiente comando para comenzar a instalar el tema.
sudo update-alternatives --install /usr/share/plymouth/themes/default.plymouth
default.plymouth /usr/share/plymouth/themes/linuxmint/linuxmint.plymouth 100
luego escribiremos el siguiente comando
sudo update-alternatives --config default.plymouth
una vez dado enter, nos aparecerá el siguiente mensaje, y escogemos el #2, y damos
enter
Ahora actualizamos el initframs
y finamente reiniciamos usando el comando reboot.
Y listo
nota: Este tema que descargamos puede que de un error para la carga del splash, si da
un problema usaremos los siguientes comandos en modo root:
1.sudo -s
2.echo FRAMEBUFFER=y >>/etc/initramfs-tools/conf.d/splash
3.update-initramfs -u
Sistema Live
Para realizar el sistema Live usamos el software Systemback, dirigiéndonos al enlace
https://sourceforge.net/projects/systemback-install-pack-1-9-4/files/systemback-
install_pack-1.9.4.tar.gz/download
Una vez descargado nos dirigimos al directorio Descargas y extraemos con tar, extraído
todos los archivos ejecutamos el fichero install.sh usando el comando chmod para
ejecutarlo como un programa
Systemback nos permitirá crear el sistema Live que es lo que nos interesa
Al presionar el botón Crear sistema Live abrirá la herramienta para crear nuestro fichero
que convertiremos a .iso, elegimos el nombre de nuestro sistema Live, el directorio donde
se guardará (/home) y opcionalmente podemos incluir archivos de datos y hacemos clic
en Crear nuevo.
Este proceso tarda dependiendo de cada equipo, en nuestro caso tardo 32 minutos, una
vez finalizado nos creara un fichero .s.blive
Systemback posee una herramienta para convertir nuestro fichero creado a .iso pero solo
si este tiene un peso menor de 4gb. Para convertir nuestro archivo a .iso usaremos otra
herramienta: xorriso.
Para instalar xorriso usamos el comando apt-get install xorriso
Crearemos un nuevo directorio con mkdir donde guardaremos nuestra imagen .iso
Para ejecutar el comando que nos permitirá crear la imagen iso descompimiremos el
archivo .sblive que creó Systemback con tar, los archivos se guardaran en el directorio
sblive que creamos, y renombraremos los archivos syslinux.cfg y el directorio syslinux
como isolinux.cfg y isolinux respectivamente
Una vez renombrado los ficheros ejecutaremos el siguiente comando con las flags que
nos permitirán crear el archivo .iso mayor a 4gb
Driver
El driver que realizamos se conoce como “Hello world device driver”, su función
es imprimir un mensaje de kernel “Hello world!” cuando el driver esta activado y un
mensaje “Goodbye, cruel world” cuando esta desactivado.
Creamos un directorio nuevo y un archivo .c, en este caso hola.c que contendrá el
código del driver, para la creación del archivo .c y el archivo Makefile usamos
nano, el código del driver es el siguiente:
El archivo Makefile nos permitirá compilar el archivo .c que nos generara nuestro
instalador del driver:
Una vez creados todos los archivos procederemos a compilar con make
Nos interesa el archivo hola.ko con el cual instalaremos el driver.
El comando para instalar este driver es insmod, instalándolo con privilegios de
superusuario.
Una vez instalado el driver podemos ver con el comando lsmod | grep nuestro
driver ya instalado
Para ver el mensaje de kernel usamos el comando dmseg | tail
Conclusiones
Durante este proyecto cumplimos con el objetivo de compilar e instalar
satisfactoriamente un kernel de Linux modificado para mostrar un mensaje antes
del splash, concluimos que los comandos de Ubuntu sirven en su mayoría también
para Linux Mint, así como sus herramientas.
Bibliografía
Debian.(31 de 12 de 2020). Obtenidode https://wiki.debian.org/BuildADebianKernelPackage
Edmond,F.C. (01 de 06 de 2020). EDMOND'SWEBLOG. Obtenidode Systembackcreazione iso
superiore a4 Giga:https://francoconidi.it/systemback-creazione-iso-superiore-a-4-giga/
Edmond,F.C. (s.f.). EDMUND'SWEBLOG.Obtenidode Systemback1.9.4perDebian10 Ubuntu
20.04: https://francoconidi.it/systemback-1-9-4-per-debian-10-ubuntu-20-04/
Isaac. (s.f.). Linux Adictos.Obtenidode https://www.linuxadictos.com/en/create-linux-
distribution.html
Recliner,F.(29 de 01 de 2012). StackExchange.Obtenidode
https://unix.stackexchange.com/questions/30345/why-is-my-initial-ramdisk-so-big
Rubini,A.,&Corbet,J. (2001). Linux Device Drivers. O'ReillyMedia.

Más contenido relacionado

La actualidad más candente

Versiones de Linux
Versiones de LinuxVersiones de Linux
Versiones de Linux
Xi Houlang
 

La actualidad más candente (20)

Sistema Operativo Ubuntu
Sistema Operativo UbuntuSistema Operativo Ubuntu
Sistema Operativo Ubuntu
 
An Introduction To Linux
An Introduction To LinuxAn Introduction To Linux
An Introduction To Linux
 
Diapositiva linux
Diapositiva linuxDiapositiva linux
Diapositiva linux
 
Linux File System
Linux File SystemLinux File System
Linux File System
 
Linux seminar
Linux seminarLinux seminar
Linux seminar
 
Sistemas operativos basados en linux
Sistemas operativos basados en linuxSistemas operativos basados en linux
Sistemas operativos basados en linux
 
Sistema Operativo - Fedora
Sistema Operativo - FedoraSistema Operativo - Fedora
Sistema Operativo - Fedora
 
Introduction to Ubuntu
Introduction to UbuntuIntroduction to Ubuntu
Introduction to Ubuntu
 
Linux booting Process
Linux booting ProcessLinux booting Process
Linux booting Process
 
Diapositiva linux
Diapositiva linuxDiapositiva linux
Diapositiva linux
 
DIAPOSITIVAS Suse sistema operativo
DIAPOSITIVAS Suse sistema operativo DIAPOSITIVAS Suse sistema operativo
DIAPOSITIVAS Suse sistema operativo
 
Fedora exposicion
Fedora exposicionFedora exposicion
Fedora exposicion
 
Ubuntu
UbuntuUbuntu
Ubuntu
 
Linux introduction, class 1
Linux introduction, class 1Linux introduction, class 1
Linux introduction, class 1
 
Linea del tiempo sistemas operativos
Linea del tiempo sistemas operativosLinea del tiempo sistemas operativos
Linea del tiempo sistemas operativos
 
Linux Presentation
Linux PresentationLinux Presentation
Linux Presentation
 
Versiones de Linux
Versiones de LinuxVersiones de Linux
Versiones de Linux
 
EstáNdares De Calidad Aplicadas Al Software
EstáNdares De Calidad Aplicadas Al SoftwareEstáNdares De Calidad Aplicadas Al Software
EstáNdares De Calidad Aplicadas Al Software
 
Linux
LinuxLinux
Linux
 
Introduction to Ubantu
Introduction to UbantuIntroduction to Ubantu
Introduction to Ubantu
 

Similar a Compilación del kernel en Linux Mint 20.2 "Uma" 2021

Linux mint presentacion final
Linux mint presentacion finalLinux mint presentacion final
Linux mint presentacion final
Andrés Chávez
 
9.distribuciones linux
9.distribuciones linux9.distribuciones linux
9.distribuciones linux
Arleth Beta
 
Sistema Operativo Linux
Sistema Operativo LinuxSistema Operativo Linux
Sistema Operativo Linux
Diana
 
Manejo de sistemas operativo
Manejo de sistemas operativoManejo de sistemas operativo
Manejo de sistemas operativo
johanaalineE
 

Similar a Compilación del kernel en Linux Mint 20.2 "Uma" 2021 (20)

Linux mint presentacion final
Linux mint presentacion finalLinux mint presentacion final
Linux mint presentacion final
 
Sistema operativo GNU / Linux
Sistema operativo GNU / LinuxSistema operativo GNU / Linux
Sistema operativo GNU / Linux
 
Primeros pasos con GNU / Linux
Primeros pasos con GNU / LinuxPrimeros pasos con GNU / Linux
Primeros pasos con GNU / Linux
 
todo sobre linux
todo sobre linuxtodo sobre linux
todo sobre linux
 
Seminario de linux
Seminario de linuxSeminario de linux
Seminario de linux
 
Nombre del maestro
Nombre del maestroNombre del maestro
Nombre del maestro
 
Curso basico de linux(guadalinex)
Curso basico de linux(guadalinex)Curso basico de linux(guadalinex)
Curso basico de linux(guadalinex)
 
9.distribuciones linux
9.distribuciones linux9.distribuciones linux
9.distribuciones linux
 
Cois 408 Informe Oral
Cois 408 Informe OralCois 408 Informe Oral
Cois 408 Informe Oral
 
Sistema Operativo Linux
Sistema Operativo LinuxSistema Operativo Linux
Sistema Operativo Linux
 
Paper Sistema Operativo Linux
Paper Sistema Operativo Linux Paper Sistema Operativo Linux
Paper Sistema Operativo Linux
 
Arrancar linux usb
Arrancar linux usbArrancar linux usb
Arrancar linux usb
 
[ES] Introduccion a GNU / Linux
[ES] Introduccion a GNU / Linux[ES] Introduccion a GNU / Linux
[ES] Introduccion a GNU / Linux
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Sistena operativo
Sistena operativoSistena operativo
Sistena operativo
 
Manejo de sistemas operativo
Manejo de sistemas operativoManejo de sistemas operativo
Manejo de sistemas operativo
 
Diapositivas de SOR II
Diapositivas de SOR IIDiapositivas de SOR II
Diapositivas de SOR II
 
Red hat
Red hatRed hat
Red hat
 
Manejo de sistemas operativo
Manejo de sistemas operativoManejo de sistemas operativo
Manejo de sistemas operativo
 
Linux papito
Linux papitoLinux papito
Linux papito
 

Último

Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJHInmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
Vivafornai
 
PROGRAMANDO PARA AUTOCAD CON VBA -1.pdf-cad
PROGRAMANDO PARA AUTOCAD CON VBA -1.pdf-cadPROGRAMANDO PARA AUTOCAD CON VBA -1.pdf-cad
PROGRAMANDO PARA AUTOCAD CON VBA -1.pdf-cad
angel66k
 
RECONOCIMIENTO DE LIPIDOS Y ALGUNAS PROPIEDADES
RECONOCIMIENTO DE LIPIDOS Y ALGUNAS PROPIEDADESRECONOCIMIENTO DE LIPIDOS Y ALGUNAS PROPIEDADES
RECONOCIMIENTO DE LIPIDOS Y ALGUNAS PROPIEDADES
yanicsapernia5g
 

Último (20)

Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJHInmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
 
Trabajos Preliminares en Obras de Construcción..pdf
Trabajos Preliminares en Obras de Construcción..pdfTrabajos Preliminares en Obras de Construcción..pdf
Trabajos Preliminares en Obras de Construcción..pdf
 
UNIDAD I QUE ES LA AUTOMATIZACION INDUSTRIAL.pptx
UNIDAD I QUE ES LA AUTOMATIZACION INDUSTRIAL.pptxUNIDAD I QUE ES LA AUTOMATIZACION INDUSTRIAL.pptx
UNIDAD I QUE ES LA AUTOMATIZACION INDUSTRIAL.pptx
 
Métodos numéricos y aplicaciones - Izar Landeta.pdf
Métodos numéricos y aplicaciones - Izar Landeta.pdfMétodos numéricos y aplicaciones - Izar Landeta.pdf
Métodos numéricos y aplicaciones - Izar Landeta.pdf
 
UNIDAD 3 ENSAYOS DESTRUCTIVOS Y NO DESTRUCTIVOS – NORMATIVA ASTM.pdf
UNIDAD 3 ENSAYOS DESTRUCTIVOS Y NO DESTRUCTIVOS – NORMATIVA ASTM.pdfUNIDAD 3 ENSAYOS DESTRUCTIVOS Y NO DESTRUCTIVOS – NORMATIVA ASTM.pdf
UNIDAD 3 ENSAYOS DESTRUCTIVOS Y NO DESTRUCTIVOS – NORMATIVA ASTM.pdf
 
Presentación Identidad UCM identity present
Presentación Identidad UCM identity presentPresentación Identidad UCM identity present
Presentación Identidad UCM identity present
 
ESTUDIO DE TRAFICO PARA EL DISEÑO DE TIPOS DE VIAS.pptx
ESTUDIO DE TRAFICO PARA EL DISEÑO DE TIPOS DE VIAS.pptxESTUDIO DE TRAFICO PARA EL DISEÑO DE TIPOS DE VIAS.pptx
ESTUDIO DE TRAFICO PARA EL DISEÑO DE TIPOS DE VIAS.pptx
 
Presentacion Feria Cientifica Proyecto.pptx
Presentacion Feria Cientifica Proyecto.pptxPresentacion Feria Cientifica Proyecto.pptx
Presentacion Feria Cientifica Proyecto.pptx
 
PROGRAMANDO PARA AUTOCAD CON VBA -1.pdf-cad
PROGRAMANDO PARA AUTOCAD CON VBA -1.pdf-cadPROGRAMANDO PARA AUTOCAD CON VBA -1.pdf-cad
PROGRAMANDO PARA AUTOCAD CON VBA -1.pdf-cad
 
8 2024A CONDUCCION DE CALOR EN REGIMEN TRANSITORIO.pptx
8 2024A CONDUCCION DE CALOR EN REGIMEN TRANSITORIO.pptx8 2024A CONDUCCION DE CALOR EN REGIMEN TRANSITORIO.pptx
8 2024A CONDUCCION DE CALOR EN REGIMEN TRANSITORIO.pptx
 
RECONOCIMIENTO DE LIPIDOS Y ALGUNAS PROPIEDADES
RECONOCIMIENTO DE LIPIDOS Y ALGUNAS PROPIEDADESRECONOCIMIENTO DE LIPIDOS Y ALGUNAS PROPIEDADES
RECONOCIMIENTO DE LIPIDOS Y ALGUNAS PROPIEDADES
 
Practica_Calificada_03333333333333333.pdf
Practica_Calificada_03333333333333333.pdfPractica_Calificada_03333333333333333.pdf
Practica_Calificada_03333333333333333.pdf
 
Matematica Basica Limites indeterminados
Matematica Basica Limites indeterminadosMatematica Basica Limites indeterminados
Matematica Basica Limites indeterminados
 
Ficha Técnica -Cemento YURA Multiproposito TIPO IP.pdf
Ficha Técnica -Cemento YURA  Multiproposito TIPO IP.pdfFicha Técnica -Cemento YURA  Multiproposito TIPO IP.pdf
Ficha Técnica -Cemento YURA Multiproposito TIPO IP.pdf
 
herrramientas de resistividad para registro de pozos.pptx
herrramientas de resistividad para registro de pozos.pptxherrramientas de resistividad para registro de pozos.pptx
herrramientas de resistividad para registro de pozos.pptx
 
UNIDAD 2.- SENSORES.TIPOS DE SENSORES Y SU CLASIFICAIÓN
UNIDAD 2.- SENSORES.TIPOS DE SENSORES  Y SU CLASIFICAIÓNUNIDAD 2.- SENSORES.TIPOS DE SENSORES  Y SU CLASIFICAIÓN
UNIDAD 2.- SENSORES.TIPOS DE SENSORES Y SU CLASIFICAIÓN
 
Instrumentacion para el control de procesos.pdf
Instrumentacion para el control de procesos.pdfInstrumentacion para el control de procesos.pdf
Instrumentacion para el control de procesos.pdf
 
slideshare.vpdfs.com_sensores-magneticos-controles-pptx.pdf
slideshare.vpdfs.com_sensores-magneticos-controles-pptx.pdfslideshare.vpdfs.com_sensores-magneticos-controles-pptx.pdf
slideshare.vpdfs.com_sensores-magneticos-controles-pptx.pdf
 
Auditoría de Sistemas de Gestión
Auditoría    de   Sistemas     de GestiónAuditoría    de   Sistemas     de Gestión
Auditoría de Sistemas de Gestión
 
Balance materia y energia procesos de Secado
Balance materia y energia procesos de SecadoBalance materia y energia procesos de Secado
Balance materia y energia procesos de Secado
 

Compilación del kernel en Linux Mint 20.2 "Uma" 2021

  • 1. Universidad Nacional de Ingeniería. Facultad de Electrotecnia y Computación. F.E.C. Arquitectura de sistemas operativos Proyecto de compilación del kernel de Linux Elaborado por: No. Carnet Morales Herrera Jeffree Jordy 2017-0479U Molina Zambrana Ernesto Rafael 2017-0935U Hernández Gómez María Estefanía 2017-0320U Grupo: 4T2-CO. Docente de la Asignatura: Danny Oswaldo Chávez Miranda.
  • 2. Contenido Introducción.......................................................................................................................... 3 Objetivos:........................................................................................................................... 3 Linux................................................................................................................................... 4 Linux Mint.......................................................................................................................... 4 Desarrollo.............................................................................................................................. 6 Instalación de Linux Mint................................................................................................. 6 Configuraciones iniciales................................................................................................ 7 Instalación de dependencias........................................................................................... 8 Descarga del kernel.......................................................................................................... 9 Impresión del mensaje durante el arranque.................................................................10 Creación de enlace simbólico........................................................................................11 Configuración.......................................................................................................................12 Configuración de fuentes de Linux...............................................................................13 Compilación e instalación del kernel............................................................................14 Cambiar logo inicio de Linux .............................................................................................18 Método 1:..........................................................................................................................19 Método 2:..........................................................................................................................19 Sistema Live.........................................................................................................................24 Driver.....................................................................................................................................27 Conclusiones.......................................................................................................................29 Bibliografía...........................................................................................................................30
  • 3. Introducción Linux es un núcleo o kernel de código abierto, lo que significa que su código fuente es libre de estudiar, modificar y distribuir, por esta razón existen distintas distribuciones basadas en el kernel Linux llamadas “distros” que incluyen paquetes de software para satisfacer a sus usuarios, pudiendo incluso realizar versiones personalizadas de estas distribuciones, siendo este es el objeto de este proyecto Linux Mint es una distribución GNU/Linux con el propósito de ser un sistema operativo moderno, elegante y fácil de usar y cuenta con una de las comunidades más grandes con millones de usuarios. Linux Mint 20.2 “Uma” fue seleccionado como para realizar una versión personalizada de la distro instalando la versión del kernel 5.14.16. Objetivos: 1. Compilar e instalar el kernel 5.14.16 de Linux en la distro Linux Mint. 2. Mostrar la impresión de un mensaje en el arranque del sistema operativo. 3. Modificar el logo de arranque del sistema operativo. 4. Instalar el device driver “Hello world!”. 5. Crear un sistema Live con la versión personalizada de la distro.
  • 4. Linux Durante el desarrollo de MINIX muchas personas exigían más y mejores características para este sistema operativo, Andrew Tanenbaum, el autor, afirmaba que este sistema operativo debía ser lo más pequeño y comprensible para el aprendizaje, por lo que negaba estas peticiones. Por esto un estudiante finlandés llamado Linus Torvalds escribió un clon de UNIX conocido como Linux que podría tener más características que MINIX. Linux liberó su primera versión (0.1) en 1991 y consistía en 9500 líneas de código en C y 950 líneas de código en ensamblador. Sin embargo, Linux siguió su desarrollo con rapidez y lanzó la revisión mayor 1.0 en 1994. Linux incluye una licencia conocida como GPL (GNU Public License) que especifica que es lo que se puede y no puede hacer con el código. Los usuarios pueden utilizar, copiar, modificar y redistribuir el código fuente y binario libremente. Una de las restricciones es que no puedes vender ni distribuir el código binario solamente, sino que debe incluir el código fuente. Linux Mint Linux Mint es una distribución GNU/Linux, basada en Ubuntu (que a su vez está basada en Debian). También está disponible una edición basada en Debian. Linux Mint tiene como objetivo presentar un sistema operativo moderno, con un énfasis en la facilidad de instalar y en la usabilidad. Es reconocido por ser fácil de usar, especialmente para los usuarios sin experiencia previa en Linux. Linux Mint tiene 3 principales entornos de escritorio: Cinnamon, siendo el más usado por ofrecer un entorno elegante y hermoso. MATE, más estable y optimizado
  • 5. Xfce, el mas ligero y menor uso de recursos Este sistema operativo se compone de muchos paquetes de software, los cuales se distribuyen la mayor parte bajo una licencia de software libre. La principal licencia utilizada es la GNU General Public License (GNU GPL) que, junto con la GNU Lesser General Public License (GNU LGPL), declara explícitamente que los usuarios tienen libertad para ejecutar, copiar, distribuir, estudiar, cambiar, desarrollar y mejorar el software. Linux Mint es financiada por su comunidad de usuarios. Este sistema operativo no sigue un ciclo predecible de lanzamientos, sino que los plantea uno tras del otro. En cada caso, el proyecto define primero los objetivos del próximo lanzamiento. Cuando se alcanzan todos los objetivos, usualmente, se procede al lanzamiento de una beta, luego pasa por el lanzamiento de una Release Candidate (RC) y luego si todo va bien, se anuncia la fecha para el lanzamiento de la versión estable. Luego de un tiempo que es lanzada la versión principal, son lanzadas las versiones alternativas. Cada lanzamiento lleva asociado un nombre femenino, el que comienza con la letra que le corresponde al número de versión, por ejemplo, Linux Mint 1.0 se llamó 'Ada', la versión 2.0 'Barbara' y así sucesivamente según orden alfabético. La última versión hasta el momento recibe el nombre de 'Uma'.
  • 6. Desarrollo Instalación de Linux Mint Para iniciar e instalar Linux Mint nos dirigimos a la página oficial https://linuxmint.com/ y descargamos la última versión estable, en este caso es 20.2 “Uma” Para crear un medio de arranque utilizamos el software Etcher y una memoria USB
  • 7. Configuraciones iniciales Lo primero es instalar las actualizaciones importantes de Linux Mint, esto lo hacemos desde el gestor de actualizaciones Una vez actualizado Linux Mint, accedemos a la terminal como super usuario usando el comando sudo su, de ahora en adelante todas las actividades de realizaran en modo super usuario
  • 8. Instalación de dependencias Linux Mint utiliza el gestor de paquetes apt, todas las dependencias se descargaran e instalaran usando este paquete. Las dependencias instaladas servirán para compilar correctamente el kernel - kernel-package: - build-essential: - make - libncurses5-dev - libelf-dev - libssl-dev - bc - kmod - cpio - flex - Linux-source
  • 9. Descarga del kernel Para descargar los archivos del kernel de Linux nos dirigimos a https://www.kernel.org/ En nuestro casodecidimos utilizar la versión 5.14.16 y lo descargamos desde un repositorio
  • 10. Por defecto el archivo se guarda en la carpeta Descargas El proceso de descomprimir y compilar el kernel se puede realizar desde cualquier directorio, nosotros decidimos copiar el archivo descargado al directorio /usr/src Usamos cd para dirigirnos al directorio Para descomprimir los archivos del kernel usamos el comando tar Al descomprimir quedará el directorio donde están todos los archivos del kernel, es este directorio se realizaran todas las configuraciones para compilar e instalar este kernel Impresión del mensaje durante el arranque Para lograr que imprima el mensaje deseado tenemos que dirigirnos al archivo main.c en el directorio /init
  • 11. El mensaje tiene que escribirse debajo de las siguientes líneas de código: system_state = SYSTEM_RUNNING; numa_default_policy(); printk() es una función de C que imprime mensajes en el registro del kernel. KERN_ALERT indica la importancia del mensaje haciendo que imprima, en cualquier caso. Creación de enlace simbólico La creación de un enlace simbólico sirve como copia de seguridad de nuestros archivos del kernel
  • 12. Configuración Para realizar las configuraciones del kernel se utiliza el comando make menuconfig Al ejecutar este comando se iniciará un menú donde se podrán habilitar e inhabilitar las características y los dispositivos que soportara el kernel. En nuestro caso lo dejaremos tal y como está, simplemente se guarda la configuración actual
  • 13. Durante la compilación el error No rule to make target debian/canonical-certs.pem' needed by 'certs/x509_certificate_list' ocurrió, esto debido a que no puede localizar el paquete en el directorio, esto se resuelve eliminando este directorio de la line CONFIG_SYSTEM_TRUSTED_KEYS=”” enel archivo .config que se guardó anteriormente con make menuconfig Configuración de fuentes de Linux La dependencia linux-source descarga un archivo comprimido con las fuentes de Linux y se guarda en el directorio /usr/src Usamos tar para extraer los archivos Para realizar la configuración usamos el comando make ARCH=i386 defconfig, esto creara un archivo .config según la arquitectura del CPU, en este caso i386
  • 14. Compilación e instalación del kernel En este momento ya podemos iniciar la compilación con el comando make ubicándonos en el directorio de nuestro enlace simbólico En nuestro caso la compilación tardo 4 horas y 7 minutos Después de compilar procederemos a compilar los módulos con el comando make modules Una vez compilados los instalamos con make modules_install, existe un método de instalar los módulos más ligeros con INSTALL_MOD_STRIP=1
  • 15. Una vez instalados los módulos, instalamos el kernel con make install, de igual forma usamos INSTALL_MOD_STRIP=1 En este momento el nuevo kernel ya esta instalado y solo es cuestión de reiniciar para ver los cambios, pero antes hay que modificar el grub para poder ver el mensaje impreso en el archivo main.c Para esto nos dirigimos al directorio /etc/default y abrimos el archivo grub con nano En el archivo grub vamos a modificar las líneas: GRUB_TIMEOUT=10 GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” Ahora serán GRUB_TIMEOUT=30 Para que el tiempo antes de desplegar el menú de carga se mayor y el mensaje impreso se pueda ver más tiempo
  • 16. GRUB_CMDLINE_LINUX_DEFAULT=”splash” Para que pase a modo gráfico y muestre el logo de Linux El archivo grub quedará de la siguiente manera: Podemos cambiar el nombre de los sistemas que se cargan en el archivo grub.cfg en el directorio /boot/grub, esto es opcional, nosotros lo dejamos igual Ahora queda actualizar el grub usando update-grub
  • 17. Después usamos update-grub2, no es necesario ya que es solo un enlace simbólico a update-grub pero no está demás usarlo Ahora lo único que queda es reiniciar y ver los cambios con el comando reboot
  • 18. Cambiar logo inicio de Linux Pudimos encontrar dos métodos para cambiar el logo de inicio de Linux Mint
  • 19. Método 1: Nos dirigimos a la ruta /usr/share/plymouth/mint-logo Renombramos el archivo original logo.png por seguridad Elegimos la imagen que queramos, como recomendación debe ser una imagen 100x100 y la renombramos como logo.png Usamos el comando update-initramsfs y reiniciamos con reboot Método 2: Nos dirigimos a la página de gnome-look acá encontraremos múltiples temas para personalizar nuestra distribución.
  • 20. https://www.gnome-look.org/browse/ Nos dirigimos en Plymouth Themes y buscamos el tema que queramos instalar para nuestro logo de Linux Mint, en nuestro caso será el tema Linux Mint 1.0. Una vez seleccionado el tema procedemos a descargarlo, cuando hayamos seleccionado el tema, hacemos clic en files y descargamos en este caso, el tema pesa 0.85mb, otros temas pueden ser más pesados.
  • 21. Una vez descargado, nos iremos a la carpeta Descargas para descomprimir el archivo podemos usar la terminar para hacerlo, en este caso lo haremos sin comandos, seleccionamos el archivo que acabamos de descargar, daremos clic derecho y extraer aquí y nos dejara la carpeta ya descomprimida Una vez descomprimida la carpeta Linux Mint (este nombre varía dependiendo del tema que usted haya descargado), daremos clic derecho y copiar en la siguiente dirección usr/share/plymouth/themes y pegamos
  • 22. Luego abriremos la terminar en modo root, con el comando sudo su
  • 23. Después escribiremos el siguiente comando para comenzar a instalar el tema. sudo update-alternatives --install /usr/share/plymouth/themes/default.plymouth default.plymouth /usr/share/plymouth/themes/linuxmint/linuxmint.plymouth 100 luego escribiremos el siguiente comando sudo update-alternatives --config default.plymouth una vez dado enter, nos aparecerá el siguiente mensaje, y escogemos el #2, y damos enter
  • 24. Ahora actualizamos el initframs y finamente reiniciamos usando el comando reboot. Y listo nota: Este tema que descargamos puede que de un error para la carga del splash, si da un problema usaremos los siguientes comandos en modo root: 1.sudo -s 2.echo FRAMEBUFFER=y >>/etc/initramfs-tools/conf.d/splash 3.update-initramfs -u Sistema Live Para realizar el sistema Live usamos el software Systemback, dirigiéndonos al enlace https://sourceforge.net/projects/systemback-install-pack-1-9-4/files/systemback- install_pack-1.9.4.tar.gz/download
  • 25. Una vez descargado nos dirigimos al directorio Descargas y extraemos con tar, extraído todos los archivos ejecutamos el fichero install.sh usando el comando chmod para ejecutarlo como un programa Systemback nos permitirá crear el sistema Live que es lo que nos interesa
  • 26. Al presionar el botón Crear sistema Live abrirá la herramienta para crear nuestro fichero que convertiremos a .iso, elegimos el nombre de nuestro sistema Live, el directorio donde se guardará (/home) y opcionalmente podemos incluir archivos de datos y hacemos clic en Crear nuevo. Este proceso tarda dependiendo de cada equipo, en nuestro caso tardo 32 minutos, una vez finalizado nos creara un fichero .s.blive Systemback posee una herramienta para convertir nuestro fichero creado a .iso pero solo si este tiene un peso menor de 4gb. Para convertir nuestro archivo a .iso usaremos otra herramienta: xorriso. Para instalar xorriso usamos el comando apt-get install xorriso Crearemos un nuevo directorio con mkdir donde guardaremos nuestra imagen .iso Para ejecutar el comando que nos permitirá crear la imagen iso descompimiremos el archivo .sblive que creó Systemback con tar, los archivos se guardaran en el directorio sblive que creamos, y renombraremos los archivos syslinux.cfg y el directorio syslinux como isolinux.cfg y isolinux respectivamente
  • 27. Una vez renombrado los ficheros ejecutaremos el siguiente comando con las flags que nos permitirán crear el archivo .iso mayor a 4gb Driver El driver que realizamos se conoce como “Hello world device driver”, su función es imprimir un mensaje de kernel “Hello world!” cuando el driver esta activado y un mensaje “Goodbye, cruel world” cuando esta desactivado. Creamos un directorio nuevo y un archivo .c, en este caso hola.c que contendrá el código del driver, para la creación del archivo .c y el archivo Makefile usamos nano, el código del driver es el siguiente: El archivo Makefile nos permitirá compilar el archivo .c que nos generara nuestro instalador del driver:
  • 28. Una vez creados todos los archivos procederemos a compilar con make Nos interesa el archivo hola.ko con el cual instalaremos el driver. El comando para instalar este driver es insmod, instalándolo con privilegios de superusuario. Una vez instalado el driver podemos ver con el comando lsmod | grep nuestro driver ya instalado Para ver el mensaje de kernel usamos el comando dmseg | tail
  • 29. Conclusiones Durante este proyecto cumplimos con el objetivo de compilar e instalar satisfactoriamente un kernel de Linux modificado para mostrar un mensaje antes del splash, concluimos que los comandos de Ubuntu sirven en su mayoría también para Linux Mint, así como sus herramientas.
  • 30. Bibliografía Debian.(31 de 12 de 2020). Obtenidode https://wiki.debian.org/BuildADebianKernelPackage Edmond,F.C. (01 de 06 de 2020). EDMOND'SWEBLOG. Obtenidode Systembackcreazione iso superiore a4 Giga:https://francoconidi.it/systemback-creazione-iso-superiore-a-4-giga/ Edmond,F.C. (s.f.). EDMUND'SWEBLOG.Obtenidode Systemback1.9.4perDebian10 Ubuntu 20.04: https://francoconidi.it/systemback-1-9-4-per-debian-10-ubuntu-20-04/ Isaac. (s.f.). Linux Adictos.Obtenidode https://www.linuxadictos.com/en/create-linux- distribution.html Recliner,F.(29 de 01 de 2012). StackExchange.Obtenidode https://unix.stackexchange.com/questions/30345/why-is-my-initial-ramdisk-so-big Rubini,A.,&Corbet,J. (2001). Linux Device Drivers. O'ReillyMedia.