Post on 09-May-2018
Arrancando Raspberry Pi (RPi)en
Debian
2014/05/23
Miguel Mateo
armpower.blogs.upv.es 2
Contenido
●Objetivos
●Proceso de arranque de RaspBerry-Pi
●Proceso de arranque en Debian Wheezy
armpower.blogs.upv.es 3
Objetivo
● Describir el sistema de arranque de Raspberry-PI
● Conocer y modificar los ficheros de arranque de Raspberry-PI
● Overclocking
● Conocer el mecanismo de arranque de LINUX
● Describir las características de arranque del kernel
● Estudiar y modificar la inicialización de aplicaciones en Debian
● Utilizar programas para acceder al HW y modificar su configuración
● Modificar la frecuencia de funcionamiento de la CPU
● Utilizar las X de forma remota desde un PC
Proceso de arranque
armpower.blogs.upv.es 5
Formato con NOOBS
● Particiones después de arrancar con NOOBS– Perdemos ~350MB: configuración y recuperación
● Partición FAT: la de arranque– Bootcode.bin, recovery.elf , recovery.img
● Partición ext4fs de 32MB: configuración– Noobs.conf
● Esto es antes de instalar NADA
NOOBS + Raspbian
cfdisk (util-linux 2.20.1)
Disk Drive: /dev/mmcblk0 Size: 7969177600 bytes, 7969 MB Heads: 4 Sectors per Track: 16 Cylinders: 243200
Name Flags Part Type FS Type [Label] Size (MB) --------------------------------------------------------------------------- Primary Free Space 4,20 mmcblk0p1 Primary vfat [RECOVERY] 117,81 * Pri/Log Free Space 3,83 * mmcblk0p5 NC Logical vfat [BOOT] 67,11 mmcblk0p6 NC Logical ext4 [root] 7742,69 mmcblk0p3 Primary ext4 [SETTINGS] 33,56
Tabla de particiones tras arrancar Raspbian en NOOBS
La particiones más importantes son las etiquetadas como [BOOT] y [root], que por defecto están montadas...
¿dónde?
¿Qué hay en cada partición?
● RECOVERY– Programas de arranque de NOOBS (vfat)
● SETTINGS: – Utilizada por NOOBS para guardar la configuración de cada
sistema operativo instalado
– Al ser ext4: difícil acceder desde Windows
● BOOT: – partición de arranque de Raspbian (vfat)
● Root– Programas y ficheros de Raspbian
RECOVERY y BOOT
● Las dos son particiones de arranque por lo que tienen ficheros parecidos– Busca qué ficheros son iguales y de qué tipo son (orden
file)
● La partición RECOVERY NO se debe editar● La partición BOOT permite modificar el
funcionamiento inicial de la placa (fase 2)– Edición directa de los archivos
– Uso de raspi-config
Archivos de BOOTbootcode.bin
cmdline.txt
config.txt
fixup_cd.dat
fixup.dat
fixup_x.dat
issue.txt
kernel_emergency.img
kernel.img
LICENSE.oracle
os_config.json
start_cd.elf
start.elf
start_x.elf
● Extensiones de archivo:
bin : binario de copia a memoria
elf: ejecutable
dat: archivos de configuración binarios
img: imagen del kernel de Linux
● Programas: – raspi-config
– vcgencmd
Arranque: manos a la obra
● Buscar qué opciones se tienen activadas en config.txt
● Cambiar una a una las siguientes opciones y rearrancar:– hdmi_force_hotplug
– disable_overscan
– arm_frec
Atender al profesor sobre Atender al profesor sobre cómo comprobar cada cómo comprobar cada
modificaciónmodificación
Arranque de Linux● Linux: Sistema operativo basado en un kernel monolítico modular
– Monolítico: todas las funciones y variables se pueden acceder desde cualquier punto
– Modular: para su construcción y compilación se ha dividido el sistema en elementos más o menos independientes
● Kernel.img : imagen comprimida del kernel de Linux– Debe incluir como mínimo lo necesario para arrancar
– Las capacidades y funcionamiento del sistema operativo pueden cambiarse en ejecución
– El sistema operativo no hace “nada” perceptible por los usuarios
Proceso
● Un proceso es un programa en ejecución– Linux: Multiproceso, multiusuario
● Tabla de procesos: guarda información sobre cada proceso. Entre otras cosas– PID y UID del proceso– Información del estado de ejecución
– Información sobre los recursos que usa o ha usado el proceso
● La tabla de procesos en Linux se ha hecho accesible mapeandola como ficheros en /proc
Procesos (2)
● Relación jerárquica entre procesos– Única relación posible: padre-hijo
– El primer proceso recibe el nombre “init” (PID=1)
● Tipos de procesos “especiales”– Daemons
– Huérfanos → En realidad NO pueden existir
– Zombies
● Los intérpretes de órdenes (shells) NO forman parte de LINUX
Discutamos un poco...
● ¿Cuántos procesos pueden estar ejecutando un programa en LINUX?
● ¿Cuántos programas puede ejecutar un proceso?
● ¿Cuántos padres diferentes puede tener un proceso?
● Cuando un proceso acaba de ejecutar todo el código de un programa... ¿qué le pasa?
¿y mis programas cuándo?
INIT
● Primer proceso que arranca el Sistema operativo– Su PID es 1, el valor más pequeño posible
● Tres fases en la “vida” de INIT– Inicialización del sistema
● Siempre es init quien la empieza, aunque existen diferentes esquemas para realizarla: init.d, upstart, serviced
– Realización de limpieza
– Apagado del sistema● Tienen que realizarse en consonancia con el esquema de arranque
Init.d● Basado en SystemV
– El más antiguo y en fase de sustitución
● Fases:– Leer fichero /etc/inittab
● Normalmente esta fase determina “el nivel de ejecución”
– Ejecutar los shell-scripts del nivel de inicio de ejecución (arranque) para que INICIEN servicios
– Ejecutar los shell-scripts del nivel de ejecución escogido para que INICIEN servicios
– Esperar cambio de nivel (de nivel-j a nivel-k)– Ejecutar los shell-scripts del nivel-j para que PAREN servicios– Ejecutar los shell-scripts del nivel-k para que INICIEN servicios
init.d● Basado en System V
– El más antiguo y en fase de sustitución
● Fases:– Leer fichero /etc/inittab
● Normalmente esta fase determina “el nivel de ejecución”
– Ejecutar los shell-scripts del nivel de inicio de ejecución (arranque) para que INICIEN servicios
– Ejecutar los shell-scripts del nivel de ejecución escogido para que INICIEN servicios
– Esperar cambio de nivel (de nivel-j a nivel-k)– Ejecutar los shell-scripts del nivel-j para que PAREN servicios– Ejecutar los shell-scripts del nivel-k para que INICIEN servicios
init.d : archivos y directorios● /etc/inittab● /etc/init.d
– Directorio que contiene los scripts de los servicios.– Parámetros típicos: start, stop, reload, restart...
● /etc/rcN.d– Directorio que contiene enlaces para ejecutar los scripts del nivel N
● /etc/rcN.d/K23ServDaemon● /etc/rcN.d/S23ServicioDaemon
– Enlaces del nivel N para gestionar un servicio usando el script ServicioDaemon
– El enlace que empieza por S es el usado para iniciar el servicio
– El enlace que empieza por K es el usado para terminar el servicio– Los servicios se llaman por orden del número de dos cifras que sigue a la
primera letra
/etc/rc.local
● Shell script que se ejecuta al final de algunos niveles
● Suele usarse para ejecutar programas cuando no sabemos/queremos crear un servicio en init.d para esa acción
¿En qué niveles se ejecuta en Raspbian?
¿Qué hace por defecto?
Y ahora... ¿qué?
● Depende del nivel de ejecución y de inittab:– inittab: especifica que consolas y terminales
– Se pueden haber arrancado servicios de login locales (xdm) o remotos (sshd,telnetd,vncd)
● Esto sólo son procesos que permiten identificarse (login)
● Proceso de login: comprueba nombre de usuario y contraseña
¿usuarios? ¿contraseñas?....
Usuarios y contraseñas
● Ficheros
/etc/passwd : información pública de usuarios
/etc/shadow : alamcen de contraseñas
/etc/login.defs : valores por defecto al crear usua.
● Programas útiles
adduser : permite crear un nuevo usuario
passwd : cambio de contraseña
usermod : modificación de datos de un usuario
● Para investigar más: pam
Proceso de login● Depende del shell que arranquemos
– Los usuarios se leen de /etc/passwd
– El acceso se permite según pam
● LOGIN en terminal no gráfico– Se lee qué shell quiere el usuario de /etc/passwd
– Si es bash● Se ejecuta el fichero global /etc/profile● Se ejecuta $HOME/.profile● Se ejecuta $HOME/.bash_rc
– Este fichero se ejecuta cada vez que creamos un bash
¡¡¡Mentira!!!!
Comprobando
● Añadir la siguiente línea a ~/.profileq
(echo `date`"-->"`who -m` ) >> ~/accesos_profile
● Añadir la siguiente línea a ~/.bash_rc
(echo `date`"-->"`who -m` ) >> accesos_profile
● Formas de probar:– Conectando por ssh: ¿qué pasa?
– Abriendo ventanas de terminal: ¿qué pasa?
– Haciendo un login gráfico: ¿qué pasa?
Login gráfico● Si al inicio hemos habilitado lightdm o nos
conectamos directamente a servidor gráfico● NO se ejecuta nuestro shell como primero
proceso– No se ejecuta lo que tengamos en .profile
● Cada login gráfico tiene sus archivos de configuración globales y propios del usuario– FreeDesktop: ficheros siguiendo estandar xdg
/etc/xdg
$HOME/.config
lxsession
● Este es el programa que arranca por defecto en local lightdm
● Ficheros de autostart
/etc/xdg/lxsession/LXDE/autostart
~/.config/lxsession/LXDE/autostart
● ComprobandoInstalar tuxeyes: apt-get install tuxeyes
Que se ejecute al principio de las X...
– Arrancar las X...
MobaXterm y lxsession
● Ejecutar lo siguiente en el MobaXterm:export DISPLAY=:36; start-stop-daemon -q -b -S --exec /bin/XWin.exe -- -silent-dup-error -notrayicon -nolisten inet6 -clipboard -ac -fp /usr/share/fonts/misc $DISPLAY && /bin/waitforX && ssh -Y pi@192.168.x.x "lxsession"
cpu_governor
/sys– Directorio virtual con información sobre el sistema
/sys/devices/system/cpu– Información sobre la cpu
● Cpufreq/scaling_governor– Modifica la frecuencia de la cpu
– Existen valores máximos y mínimos de frecuencia
– Por defecto: ondeman
– Opciones: conservative ondemand userspace powersave performance
– Para cambiarlo hay que ser superusuario. Id al directorio y ejecutar:echo performance | sudo tee scaling_governor