English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
al inicio de Linux veremos muchos mensajes de inicio。
El proceso de inicio del sistema Linux no es tan complejo como se imagina, el proceso se puede dividir en5fases:
guía del núcleo。
Ejecutar init。
Inicialización del sistema。
Crear terminal 。
el usuario se loguea en el sistema。
Tipo de programa init:
SysV: init, CentOS 5Antes, archivo de configuración: /etc/inittab。
Upstart: init, CentOS 6, archivo de configuración: /etc/inittab, /etc/init/*.conf。
Systemd: systemd, CentOS 7, archivo de configuración: /usr/lib/systemd/system、 /etc/systemd/system。
Cuando se enciende la computadora, primero es la autoverificación del BIOS, según el dispositivo de inicio configurado en el BIOS (generalmente el disco duro) para iniciar.
Después de que el sistema operativo toma el control del hardware, primero se lee /archivos del núcleo en el directorio boot.
El proceso init es el punto de partida de todos los procesos del sistema, puedes compararlo con el antepasado de todos los procesos del sistema, sin este proceso, no se iniciará ningún proceso en el sistema.
El programa init primero necesita leer el archivo de configuración /etc/inittab。
Muchos programas necesitan iniciarse. En Windows se llaman "servicios" (service), en Linux se llaman "daemons" (daemon).
Una gran tarea del proceso init es ejecutar estos programas de inicio.
Pero, diferentes situaciones requieren la ejecución de diferentes programas, por ejemplo, cuando se utiliza como servidor, se necesita iniciar Apache, pero cuando se utiliza como escritorio no es necesario.
Linux permite asignar diferentes programas de inicio al inicio para diferentes situaciones, lo que se llama "nivel de ejecución" (runlevel). Esto es, al iniciar, según el "nivel de ejecución", se determina qué programas se deben ejecutar.
El sistema Linux tiene7niveles de ejecución (runlevel):
nivel de ejecución 0: estado de apagado del sistema, el nivel de ejecución predeterminado del sistema no puede establecerse en 0, de lo contrario no se puede iniciar normalmente
nivel de ejecución1:estado de trabajo de usuario único, permisos de root, utilizado para la mantenimiento del sistema, prohibido el inicio de sesión remoto
nivel de ejecución2:estado de usuario múltiple (sin NFS)
nivel de ejecución3:estado de usuario múltiple completo (con NFS), después de iniciar sesión ingrese al modo línea de comandos de la consola
nivel de ejecución4:no se utiliza el sistema, se mantiene
nivel de ejecución5:X11consola, después de iniciar sesión ingrese al modo GUI gráfico
nivel de ejecución6:el sistema se cierra y se reinicia normalmente, el nivel de ejecución predeterminado no puede establecerse como6,de lo contrario no se puede iniciar normalmente
En el archivo de configuración de init, hay esta línea: si::sysinit:/etc/rc.d/rc.sysinit llama a la ejecución de/etc/rc.d/rc.sysinit, y rc.sysinit es un script de bash, que principalmente realiza tareas de inicialización del sistema, rc.sysinit es un script importante que debe ejecutarse primero en cada nivel de ejecución.
Su trabajo principal incluye: activar la partición de intercambio, verificar el disco, cargar los módulos de hardware y otras tareas que necesitan ejecutarse con prioridad.
l5:5:wait:/etc/rc.d/rc 5
Esta línea indica que se ejecutará5como parámetro para ejecutar/etc/rc.d/rc,/etc/rc.d/rc es un script de Shell, que acepta5como parámetro para ejecutar/etc/rc.d/rc5.d/Todos los scripts de inicio de rc en el directorio/etc/rc.d/rc5.d/Los scripts de inicio en este directorio son archivos de conexión, no scripts de inicio de rc reales, los scripts de inicio de rc reales están ubicados en/etc/rc.d/init.d/en el directorio.
Estos scripts de inicio de rc tienen un uso similar, generalmente pueden aceptar parámetros como start, stop, restart, status, etc.
/etc/rc.d/rc5.d/Los scripts de inicio de rc generalmente comienzan con K o S, para los scripts de inicio que comienzan con S, se ejecutarán con el parámetro start.
Y si encuentra que también existen scripts correspondientes con conexión K al inicio, y ya están en estado de ejecución (con/var/lock/subsys/Los archivos bajo este directorio se utilizan como marcadores), primero detendrá estos servicios iniciados con el parámetro stop, y luego los ejecutará nuevamente.
Esto se hace para asegurarse de que cuando init cambie de nivel de ejecución, todos los servicios relacionados se reinicien.
En cuanto a qué servicios de fondo se ejecutarán en cada nivel de ejecución, el usuario puede configurarlo por sí mismo a través de chkconfig o "Servicios del sistema" en setup.
Después de que rc se complete, regresa a init. En este momento, el entorno básico del sistema ya está configurado y todos los servicios de fondo ya están iniciados.
El init abrirá6terminales, para que el usuario pueda iniciar sesión en el sistema. En la siguiente línea de inittab,6Esta línea define6terminales:
1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6
Como se puede ver en2,3,4,5El nivel de ejecución de mingetty se ejecutará en modo respawn. El programa mingetty puede abrir terminales y configurar modos.
Además, se mostrará una interfaz de inicio de sesión de texto, que es la interfaz de inicio de sesión que vemos con frecuencia. En esta interfaz de inicio de sesión, se le pedirá al usuario que ingrese su nombre de usuario, y el nombre de usuario ingresado se transmitirá como parámetro al programa login para verificar la identidad del usuario.
Generalmente, hay tres formas de inicio de sesión del usuario:
(1Inicio de sesión en línea de comandos
(2Inicio de sesión SSH
(3) inicio de sesión en modo gráfico
Para los niveles de ejecución5Para los usuarios de modo gráfico, su inicio de sesión se realiza a través de una interfaz de inicio de sesión gráfica. Después de iniciar sesión con éxito, pueden entrar directamente en KDE, Gnome y otros administradores de ventanas.
Y este artículo se centra principalmente en la situación de inicio de sesión en modo de texto: cuando vemos la interfaz de inicio de sesión de mingetty, podemos ingresar el nombre de usuario y la contraseña para iniciar sesión en el sistema.
El programa de verificación de cuentas de Linux es login, login recibirá el nombre de usuario transmitido por mingetty como parámetro de nombre de usuario.
Luego login analizará el nombre de usuario: si el nombre de usuario no es root y existe /etc/nologin archivo, login mostrará el contenido del archivo nologin y luego saldrá.
Esto se utiliza generalmente para evitar que los usuarios no root se conecten durante el mantenimiento del sistema. Sólo/etc/solamente los terminales registrados en securetty permiten que el usuario root se conecte, si no existe este archivo, el usuario root puede conectarse en cualquier terminal.
/etc/usertty para aplicar restricciones de acceso adicionales al usuario, si no existe este archivo, no habrá otras restricciones.
Después de analizar el nombre de usuario, login buscará /etc/passwd y /etc/shadow para verificar la contraseña y configurar otras información de la cuenta, como: ¿cuál es el directorio principal, qué shell se utiliza?. Si no se especifica el directorio principal, se utilizará el directorio raíz por defecto; si no se especifica el shell, se utilizará por defecto /bin/bash.
Linux proporciona seis terminales de comandos para que nos conectemos.
Por defecto, nos conectamos al primer terminal, es decir, tty1, estas seis ventanas son tty1,tty2 … tty6, puedes presionar Ctrl + Alt + F1 ~ F6 para cambiarlas.
Si has instalado la interfaz gráfica, en la configuración predeterminada es entrar en la interfaz gráfica, en este caso puedes presionar Ctrl + Alt + F1 ~ F6para entrar en una de las interfaces de ventana de comandos.
Cuando entras en la interfaz de la ventana de comandos, para volver a la interfaz gráfica solo tienes que presionar Ctrl + Alt + F7 regresa.
Si estás usando una máquina virtual VMware, la tecla de acceso rápido para cambiar a la ventana de comandos es Alt + Espacio + F1~F6. Si estás en la interfaz gráfica, presiona Alt + Shift + Ctrl + F1~F6 Cambiar a la ventana de comandos.
En el ámbito de Linux, se utiliza principalmente en servidores, raramente se encuentra la operación de apagado. Después de todo, ejecutar un servicio en el servidor es un proceso interminable, a menos que sea en circunstancias especiales, se tendrá que apagar el servidor.
El procedimiento de apagado correcto es: sync > shutdown > reboot > halt
La orden de apagado es: shutdown, puedes usar man shutdown para ver la documentación de ayuda.
Por ejemplo, puede ejecutar el siguiente comando para apagar:
sync sincronizar los datos desde la memoria al disco duro. comando shutdown de apagado, puede ver la documentación de ayuda con man shutdown. Por ejemplo, puede ejecutar el siguiente comando para apagar: shutdown –h 10 ‘Este servidor se apagará después de 10 mins este comando le dice a la gente que el ordenador se apagará en10minutos después de apagarse y se mostrará en la pantalla actual del usuario que se ha conectado. shutdown –h now se apagará inmediatamente shutdown –h 20:25 El sistema se apagará hoy20:25Apagar shutdown –h +10 Apagar el sistema en diez minutos shutdown –r now el sistema se reiniciará inmediatamente shutdown –r +10 El sistema se reiniciará en diez minutos reboot reiniciar, equivalente a shutdown –r now halt cerrar el sistema, equivalente a shutdown –h now y poweroff
Resumamos, ya sea reiniciar el sistema o cerrarlo, primero debe ejecutar sync Los comandos escriben los datos de la memoria a disco.
Los comandos para apagar el sistema son shutdown –h now halt poweroff y init 0 , los comandos para reiniciar el sistema son shutdown –r now reboot init 6.