Ho '/ usr / bin / env' nel mio "Macintosh HD" ma non nella partizione di ripristino. È normale?

4

Sto lavorando su un MacBook Air, che è attualmente in fase di avvio su macOS High Sierra 10.13.6. Ha anche una partizione di Ubuntu 16.04, che sto cercando di raggiungere.

Stavo cercando di reinstallare REFINd , che a causa di SIP viene eseguito dalla partizione di ripristino. Ha fallito perché;

-bash: ./refind-install: /usr/bin/env: bad interpreter: No such file or directory

Che è stato lanciato da #!/usr/bin/env bash nella parte superiore dello script di installazione.

Ho dato un'occhiata e in effetti non c'è /usr/bin/env nella mia partizione di ripristino. Ce n'è uno sulla partizione principale. Questo è il terminale nella partizione di ripristino:

[-bash-3.2# ls /usr/bin/env
ls: /usr/bin/env: No such file or directory
[-bash-3.2# ls /Volumes/Macintosh\ HD/usr/bin/env
/Volumes/Macintosh\ HD/usr/bin/env

Ora l'obiettivo è di reinstallare REFInd (l'ho avuto prima, ma l'aggiornamento di macOS ha cambiato l'ordine di avvio in modo che non si avvii correttamente), ma la mia domanda adesso è: Is è normale che non abbia /usr/bin/env nella partizione di ripristino?

Il fatto che lo script REFInd si aspetti che sia lì mi fa meravigliare se ho rotto qualcosa.

    
posta Clumsy cat 25.07.2018 - 15:39
fonte

2 risposte

3

Is it normal to not have /usr/env/bin in the recovery partition?

Sì, è perfettamente normale che /usr/bin/env non si trovi nella partizione di ripristino.

Se dovessi montare la partizione di ripristino e aprire il contenitore BaseSystem.dmg per cercare il file, scoprirai che non esiste.

$ diskutil list

 #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI EFI                    209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh              999.3 GB   disk0s2
   3:                 Apple_Boot Recovery HD            650.0 MB   

Quindi, disk0s3 è quello che vogliamo montare

$ sudo mkdir /Volumes/RecoveryHD
$ sudo mount -t HFS /Volumes/RecoveryHD

Ora apri l'immagine del sistema di recupero BaseSystem.dmg .

$ open /Volumes/RecoveryHD/com.apple.recovery.boot/BaseSystem.dmg

Una GUI apparirà sullo schermo con una finestra del Finder.

Attraversail/usr/binenoteraicheenvnonèlì.

È importante ricordare che la partizione di ripristino è una versione ridotta del sistema di base effettivo. Per far funzionare REFInd correttamente, è necessario farlo sulla partizione di avvio, non dalla partizione di ripristino. Quindi, alla fine, non hai sbagliato niente.

    
risposta data 25.07.2018 - 18:01
fonte
3

Molti comandi mancano all'avvio nella partizione di ripristino. Se il macOS, di solito avviato, è in buono stato, è possibile ripristinare l'accesso ai comandi mancanti seguendo le istruzioni fornite di seguito.

È possibile accedere ai comandi mancanti aggiornando la variabile PATH. Per fare ciò è necessario conoscere il nome del disco di avvio di macOS. I passaggi sono indicati di seguito.

  1. Determina il nome del tuo disco di avvio per macOS. Durante l'avvio su macOS, seleziona →About this Mac dalla barra dei menu. Il nome del disco di avvio verrà visualizzato nella finestra popup. Sul mio Mac, il nome è Marlin .
  2. Avvia la partizione di ripristino.
  3. Apri una finestra di Terminale.
  4. Immettere i comandi indicati di seguito. Sostituisci Marlin con il nome del tuo disco di avvio.

    RT="/Volumes/Marlin"
    readonly OLDPATH=$PATH
    export PATH=$OLDPATH:$RT/usr/local/bin:$RT/usr/bin:$RT/bin:$RT/usr/sbin:$RT/sbin
    

Nel tuo caso, /usr/bin/env è un percorso assoluto, pertanto l'aggiornamento della variabile PATH non rimuoverà il messaggio di errore. Tuttavia, puoi selezionare manualmente la shell bash e quindi eseguire lo script.

Invece di usare

./refind-install

che avresti potuto usare

bash
. refind-install
exit

o

bash
source refind-install
exit

Note: I omitted any necessary arguments to refind-install.

Il miglior consiglio per la tua situazione

Nel tuo caso, sarebbe meglio evitare qualsiasi ulteriore percorso assoluto ai comandi che potrebbero esistere nello script refind-install . Il modo migliore per farlo sarebbe quello di avviare la partizione di ripristino ed eseguire il seguente comando. Questo disabiliterà la System Integrity Protection (SIP).

csrutil disable

Quindi puoi eseguire il boot su macOS ed eseguire lo script refind-install . Per abilitare SIP, inserisci il seguente comando, quindi riavvia il Mac.

csrutil clear
    
risposta data 26.07.2018 - 07:33
fonte

Leggi altre domande sui tag