2 votos

¿Cómo acceder a los comandos incluidos en macOS desde MacOS Recovery?

A menudo, arranco con el Recuperador de MacOS sólo para encontrar que uno de los comandos que deseo introducir no ha sido incluido. Por ejemplo, hexdump y nano no están incluidos. Sin embargo, si el volumen que contiene MacOS está montado, es de la misma versión y no está dañado, entonces existe la posibilidad de acceder a los comandos que faltan desde ese volumen. Esto requiere conocer la ruta del comando. Por lo tanto, me encuentro localizando el comando buscando manualmente en los distintos directorios o utilizando el find lo que puede ser tedioso y/o llevar mucho tiempo. Además, algunos comandos no pueden ser ejecutados porque el directorio Root no es el punto de montaje del volumen que contiene MacOS. Un ejemplo sería el comando zsh mando. ¿Existe una forma mejor de acceder a los comandos de macOS desde MacOS Recovery? En este caso, los comandos de MacOS se refieren a los comandos incluidos en una instalación de MacOS.

2voto

David Anderson Puntos 2189

Esta respuesta se ha probado con OS X Mavericks, macOS High Sierra y macOS Monterey. OS X Mavericks se instaló en un volumen JHFS+ y macOS High Sierra se instaló en un volumen APFS. La versión Monterey de macOS se utilizó en los ejemplos siguientes.

Nota: En los ejemplos siguientes, los comandos se introdujeron en una ventana de Terminal mientras se arrancaba en MacOS Recovery para Monterey. Cuando se arranca en Recuperación de macOS, los volúmenes APFS que contienen MacOS Monterey se montan de sólo lectura en /Volumes/Macintosh HD y lectura/escritura en /Volumes/Macintosh HD - Data .

Un método para acceder a los comandos de MacOS

A continuación se presenta la sinopsis para obtener la ubicación ( ubicación ) de los comandos deseados de MacOS ( macOScomando ... ). Para ser localizado, cada comando necesita estar en la ruta de búsqueda determinada por el punto de montaje suministrado ( macOSmountpoint ) y el valor del PATH variable. Además, el volumen que contiene los comandos de MacOS debe montarse en el punto de montaje suministrado.

chroot macOSmountpoint que macOScomando ...

La ruta de búsqueda se determina anteponiendo a cada directorio de la lista de directorios separada por dos puntos, la salida de echo $PATH con el comando macOSmountpoint . La salida de echo $PATH se indica a continuación.

/usr/bin:/bin:/usr/sbin:/sbin

Por ejemplo, el /Volumes/Macintosh HD punto de montaje y superior PATH haría que la ruta de búsqueda fueran los directorios en el siguiente orden.

/Volumes/Macintosh\ HD/usr/bin
/Volumes/Macintosh\ HD/bin
/Volumes/Macintosh\ HD/usr/sbin
/Volumes/Macintosh\ HD/sbin

A continuación se muestra un ejemplo de cómo obtener la ubicación del hexdump comando.

chroot /Volumes/Macintosh\ HD which hexdump

A continuación se muestra la salida del comando anterior. Esta salida es la ubicación ( ubicación ) del hexdump de mando. Dado que el chroot cambia su directorio root al punto de montaje suministrado /Volumes/Macintosh HD El punto de montaje suministrado no aparece en la salida.

/usr/bin/hexdump

A continuación se muestra la sinopsis para introducir el comando localizado.

macOSmountpoint / ubicación [ argumento ... ]

A continuación se muestra un ejemplo de aplicación del hexdump al comando test.txt en el directorio de trabajo actual.

/Volumes/Macintosh\ HD/usr/bin/hexdump test.txt

Un método alternativo para acceder a los comandos de MacOS

A continuación se muestra una sinopsis alternativa para introducir el comando de MacOS que no requiere localizar primero el comando.

chroot macOSmountpoint macOScomando [ argumento ... ]

Por ejemplo, esta alternativa permite sustituir los dos comandos de ejemplo anteriores por el comando único que se indica a continuación.

chroot /Volumes/Macintosh\ HD hexdump "$PWD/test.txt"

Tenga en cuenta lo siguiente.

  • Utilizando $PWD funciona en el comando anterior, porque /Volumes/Macintosh HD/Volumes/Macintosh HD es un enlace simbólico a / .

  • Si el directorio de trabajo actual reside fuera del /Volumes/Macintosh\ HD punto de montaje, entonces podría ser necesario volver a montar. Consulte la sección de abajo titulada "Cómo volver a montar cuando es necesario acceder a uno o más archivos" .

  • Algunos comandos de MacOS sólo pueden funcionar como se espera si se utiliza esta forma alternativa. El zsh es uno de esos comandos.

A continuación se muestra un ejemplo de cómo invocar un shell Z.

chroot /Volumes/Macintosh\ HD zsh

Un intérprete de comandos invocado como se muestra arriba no tendrá acceso al /dev directorio. Sin embargo, se pueden utilizar redireccionamientos. Por ejemplo, a continuación se invoca un shell Z que permite el acceso a /dev/null a través del descriptor de campo 8.

chroot /Volumes/Macintosh\ HD zsh 8>/dev/null

Cómo volver a montar cuando es necesario acceder a un archivo

Nota: Cualquier remontaje sólo persiste hasta que el Mac se reinicie.

Si un archivo al que se va a acceder no reside en el volumen que contiene los comandos de MacOS, es posible que haya que mover el punto de montaje correspondiente al volumen que contiene el archivo. El directorio del nuevo punto de montaje tendrá que comenzar con el directorio del punto de montaje asignado al volumen que contiene los comandos MacOS. Por ejemplo, si el mencionado test.txt el archivo se almacena en un nombre de volumen APFS MyAPFS entonces el punto de montaje por defecto sería /Volumes/MyAPFS . Dado que este directorio no comienza con /Volumes/Macintosh HD El MyAPFS el volumen tendrá que volver a ser montado. En primer lugar, introduzca el siguiente comando para desmontar el MyAPFS volumen.

diskutil unmount /Volumes/MyAPFS

A continuación se muestra un ejemplo de salida.

Volume MyAPFS on disk2s7 unmounted

A continuación, utilice los siguientes comandos para asegurarse de que el nuevo punto de montaje existe, y luego monte el MyAPFS volumen en ese punto. Aquí, el nuevo punto de montaje fue elegido para ser el mismo que cuando se arrancó en Monterey. El identificador que se introduce debe ser el mismo que el disk2s7 que se muestra en la salida anterior.

Nota: Los comandos que aparecen a continuación deben introducirse en un shell en el que el directorio root sea / .

mkdir -p /Volumes/Macintosh\ HD/Volumes/MyAPFS
diskutil mount -mountpoint /Volumes/Macintosh\ HD/Volumes/MyAPFS disk2s7

Nota: Debido al diseño de Monterey, el contenido del /Volumes/Macintosh HD/Volumes se almacena realmente en el directorio Macintosh HD - Data volumen.

A continuación se muestra un ejemplo de salida.

Volume MyAPFS on disk2s7 mounted

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X