วิธีบู๊ต Linux เป็นโหมดบรรทัดคำสั่งแทน GUI ได้อย่างไร


26

ฉันใช้ Red Hat Linux 32 บิตใน VM ของฉัน ฉันต้องการบูตมันเป็นโหมดบรรทัดคำสั่งไม่ใช่โหมด GUI ฉันรู้ว่าจากที่นั่นฉันสามารถเปลี่ยนเป็นโหมด GUI โดยใช้startxคำสั่ง ฉันจะสลับกลับไปเป็นโหมดบรรทัดคำสั่งได้อย่างไร

คำตอบ:


23

อัปเดต: คำตอบด้านล่างล้าสมัยแล้ว

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

คำตอบ sysvinit (ล้าสมัยใน distros ปัจจุบัน):

คุณต้องการทำให้ runlevel 3 เป็น runlevel เริ่มต้นของคุณ จากเทอร์มินัลสลับไปที่รูทและทำสิ่งต่อไปนี้:

[user@host]$ su
Password:
[root@host]# cp /etc/inittab /etc/inittab.bak #Make a backup copy of /etc/inittab
[root@host]# sed -i 's/id:5:initdefault:/id:3:initdefault:/' /etc/inittab #Make runlevel 3 your default runlevel

อะไรก็ตามหลังจาก (และรวมถึง) ที่สอง#ในแต่ละบรรทัดเป็นความคิดเห็นสำหรับคุณคุณไม่จำเป็นต้องพิมพ์ลงใน terminal

ดูหน้า Wikipediaเกี่ยวกับ runlevels สำหรับข้อมูลเพิ่มเติม

คำอธิบายของsedคำสั่ง

  • sedคำสั่งเป็นบรรณาธิการกระแส (เพราะฉะนั้นชื่อ), คุณใช้มันในการจัดการกับการไหลของข้อมูลที่มักจะผ่านการแสดงออกปกติ
  • ที่นี่เรากำลังบอกsedให้แทนที่รูปแบบid:5:initdefault:ด้วยรูปแบบid:3:initdefault:ในไฟล์/etc/inittabซึ่งเป็นไฟล์ที่ควบคุม runlevles ของคุณ ไวยากรณ์ทั่วไปสำหรับการค้นหาและแทนที่seds/pattern/replacement_pattern/
  • -iตัวเลือกที่บอกsedจะใช้การปรับเปลี่ยนในสถานที่ หากสิ่งนี้ไม่มีอยู่sedจะมีเอาต์พุตไฟล์ผลลัพธ์ (หลังการทดแทน) ไปยังเทอร์มินัล (โดยทั่วไปจะเป็นเอาต์พุตมาตรฐาน)

ปรับปรุง

เปลี่ยนกลับไปใช้โหมดข้อความเพียงกดCTRL+ +ALT F1นี่จะไม่หยุดเซสชันกราฟิกของคุณเพียงแค่สลับคุณกลับไปที่เทอร์มินัลที่คุณลงชื่อเข้าใช้ คุณสามารถสลับกลับไปที่เซสชั่นกราฟิกด้วยCTRL+ +ALTF7


ขอบคุณสำหรับคำตอบ. นอกจากนี้เมื่อฉันเปลี่ยนเป็น GUI โดยใช้startxฉันจะเปลี่ยนกลับไปเป็นบรรทัดคำสั่งได้อย่างไร
คุณไม่ต้องห่วงลูก

1
@ 0xF1 เพิ่มคำอธิบายสำหรับsedคำสั่ง
โจเซฟอาร์

1
ฉันมักจะแนะนำให้ใช้sedกับไฟล์การกำหนดค่าเว้นแต่คุณจะรู้ว่าสิ่งที่คุณกำลังทำ บรรทัดที่มีปัญหาอาจเป็นความคิดเห็นก็ได้ แต่จะยังคงมีการเปลี่ยนแปลง ดังนั้นการแสดงออกปกติควรมีความแม่นยำมากขึ้นอย่างน้อยต้องมีสตริงid:...ที่จุดเริ่มต้นของบรรทัด เนื่องจากหน้าคนไม่ได้พูดอะไรเกี่ยวกับวิธีการรักษาพื้นที่สีขาวคุณอาจต้องการใช้s/^ *id:5:initdefault:(ซึ่งไม่รวมถึงTabตัวละครโดยวิธี)
เตอร์

1
คำตอบนี้ไม่ถูกต้องอย่างน้อยใน OS ปัจจุบันของฉัน ดูที่คำตอบของ @ golem ด้านล่าง ที่ทำงานให้ฉัน ฉันกำลังใช้ fedora 27
Lance

