У мене "Macintosh HD" є `/ usr / bin / env`, але не в розділі відновлення. Це нормально?


4

Я працюю над MacBook Air, що зараз завантажується до macOS High Sierra 10.13.6. У нього також є розділ Ubuntu 16.04, до якого я зараз намагаюся дійти.

Я намагався перевстановити rEFInd , що завдяки SIP робиться з розділу відновлення. Не вдалося тому, що;

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

Котрий був кинутий #!/usr/bin/env bashу верхній частині сценарію встановлення.

Я подивився, і справді його немає /usr/bin/envв розділі відновлення. На головній перегородці є одна. Це термінал у розділі відновлення:

[-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

Тепер кінцева мета - перевстановити rEFInd (я мав це раніше, але оновлення macOS змінило порядок завантаження, щоб він більше не завантажувався правильно), але моє питання зараз таке: чи нормально це не мати /usr/bin/envу розділі відновлення?

Той факт, що сценарій rEFInd очікує його існування, змушує мене замислитися, чи я щось зламав.

Відповіді:


3

Чи нормально не мати / usr / env / bin у розділі відновлення?

Так, цілком нормально, /usr/bin/envщоб не знаходитись у розділі відновлення.

Якщо ви мали змонтувати розділ Recovery і відкрити BaseSystem.dmgконтейнер для пошуку файлу, ви побачите, що він не існує.

$ 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   

Отже, disk0s3є той, який ми хочемо встановити

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

Тепер відкрийте зображення системи відновлення BaseSystem.dmg.

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

На екрані з’явиться графічний інтерфейс із вікном Finder.

Вікно Finder

Перейдіть до місця, /usr/binі ви помітите, що envйого немає.

введіть тут опис зображення

Важливо пам’ятати, що розділ Recovery - це зменшена версія фактичної базової системи. Щоб заставити rEFInd працювати правильно, це потрібно зробити на завантажувальному розділі, а не на розділі відновлення. Отже, зрештою, ви нічого не зіпсували.


Обидві відповіді були чудовими і навчали мене того, чого я не знав щодо роботи з перегородками на комп'ютері. Я приймаю цю, бо вона відповідає на запитання в заголовку, і тому, мабуть, те, що шукатимуть майбутні читачі.
Незграбний кіт

Відповідно до rodsbooks.com/refind/sip.html рекомендується встановити rEFInd з розділу відновлення, якщо включено SIP.
Віктор Тран

3

Багато команд відсутні під час завантаження в розділ Recovery. Якщо macOS, до якого ви зазвичай завантажуєтесь, працює в порядку, то ви можете відновити доступ до відсутніх команд, дотримуючись інструкцій, наведених нижче.

Ви можете отримати доступ до відсутніх команд, оновивши змінну PATH. Для цього вам потрібно знати назву запуску диска macOS. Кроки наведені нижче.

  1. Визначте назву вашого запуску диска для macOS. Під час завантаження в macOS виберіть →About this Macна панелі меню. Ім'я запуску диска відображатиметься у спливаючому вікні. На моєму Mac це ім'я Marlin.
  2. Завантажте розділ Recovery.
  3. Відкрийте вікно терміналу.
  4. Введіть наведені нижче команди. Замініть Marlinім'я запуску диска.

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

У вашому випадку /usr/bin/envце абсолютний шлях, тому оновлення PATHзмінної не видалить повідомлення про помилку. Однак ви можете вручну вибрати bashоболонку, а потім виконати сценарій.

Замість використання

./refind-install

ти міг би використати

bash
. refind-install
exit

або

bash
source refind-install
exit

Примітка. Я пропустив усі необхідні аргументи до refind-install.

Найкраща порада для вашої ситуації

У вашому випадку вам краще уникати додаткових абсолютних шляхів до команд, які можуть існувати в refind-installсценарії. Найкращим способом зробити це було б завантаження розділу Recovery і виконання наступної команди. Це відключить захист цілісності системи (SIP).

csrutil disable

Потім ви можете завантажитися назад у macOS і запустити refind-installсценарій. Щоб увімкнути SIP, введіть наступну команду та перезавантажте свій Mac.

csrutil clear

Дякую за цю пораду, відключення SIP працювало дуже добре, і сценарій працював за призначенням. Я б хотів, щоб я міг прийняти обидві відповіді, оскільки вони обоє дали дуже корисну інформацію.
Незграбний кіт

1
Чому csrutil clearі ні csrutil enable?
Харальд Ханш-Олсен

1
@Harald Hanche-Olsen: Щоб увійти csrutil enable, вам доведеться завантажитися назад до розділу Recovery, ввести команду, а потім завантажитися назад до macOS. Команду csrutil clearможна ввести з macOS і вимагає лише перезавантаження. В основному, це економія часу.
Девід Андерсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.