ฉันใช้ Red Hat Linux 32 บิตใน VM ของฉัน ฉันต้องการบูตมันเป็นโหมดบรรทัดคำสั่งไม่ใช่โหมด GUI ฉันรู้ว่าจากที่นั่นฉันสามารถเปลี่ยนเป็นโหมด GUI โดยใช้startxคำสั่ง ฉันจะสลับกลับไปเป็นโหมดบรรทัดคำสั่งได้อย่างไร
ฉันใช้ Red Hat Linux 32 บิตใน VM ของฉัน ฉันต้องการบูตมันเป็นโหมดบรรทัดคำสั่งไม่ใช่โหมด GUI ฉันรู้ว่าจากที่นั่นฉันสามารถเปลี่ยนเป็นโหมด GUI โดยใช้startxคำสั่ง ฉันจะสลับกลับไปเป็นโหมดบรรทัดคำสั่งได้อย่างไร
คำตอบ:
อัปเดต: คำตอบด้านล่างล้าสมัยแล้ว
สำหรับ 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
sedคำสั่ง
sedกับไฟล์การกำหนดค่าเว้นแต่คุณจะรู้ว่าสิ่งที่คุณกำลังทำ บรรทัดที่มีปัญหาอาจเป็นความคิดเห็นก็ได้ แต่จะยังคงมีการเปลี่ยนแปลง ดังนั้นการแสดงออกปกติควรมีความแม่นยำมากขึ้นอย่างน้อยต้องมีสตริงid:...ที่จุดเริ่มต้นของบรรทัด เนื่องจากหน้าคนไม่ได้พูดอะไรเกี่ยวกับวิธีการรักษาพื้นที่สีขาวคุณอาจต้องการใช้s/^ *id:5:initdefault:(ซึ่งไม่รวมถึงTabตัวละครโดยวิธี)
อัพเดตสำหรับ 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 = โหมดบรรทัดคำสั่ง
ก่อนอื่นให้เปลี่ยนผู้ใช้เป็นรูท
su -
Password:
ป้อนรหัสผ่านรูท
ใช้โปรแกรมแก้ไขรายการโปรดของคุณเพื่อแก้ไขบรรทัดนี้ใน/etc/inittab:
id:5:initdefault:
เปลี่ยน 5 เป็น 3 เมื่อคุณบูตคอมพิวเตอร์จะพาคุณไปที่บรรทัดคำสั่งแทนที่จะเป็น GUI
นอกเหนือจากการเปลี่ยนแปลง/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 (ความจำเป็นในการนี้จะถูกลบออกตามปกติโดยใช้การจัดการการแสดงผล)
inittabมีเหตุผลมากกว่านี้เนื่องจากเรามักต้องการให้ระบบอยู่ในสภาพเดียวกันตลอดเวลา
สังเกตด้านบนถ้าคุณได้เด้งแล้วเข้าสู่โหมดกราฟิกและต้องการที่จะเปลี่ยนไปใช้โหมดข้อความคุณก็สามารถกดCtrl+ Alt+ F1และกลับมาอีกครั้งไปยังโหมดกราฟิกโดยCtrl+ +AltF7
Linux มีเทอร์มินัลข้อความ 6 รายการและเทอร์มินัลกราฟิก 1 รายการ คุณสามารถสลับระหว่างขั้วเหล่านี้โดยการกดCtrl+ +Alt Fnแทนที่nด้วย 1-7 F7จะนำคุณไปสู่โหมดกราฟิกเฉพาะเมื่อบูตเข้าสู่การรันระดับ 5 หรือคุณได้เริ่ม X โดยใช้startxคำสั่ง F7มิฉะนั้นมันก็จะแสดงหน้าจอว่างเปล่าบน
แม้จะเป็นเรื่องที่ค่อนข้างเก่า แต่ก็มีประโยชน์ ในระบบโดยใช้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
หลังจากแทนที่ 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!
การติดตั้ง oracle-linux 7 โดยค่าเริ่มต้นจะมีตัวเลือกการติดตั้งน้อยที่สุด คุณต้องเปลี่ยนเป็นการติดตั้งด้วยโหมด GUI ในเวลาที่ทำการติดตั้งวิธีนี้แก้ไขปัญหาของฉันเมื่อไม่สามารถใช้โหมดผู้ใช้แบบกราฟิก
ฉันได้ลอง systemctl, update-rc.d และแก้ไขการตั้งค่า GRUB แล้ว แต่ไม่มีอะไรทำงาน จากนั้นฉันแสดงความคิดเห็นผู้จัดการเริ่มต้นใน / etc / X11 / default-display-manager รีบูตและในที่สุด: terminal !!!! มันง่ายอย่างนั้น!
ใช้
systemctl set-default multi-user.target
และรีบูต VM VM จะเข้าสู่โหมด CLI
startxฉันจะเปลี่ยนกลับไปเป็นบรรทัดคำสั่งได้อย่างไร