1
@ Lance จุดที่ดีมาก ขอบคุณสำหรับการแจ้งเตือน ฉันได้อัปเดตคำตอบของฉันเพื่อสะท้อนว่า
โจเซฟอา

25

อัพเดตสำหรับ RedHat / CentOS 7 ที่เปลี่ยนจาก sysvinit เป็น systemd

วิธีเปลี่ยนจาก GUI เป็น CLI: systemctl isolate multi-user.target

วิธีเปลี่ยนจาก CLI เป็น GUI: systemctl isolate graphical.target

ในการตั้ง CLI เป็นค่าเริ่มต้นrunlevel ( เป้าหมายในคำศัพท์ systemctl set-default multi-user.targetsystemd): อะนาล็อกสำหรับ GUI:systemctl set-default graphical.target

* CLI = Command Line Interface = โหมดบรรทัดคำสั่ง


ยังเห็น: เอกสารที่เกี่ยวข้อง
Mark Edington

2
ขอบคุณ .. ทุกฟอรัมยังคงทิ้งความรู้เก่า ๆ เกี่ยวกับ / etc / inittab แม้ว่ามันจะล้าสมัยไปแล้วก็ตาม
Shashank Vyas

11

ก่อนอื่นให้เปลี่ยนผู้ใช้เป็นรูท

su -
Password:

ป้อนรหัสผ่านรูท

ใช้โปรแกรมแก้ไขรายการโปรดของคุณเพื่อแก้ไขบรรทัดนี้ใน/etc/inittab:

id:5:initdefault:

เปลี่ยน 5 เป็น 3 เมื่อคุณบูตคอมพิวเตอร์จะพาคุณไปที่บรรทัดคำสั่งแทนที่จะเป็น GUI


โปรดรวมคำแนะนำเกี่ยวกับวิธีที่ OP ควรทำเช่นนี้เป็น root และไฟล์ใด คำตอบนี้ไม่เหมาะสมที่จะช่วยคนที่เพิ่งรู้จักกับ Linux
โจเซฟอาร์

1
ขอบคุณสำหรับการชี้ให้เห็นการกำกับดูแลของฉัน ฉันได้แก้ไขคำตอบแล้ว
Timothy Martin

นี่หมายความว่า GUI ไม่ทำงานหรือซ่อนอยู่หรือไม่
Aaron Franke

@AaronFranke สำหรับ Redhat ระบบในระดับการทำงาน 3 ไม่ได้เปิดใช้งาน GUI (หรือปิดในกรณีของระบบที่เปลี่ยนจาก runlevel 5 เป็น 3 โดยไม่ต้องรีบูต)
ทิโมธีมาร์ติ

3

นอกเหนือจากการเปลี่ยนแปลง/etc/inittabแล้วคุณยังสามารถบอกเคอร์เนลบนบรรทัดคำสั่งของมันว่าควรจะส่งต่อ runlevel เป้าหมายไปยังinitอะไรเมื่อเริ่มต้น สิ่งนี้ทำได้โดยการต่อท้าย runlevel ที่ต้องการไปยังบรรทัดคำสั่ง (ต้องเป็นอาร์กิวเมนต์สุดท้ายที่ฉันเชื่อ)

คุณสามารถทำสิ่งนี้ได้ทั้งแบบครั้งเดียวในระหว่างการบู๊ตหาก bootloader ของคุณอนุญาตให้คุณเปลี่ยนบรรทัดคำสั่งเคอร์เนลหรือคุณสามารถทำซ้ำรายการในการกำหนดค่า bootloader และเลือกอันที่ถูกต้องเมื่อทำการบูท runlevels บ่อยครั้ง)

สำหรับระบบที่ใช้systemdกระบวนการจะคล้ายกัน แต่วิธีการอื่น ๆ systemd.unit=desired.targetอีกมากมายตั้งแต่การพิมพ์สตริงมายากลท้ายบรรทัดคำสั่งเคอร์เนลเป็นในรูปแบบของ

สำหรับstartxมันยังสามารถเริ่มต้นเซสชันเพิ่มเติมโดยให้หมายเลขแสดงผล X ที่ไม่ได้ใช้ (หมายเลขเริ่มต้นจาก 0): startx -- :1จะเริ่มเซิร์ฟเวอร์ X บนจอแสดงผล: 1 ค้นหาตำแหน่งที่ VT ที่ไม่ได้ใช้ครั้งแรก (มัก VT8 เนื่องจาก 6 แรกมักเป็น Linux คอนโซลและ 7 ถูกใช้โดยเซสชัน X ที่ทำงานครั้งแรก) โปรดทราบว่าเซิร์ฟเวอร์เอ็กซ์มักจะต้องการสิทธิ์ root ดังนั้นคุณอาจจะต้องทำเช่นนี้root(ซึ่งไม่ได้เป็นความคิดที่ดี) หรือไบนารีจะต้องมีราก setuid (ความจำเป็นในการนี้จะถูกลบออกตามปกติโดยใช้การจัดการการแสดงผล)


