Download init.d

Document related concepts
Transcript
Arrancando Raspberry Pi (RPi)
en
Debian
2014/05/23
Miguel Mateo
Contenido
Objetivos
●
Proceso de arranque de RaspBerry-Pi
●
Proceso de arranque en Debian Wheezy
●
armpower.blogs.upv.es
2
Objetivo
●
●
Describir el sistema de arranque de Raspberry-PI
Conocer y modificar los ficheros de arranque de Raspberry-PI
●
●
●
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
●
●
Overclocking
Modificar la frecuencia de funcionamiento de la CPU
Utilizar las X de forma remota desde un PC
armpower.blogs.upv.es
3
Proceso de arranque
Formato con NOOBS
●
Particiones después de arrancar con NOOBS
–
●
Partición FAT: la de arranque
–
●
Bootcode.bin, recovery.elf , recovery.img
Partición ext4fs de 32MB: configuración
–
●
Perdemos ~350MB: configuración y recuperación
Noobs.conf
Esto es antes de instalar NADA
armpower.blogs.upv.es
5
NOOBS + Raspbian
Tabla de particiones tras arrancar Raspbian en NOOBS
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
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
–
●
●
SETTINGS:
–
Utilizada por NOOBS para guardar la configuración de cada
sistema operativo instalado
–
Al ser ext4: difícil acceder desde Windows
BOOT:
–
●
Programas de arranque de NOOBS (vfat)
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 BOOT
bootcode.bin
●
cmdline.txt
Extensiones de archivo:
config.txt
bin : binario de copia a memoria
fixup_cd.dat
elf: ejecutable
fixup.dat
issue.txt
dat: archivos de configuración
binarios
kernel_emergency.img
img: imagen del kernel de Linux
fixup_x.dat
kernel.img
LICENSE.oracle
os_config.json
start_cd.elf
start.elf
start_x.elf
●
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
cómo comprobar cada
modificació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
–
¡¡¡Mentira!!!!
Este fichero se ejecuta cada vez que creamos un bash
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
●
Comprobando
Instalar 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 [email protected]
"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