Apakah ada Cara untuk masuk ke Mode Pengguna Tunggal tanpa me-reboot?

8

Seperti dengan UNIX masa lalu ketika Anda bisa mengirim perintah initdan Anda sedang menatap layar teks hitam dengan shell untuk Anda gunakan sendiri. ;)

poige
sumber
Setelah berjam-jam pengujian menggunakan berbagai versi OS X / macOS dari 10.11.6 hingga 10.14.2, dengan dan tanpa SIP diaktifkan, mesin fisik dan virtual yang berbeda, tidak satu kali dari beberapa lusinan melakukan sudo launchctl reboot userspace -spembentukan ruang pengguna yang sukses dan bermanfaat reboot! Sederhananya, terlepas dari sumber dokumentasi, perintah yang disebutkan di atas tidak dan tidak bekerja dan oleh karena itu terlepas dari kenyataan jawaban atas pertanyaan ini diterima, saya tidak menemukannya bekerja dan merupakan alasan untuk downvote saya.
user3439894
jawaban saya menyatakan tepat "diuji pada El Captian", di mana ia bekerja. Jawabannya sangat diedit sekarang, tetapi ini masih dapat ditemukan dalam riwayat revisi. Sederhananya saya tidak mengatakan itu akan berhasil pada hal lain
poige
1
Saya menguji di bawah El Capitan serta Sierra, High Sierra dan Mojave. Dalam keadaan apa pun tidak melakukan sudo launchctl reboot userspace -spreform yang sukses dan dapat digunakan dengan reboot dari Terminal saat berada di GUI! Harap hormati bahwa saya tidak hanya membutuhkan waktu, energi, dan upaya yang cukup besar, saya juga menyatakan alasan yang sah untuk downvote saya, yang tentu saja saya tidak berkewajiban untuk melakukannya. Fakta bahwa pada tiga sistem Apple yang berbeda, MacBook Pro, iMac dan MacBook Air, menjalankan El Capitan dan kemudian, itu tidak bekerja untuk saya seperti yang diiklankan di sini atau dalam dokumentasi! AFAIC Bagi saya, akhir cerita.
user3439894
Bekerja untukku. Di sini: 15.6.0 x86_64 root:xnu-3248.73.11~1/RELEASE_X86_64 x86_64. Apa yang kamu bicarakan tentang respek? :) Atau jika Anda berbicara tentang rasa hormat, di mana Anda menghargai kata-kata saya? :)
poige
Jawaban yang diedit. Berpikir tentang perekaman video dan mengunggahnya di youtube. ;)
poige

Jawaban:

5

Bergantung pada kebutuhan Anda, cobalah mengubah jendela masuk untuk meminta nama pengguna dan kemudian masuk > konsol sebagai pengguna.

Kemungkinan ini telah dihapus pada 10.10 sehingga Anda harus boot ke pemulihan atau ssh in atau menggunakan aplikasi terminal jika bypass jenis lama warisan ini bukan yang Anda cari.

Juga, ini bukan mode root single user sejati, yang perlu terjadi di awal proses boot pada macOS modern.

bmike
sumber
Sepertinya saya sudah menemukan jawaban nyata untuk pertanyaan saya. Akan memeriksa dan membalas
poige
@poige Saya pasti tidak bisa membuatnya berfungsi di Mojave (tapi saya tidak main-main dengan menulis default). Jangan ragu untuk mengedit jawaban saya untuk membuatnya persis seperti yang Anda inginkan atau jawab sendiri jika jawaban yang lebih bersih adalah yang terbaik setelah Anda menguji .
bmike
> Tidak ada cara yang terdokumentasi untuk transisi dari OS yang boot ke mode pengguna tunggal tanpa reboot. itu klaim palsu.
poige
Hai @ poige mungkin ada kebingungan apa mode pengguna tunggal. Satu orang mengangkat jawaban Anda dan 5 turun. Merasa bebas untuk membuat jawaban baru jika Anda memiliki sesuatu untuk ditambahkan? Wikipedia itu menyebutkan bahwa mode pengguna tunggal pada macOS hanya terjadi Pra-boot jadi saya terbuka untuk Anda yang memiliki arti berbeda dari saya tentang apa yang Anda anggap sebagai pengguna tunggal. Beri tahu saya jika saya bisa membantu
bmike
3

Teori

Singkatnya, ada cara yang terdokumentasi man launchctluntuk menyelesaikan peralihan ke Mode Tunggal tanpa boot ulang kernel. Itu dapat digunakan, misalnya, dari jendela Terminal dengan perintah SHELL:

sudo launchctl reboot userspace -s

Praktek

Kapten

Saya mengujinya di El Capitan pada Macbook Air 2015 di mana ia bekerja. Tapi saya juga punya laporan dari pengguna bahwa usahanya pada El Capitan tidak berhasil. Satu-satunya perbedaan yang dapat saya pikirkan adalah Retina yang memerlukan mode grafis yang berbeda atau semacamnya. Saya tidak punya Macbook dengan Retina yang menjalankan El Capitan, jadi untuk saat ini saya tidak bisa mengatakan apa-apa lagi untuk mendukung versi seperti itu.

Sierra Tinggi, Mojave

Percobaan saya dengan High Sierra menunjukkan bahwa fungsi ini tidak lagi berfungsi (dibandingkan dengan El Capitan). Sekali lagi, mungkin karena Retina, tidak jelas. Mojave tidak membuatnya bekerja juga.


Penjelasan menyeluruh oleh seorang kontributor¹

Ada cara untuk kembali ke mode pengguna tunggal dari macOS yang belum berjalan tanpa melakukan reboot penuh dengan menjalankan

sudo launchctl reboot userspace -s

Ini akan meluncurkan kembali hanya bagian userspace dari macOS tanpa me-restart kernel Darwin dan setara dengan mengubah runlevel pada UNIX-hari tua.

Untuk detail tambahan, lihat man launchctl:

reboot [system|userspace|halt|logout|apps|reroot ]
    Instructs launchd to begin tearing down userspace. With no argu-
    ment given or with the system argument given, launchd will make
    the reboot(2) system call when userspace has been completely
    torn down. With the halt argument given, launchd will make the
    reboot(2) system call when userspace has been completely torn
    down and pass the RB_HALT flag, halting the system and not ini-
    tiating a reboot.

    With the userspace argument given, launchd will re-exec itself
    when userspace has been torn down and bring userspace back up.
    This is useful for rebooting the system quickly under conditions
    where kernel data structures or hardware do not need to be re-
    initialized.

    -s       When rebooting the machine (either a full reboot or
             userspace reboot), brings the subsequent boot session
             up in single-user mode.

Ini berarti bahwa pada tingkat teknis sudo launchctl reboot userspace -stidak menelepon reboot(2)dan karenanya menyediakan cara untuk beralih ke mode pengguna tunggal tanpa reboot.

Juga artikel Wikipedia tentang mode Single user mengatakan:

Dalam OS X El Capitan dan rilis lebih lanjut dari macOS, mode dapat dibalik ke mode pengguna tunggal dengan perintah sudo launchctl reboot userspace -sdi Terminal, dan sistem dapat sepenuhnya reboot di mode pengguna tunggal dengan perintah sudo launchctl reboot system -s.


1 - Atas perkenan @ nohillside

poige
sumber