2011-04-22 17 views

Respuesta

0

El sistema asigna el número de inodo. El código de usuario no puede especificarlo al crear un archivo.

0

Es un número bastante bajo, por lo que es probable que ya esté en uso; de lo contrario, podría ejecutar un script Bash para crear algunos miles de archivos: algo así como for i in $(seq 1 12000); do touch $i.txt; done. A continuación, busque el que desee: find/-inum 12253 y cámbiele el nombre a lo que desee y colóquelo como desee. Si no sobrescribe el espacio asignado, en cuyo caso lo más probable es que se cree un nuevo inodo, eso debería hacerlo. Sin embargo, es una solución descuidada, y debe haber una mejor manera.

8

No creo que haya ninguna manera programática de solicitar un número de inodo específico al crear un archivo desde el espacio de usuario. Además de ser visible en los resultados de stat(), los números de inodo no tienen significado en el espacio de usuario; son parte de los datos internos de contabilidad del sistema de archivos, al igual que los números de bloque donde se asignan los contenidos del archivo.

Probablemente podría usar debugfs para "cambiar" el número de inodo de un archivo existente, copiando el contenido de un inodo a otro, luego actualizando las entradas de directorio para apuntar al nuevo inodo y desasignando el anterior. Así que puedes crear tu archivo con cualquier número de inodo, luego "cambiarlo" al deseado. Sin embargo, esto debería hacerse con extremo cuidado, ya que es probable que los errores ocasionen daños en el sistema de archivos y la pérdida de datos. También debería tener en cuenta la posibilidad de que su número de inode deseado ya esté siendo utilizado por otro archivo.

+1

Lo que hice para crear un archivo con inode 5 (archivo de inicio): 0) desmontar el volumen 1) abrir el volumen con 'debugfs', especificar' -w' para abrirlo como escribible 2) 'clri <5>' 3) ' seti <5> '4)' sif <5> modo 0x81FF' 5) 'ln <5> BootFile' 6)' sif <5> links_count 1' ('ln' no cambia este campo) 7) cerrar' debugfs' 8) montar el volumen 9) editar 'BootFile' :) –

+0

Espero que se haya asegurado de que el inode 5 no contenga algún otro archivo importante antes de borrarlo ... – Wyzard

+0

Inode 5 está [reservado] (http://www.nongnu.org/ext2-doc /ext2.html#RESERVED-INODES-VALUES), y también se conoce como 'EXT2_BOOT_LOADER_INO'. Además, hice esto en un entorno controlado (tarjeta SD no crítica). –

Cuestiones relacionadas