+1 คำตอบที่ดี แม้ว่าจะไม่ค่อยเป็นมิตรสำหรับมือใหม่ก็ตาม
โจเซฟอาร์

ใช่การเปลี่ยนแปลงinittabมีเหตุผลมากกว่านี้เนื่องจากเรามักต้องการให้ระบบอยู่ในสภาพเดียวกันตลอดเวลา
เตอร์

2

สังเกตด้านบนถ้าคุณได้เด้งแล้วเข้าสู่โหมดกราฟิกและต้องการที่จะเปลี่ยนไปใช้โหมดข้อความคุณก็สามารถกดCtrl+ Alt+ F1และกลับมาอีกครั้งไปยังโหมดกราฟิกโดยCtrl+ +AltF7

Linux มีเทอร์มินัลข้อความ 6 รายการและเทอร์มินัลกราฟิก 1 รายการ คุณสามารถสลับระหว่างขั้วเหล่านี้โดยการกดCtrl+ +Alt Fnแทนที่nด้วย 1-7 F7จะนำคุณไปสู่โหมดกราฟิกเฉพาะเมื่อบูตเข้าสู่การรันระดับ 5 หรือคุณได้เริ่ม X โดยใช้startxคำสั่ง F7มิฉะนั้นมันก็จะแสดงหน้าจอว่างเปล่าบน


แสดงงานนี้ใน RHEL 7?
javapowered

1

แม้จะเป็นเรื่องที่ค่อนข้างเก่า แต่ก็มีประโยชน์ ในระบบโดยใช้systemd, / etc / inittabไม่ได้อยู่ในการใช้งาน วิธีนี้ค่อนข้างง่าย:

โหมดเทอร์มินัล

ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

โหมดกราฟิค

ln -sf /lib/systemd/system/graphical.target  /etc/systemd/system/default.target

0

หลังจากแทนที่ runlevel เริ่มต้นเป็นid:3:initdefault:ในการ/etc/inittabใช้โปรแกรมแก้ไขข้อความที่คุณต้องการ (ดังที่ได้กล่าวไว้ก่อนหน้านี้) มันเป็นสิ่งสำคัญมากที่จะตรวจสอบว่ามีการติดตั้ง plymouth (หน้าจอเริ่มต้น) ในระบบของคุณหรือไม่ ในกรณีนี้จะต้องลบการติดตั้งหรือเพียงลบคำหลักสแปลชจากคุณ /boot/grub/grub.cfg โดยใช้โปรแกรมแก้ไขข้อความที่คุณต้องการ (vim, pico หรืออื่น ๆ ) วิธีลบพลีมั ธ :

sudo apt-get remove --purge plymouth

แก้ไข grub.cfg ของคุณ:

sudo vim /boot/grub/grub.cfg

ในที่สุดอัพเกรดการกำหนดค่าด้วง:

sudo update-initramfs -u

ในการบูตครั้งถัดไปคุณจะมีหน้าจอเข้าสู่ระบบแบบข้อความ แค่นั้นแหละ.

เพลิดเพลินไปกับกล่อง Linux!


-1

การติดตั้ง oracle-linux 7 โดยค่าเริ่มต้นจะมีตัวเลือกการติดตั้งน้อยที่สุด คุณต้องเปลี่ยนเป็นการติดตั้งด้วยโหมด GUI ในเวลาที่ทำการติดตั้งวิธีนี้แก้ไขปัญหาของฉันเมื่อไม่สามารถใช้โหมดผู้ใช้แบบกราฟิก


ดูเหมือนว่าคุณมีคำขอของ OP ย้อนกลับ OP ดูเหมือนจะดิ้นรนเพื่อไปยัง CLI ไม่ใช่ไปยัง GUI
HalosGhost

-1

ฉันได้ลอง systemctl, update-rc.d และแก้ไขการตั้งค่า GRUB แล้ว แต่ไม่มีอะไรทำงาน จากนั้นฉันแสดงความคิดเห็นผู้จัดการเริ่มต้นใน / etc / X11 / default-display-manager รีบูตและในที่สุด: terminal !!!! มันง่ายอย่างนั้น!


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.