Deshabilite temporalmente el sistema de archivos expandidos durante el primer arranque

13

Me gustaría construir una imagen interna de Raspberry Pi basada en Raspbian Lite que ya esté configurada con la ubicación, zona horaria, etc. correctas. Desafortunadamente para mí, las versiones actuales de imágenes de Raspbian cambian automáticamente el tamaño del sistema de archivos, luego reiniciar.

Quiero evitar las molestias de reducir el tamaño del sistema de archivos al evitar que ocurra el cambio de tamaño. ¿Cómo editaría la imagen después de la grabación para deshabilitar temporalmente el cambio de tamaño automático del sistema de archivos?

Editado para aclarar los efectos debe ser reversible; es decir, querré que mi imagen personalizada se expanda en el primer arranque.

patricktokeeffe
fuente
Puede que esta no sea la solución ideal, pero ¿ha considerado usar una tarjeta pequeña de 4 gb donde esto no presentaría tal problema?
Steve Robillard
2
Idea interesante ... quemar en una tarjeta pequeña, limitando efectivamente el cambio de tamaño. Prefiero una solución directa, pero esta es una alternativa decente. Gracias
patricktokeeffe
2
Eso es bastante molesto. Estoy muy seguro de que esto se hace a través de una secuencia de comandos de arranque simple y sencilla, tal como raspi-configse ejecuta en el primer arranque, y sería fácil de deshabilitar. Puedo echar un vistazo pero tendré que descargar una nueva imagen, la última que tengo es de mayo. Vuelve en unas horas.
Ricitos de oro

Respuestas:

13

Hay un mecanismo de dos partes que se hace responsable de esto en Raspbian; probablemente la mejor idea es cuidar ambas partes si están habilitadas.

El primero es que el original /boot/cmdline.txtincluye esto:

init=/usr/lib/raspi-config/init_resize.sh

En referencia a una secuencia de comandos con la ruta de acceso en la partición raíz, el cual será utilizado como el init proceso en el arranque. Sin ese bit, sería un valor predeterminado en el núcleo /sbin/init, que en Raspbian es un enlace simbólico /lib/systemd/systemd.

Al eliminar esa parte de cmdline.txt, el sistema debería arrancar normalmente.

Lo que ese script realmente hace es cambiar el tamaño de la partición en la tarjeta SD. Este es un proceso distinto del cambio de tamaño del sistema de archivos en la partición, 1 que es lo que sucede a continuación.

La forma en que sucede es que el sistema se reinicia de inmediato normalmente (es decir, a través de systemd) y init.dse configura un script para que se active temprano, lo que debe eliminarse de la segunda partición:

/etc/init.d/resizefs_once

Y el enlace simbólico, que también debe eliminarse:

/etc/rc3.d/S01resizefs_once

Puede guardar una copia para su uso posterior si lo desea, pero raspi-configpuede crearla nuevamente (está incrustada en el raspi-configscript de shell). Si realmente se ejecuta, se elimina a sí mismo, por lo que no volverá a suceder.

Lo que también hace es cambiar el tamaño del sistema de archivos en la partición recientemente redimensionada.

No debe hacerse daño si solo ocurre una u otra parte; en el primer caso terminas con un sistema de archivos que no llena la partición ampliada, en el segundo no pasará nada, porque el sistema de archivos ya llena la partición.

Si luego usa raspi-configpara agrandar el sistema de archivos, cambia el tamaño de la partición de inmediato, luego configura el script de inicio (como ya se mencionó).

Editar cmdline.txten la primera partición es simple en cualquier computadora ya que es una partición VFAT. Eliminar el init.darchivo requiere un sistema que pueda acceder y editar los sistemas de archivos ext4.

Ambas tareas pueden realizarse en el archivo de imagen en sí antes de grabar la tarjeta; para montar y modificar una imagen Raspbian en un sistema GNU / Linux, consulte aquí . Hay un Q&A paralelo para Windows .

Esto también es reversible, pero deberá volver a colocar ambas partes del mecanismo como se acaba de describir, ya que la primera no incluye la puesta en escena automática de la segunda.


  1. Aunque podría decirse que un mensaje de error de ese script confunde esos términos al afirmar que no pudo cambiar el tamaño del sistema de archivos raíz , cuando lo que realmente no pudo hacer es cambiar el tamaño de la partición con el sistema de archivos raíz. Hacer uno no logra automáticamente el otro.
Ricitos de oro
fuente
1
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
Ghanima
La desactivación de @ goldilock init=/usr/lib/raspi-config/init_resize.shde /boot/cmdline.txtfunciona en ubuntu mate también y parece suficiente por sí sola. Tengo una imagen ubuntu mate de 4 gb flasheada en una tarjeta sd de 32 gb y contiene los tamaños de partición en el tamaño de imagen original. También /etc/init.d/resizefs_once, y /etc/rc3.d/S01resizefs_onceexisten Dont tras el primer inicio en ubuntu Mate.
sith
Sólo para confirmar, será restaurar tanto la cmdline.txte init.dy rc3.darchivo y enlace permiten que el siguiente arranque para cambiar el tamaño por sí mismo o le tengo que correr raspi-configy correr de forma manual?
Oxwivi
@Oxwivi Debería, sí. He aclarado toda esta publicación e hice un comentario explícito sobre eso al final.
Ricitos de oro
Si, gracias. También es importante tener en cuenta, IDK, ya que la versión, pero al menos la última, no incluye las referencias de script de cambio de tamaño que mencionó en el exterior cmdline.txt. Arranqué la imagen de Raspbian usando systemd-nspawny aún obtuve registros de errores al intentar cambiar el tamaño después de eliminarcmdline.txtSin embargo, .
Oxwivi