วิธีการปิดอูบุนตูอย่างถูกต้องในโหมดผู้ใช้คนเดียว?


4

ฉันค้นหามากเพียงเพื่อจะพบว่ามีคนจำนวนมากเจอปัญหานี้ โดยการเพิ่ม rw init = / bin / bash ที่ท้ายบรรทัด vmlinuz ฉันสามารถเข้าสู่โหมดผู้ใช้เดี่ยวของ UBUNTU 10.04 LTS แต่เมื่อฉันพิมพ์ปิดหรือรีบูตมันแค่บอกว่าไม่สามารถทำได้ จากนั้นฉันเรียกใช้ "/ sbin / init 0" และมันบอกว่ามันไม่สามารถเชื่อมต่อกับถุงเท้าของคนธรรมดา

ฉันเดาว่าเพราะเราแทนที่ / sbin / init ด้วย / bin / bash และไม่มี init (หรือพุ่งพรวด) จึงไม่สามารถปิดเครื่องได้

ฉันสังเกตเห็นว่ามีคนบางคนพูดโดยออกจากทางออกและฉันควรจะเข้าสู่การบูตปกติในระยะต่อไปฉันลองแล้วและระบบอูบุนตูใน VMWare ของฉันติดอยู่และประพฤติตัวแปลกอย่างน้อยก็ในความรู้สึกของแสง CAPLOCK .. (การยึดครองของ CPU ทำคะแนนด้วย)

ขอบคุณมากล่วงหน้า ~

==== UPDATED ===== ฉันลองใช้ซิงเกิ้ลแทน init = / usr / bash แต่มันเข้าสู่โหมดผู้ใช้หลายคนทันที


การออกจากกระบวนการเริ่มต้นคือความตื่นตระหนกของเคอร์เนลดังนั้นไฟแฟลชจะกระพริบ
Kerrek SB

คำตอบ:


3

เมื่อคุณไม่มีinitหรือกระบวนการอื่นใดที่อยู่ข้างเชลล์คุณไม่มีอะไรจะปิดระบบ ในความเป็นจริงสิ่งเดียวที่สำคัญคือระบบไฟล์ - ซิงค์จากนั้นจึงยกเลิกการต่อเชื่อมระบบไฟล์บนดิสก์ทั้งหมดหรือสร้างใหม่เป็นแบบอ่านอย่างเดียว (หากไม่สามารถยกเลิกการต่อเชื่อมได้เช่นรูท):

sync
umount /home
mount -o remount,ro /

หลังจากนี้คุณอาจดึงปลั๊กได้เช่นกัน


อีกสิ่งหนึ่งที่คุณอาจจะลอง ( แต่ผมยังไม่ได้ ) คือการเริ่มต้นเดิมinit ตรวจสอบให้แน่ใจว่าไม่มีกระบวนการใดนอกเหนือจากเชลล์ pid1 ของคุณกำลังทำงานอยู่จากนั้นเปลี่ยนเป็นไดเร็กทอรีรูทและexec init :

cd /
sync
exec /sbin/init

exec แทนที่กระบวนการปัจจุบันด้วยกระบวนการที่กำหนดดังนั้นเริ่มต้นด้วยวิธีนี้ / sbin / init จะใช้ pid 1 พิเศษจากเชลล์ของคุณ

อย่างไรก็ตามถ้า pid 1 ออกมาเคอร์เนลจะตื่นตระหนกทันที - ดังนั้นให้แน่ใจว่าคุณเป็นอย่างน้อยsyncระบบไฟล์ก่อนที่จะทำสิ่งนี้

เมื่อเคอร์เนลตกใจมันพิมพ์ข้อความเริ่มกระพริบไฟ LED คีย์บอร์ดและหยุดทุกอย่างอื่น - มันหยุดแม้กระทั่งลูปที่ปกติจะบอกให้ซีพียูไม่ได้ทำงาน นี่อาจเป็นสาเหตุของความบ้าแคปล็อคและการใช้ CPU สูงโดยเครื่องเสมือนของคุณ

ของคุณ "คนบางคน" ถูกต้อง - ในจริงโหมดเดียวที่ผู้ใช้พิมพ์exitจะมักจะสลับไปยังผู้ใช้หลายคนหรืออย่างน้อยสะอาดรีบูต อย่างไรก็ตามinit=/bin/bashไม่ได้เริ่มโหมดนี้ มันไม่ได้เริ่มอะไรเลยนอกจากเคอร์เนลและbashเชลล์ ในการเข้าถึงโหมดผู้ใช้คนเดียวจริงๆ คุณจะต้องเพิ่มลงsingleในบรรทัดคำสั่งเคอร์เนล (บางครั้ง1หรือใช้sงานได้ แต่ไม่ใช่ดิสทริบิวชันทั้งหมดที่ใช้ runlevels) ใน Ubuntu สิ่งนี้เคยถูกเรียกว่า "โหมดการกู้คืน"


ใช่! คุณสคริปต์ของ exec / sbin / init ทำงานได้! ฉันรันคำสั่งเหล่านี้บนเครื่องฟิสิคัลมันเปลี่ยนเป็นโหมดผู้ใช้หลายคนตามที่คุณพูด แต่แปลกเมื่อฉันเรียกใช้ "รีบูต" หรือ "หยุด" ในเครื่องฟิสิคัลจริงมันไม่ได้บ่นอะไรเกี่ยวกับคนธรรมดา เครื่องทางกายภาพที่แท้จริงคือกล่อง ubuntu10.04LTS AMD64 และที่นี่ฉันควรทำการแก้ไขที่เครื่องที่ฉันพูดถึงในคำถามข้างต้นไม่ใช่ UBUNTU10.04LTS คือ Ubuntu11.04
ทำลายโดยอัลลัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.