Generar disco de memoria durante la compilación y se llenan de contenido

votos
0

¿Es, en cierto modo, es posible crear y rellenar una imagen de disco de memoria con los archivos sin tener que montar el disco de memoria?

Tengo un conjunto personalizado de archivos para Linux (así, sólo un montón de archivos), que debe estar dentro del sistema de archivos. Ahora quiero lo han ejecutado durante la construcción que genera un disco de memoria, formatear con mkfs (necesita ninguna raíz) y luego copiar los archivos de alguna manera en el disco de memoria (pero el camino no debe necesitar derechos de root!) ¿Hay una manera de hacerlo?

Publicado el 12/01/2018 a las 08:08
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
1

Se llama un dispositivo de bucle de retorno.

De paquetes instalar: libguestfs-tools.

Y necesita el archivo de imagen del núcleo Linux ( /boot/vmlinuz-*-generic) sea legible por el usuario.

# Create mountpoint.
mkdir space
# Create image.
dd if=/dev/zero of=space.img bs=1024 count=255
# Format image.
/sbin/mkfs.ext4 space.img

# Mount image.
#
# There is a bug with it at least on Ubuntu:
# "The kernel is no longer readable by non-root users"
# https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725
#
# Fix: $ dpkg-statoverride --add --update root root 0644 /boot/vmlinuz-$(uname -r)
# Alternative fix is to chown the kernel image manually: chown a+r /boot/vmlinuz-*-generic
#
# Does uid/gid mapping, uses space.img as image, /dev/sda of the quest as partition, space/ as the mount point.
guestmount -o uid=$(id -u) -o gid=$(id -g) -o default_permissions -a space.img -m /dev/sda space

# do things

# Unmount.
guestunmount space
Respondida el 12/01/2018 a las 10:54
fuente por usuario

votos
0

mountse utiliza para compartir un sistema de archivos para el uso del usuario. Que 'compartir' (conexión entre el archivo / cosa que contiene el sistema de archivos y el directorio accesible al usuario y estructura de archivos) se realiza mediante una moduleen el kernel (programa que se ejecuta dentro del núcleo). Ese 'programa' se traduce petición del usuario (ej. La creación de archivos) para las operaciones en el sistema de archivos.
Lo que necesitamos es un programa de sistema de archivos que se ejecuta en el espacio de usuario y no llama mount. Sistemas de archivos en espacio de usuario implementaciones son llamados fusibles y sé que hay fusible aplicación de sistemas de archivos populares. De todos modos, no estoy al tanto de cualquier programa popular, esa voluntad, por ejemplo, crear un archivo en un sistema de ficheros en un archivo sin 'montaje' en un directorio. Usted puede navegar ejemplos de wiki , tal vez usted encontrará tal programa.
Me gustaría ir con la escritura de tal programa a mí mismo.
Usted puede escribir su propio sistema de archivos o optar por utilizar uno ya existente y escribir un programa para modificar el contenido de un archivo (o imagen de disco RAM, en Linux es un archivo) y luego utilizar este programa para crear y modificar el contenido de este sistema de archivos, sin la ejecución de Linux mountllamada.
Por ejemplo, puede utilizar fat_fs biblioteca, que se utiliza en muchos sistemas embebidos, implementar fat_fs funciones callbacks ex. disc_read () disc_write () para leer y escribir desde su archivo / ramdisc, y luego llamar a las funciones fat_fs de modificar el contenido de la ramdisc / archivo. Dichas bibliotecas incorporadas no deben hacer ninguna llamada a mounto cualquier llamadas al sistema Linux, ya que estas llamadas faltan en sistemas embebidos.
PD. En mi universidad hay tales clases, que los estudiantes deben escribir un programa de sistema de archivos simple que se abre un archivo y apoya la creación de archivos, modificación y supresión en el sistema de archivos en este archivo.

Respondida el 12/01/2018 a las 11:00
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more