題 如何在沒有圖形服務器的情況下啟動Linux系統


我想知道在CLI環境中啟動Linux系統應該怎麼做,而不需要啟動X圖形服務器。

理想情況下,我對僅有臨時解決方案感興趣

  • 可以在Grub終端上運行的命令或一系列命令(按下時得到的命令或命令) C);
  • 或者在KDM菜單上添加一個選擇桌面環境的條目;

而不是對系統進行永久性更改(標準行為應該是使用默認圖形界面啟動)。


根據要求,我正在添加相關內容 /boot/grub2/grub.cgf

menuentry 'openSUSE 13.2' --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-179689d2-d2f3-4ec8-9cc3-01ec946c6b11' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos 
    insmod ext2
    set root='hd0,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 --hint='hd0,msdos5'  179689d2-d2f3-4ec8-9cc3-01ec946c6b11
    else
      search --no-floppy --fs-uuid --set=root 179689d2-d2f3-4ec8-9cc3-01ec946c6b11
    fi
    echo    'Loading Linux 3.16.7-24-desktop ...'
    linux   /boot/vmlinuz-3.16.7-24-desktop root=UUID=179689d2-d2f3-4ec8-9cc3-01ec946c6b11   quiet quiet liveinstall lang=it_IT resume=/dev/disk/by-id/ata-WDC_WD5000BEVT-00A0RT0_WD-WXL1AC0U9725-part7 splash=silent quiet showopts vga=803
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd-3.16.7-24-desktop
}

4
2017-09-18 12:37


起源


好吧,如果你替換所有東西,它是否有效 quiet 直到行結束 text? - terdon
不,圖形界面像往常一樣啟動。我還嘗試通過簡化來複製你的第一個建議 linux 到 linux /boot/vmlinuz-3.16.7-24-desktop root=UUID=179689d2-d2f3-4ec8-9cc3-01ec946c6b11 ro quiet text,任何成功。 - Sekhemty
所以,你要點擊E來編輯grub啟動畫面上的菜單項,然後點擊F10進行啟動,它仍然會進入GUI? - terdon
對,就是這樣。我甚至在虛擬機上(仍然使用openSUSE)嘗試過此操作但沒有任何成功。我會盡快嘗試另一個發行版。 - Sekhemty
請閱讀我的編輯,我已經弄清楚了至少我的Debian和Arch Linux系統。乾杯。 - MariusMatutiae


答案:


您要求的內容對我來說並不完全清楚,因此我會給您幾個可能的答案,希望您能找到您感興趣的答案。

  1. 您可以在下次啟動時禁用X服務器 /etc/default/grub找到了這條線

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    

    並將其修改為

    GRUB_CMDLINE_LINUX_DEFAULT="text"
    

    現在你需要更新grub,

    update-grub
    

    你完成了

你可以做到 反之亦然 重新啟用X服務器。

  1. 您可以禁用Window Manager:假設您正在使用 systemd,現在大多數Linux發行版都會這樣做,

    systemctl disable kdm
    

    要么 gdmlightdm,無論你用什麼。

  2. 如果您認為您可能希望改變主意,偶爾會  啟動已啟動,添加到文件中 /etc/grub.d/40_custom 以下手冊:

     menuentry 'Ubuntu (Text mode)' --class ubuntu {
     recordfail
     insmod gzio
     insmod part_msdos
     insmod ext2
     set root='hd0,msdos1'
     linux   /vmlinuz root=/dev/sda1 ro   text
     initrd  /initrd.img
     }
    

    (確保你適應 /dev/sda1 和 msdos1 至 您的 組態)。這只會在您的GRUB2菜單中生成一個條目,您可能希望偶爾使用它。

  3. 如果你想要的只是一個文本登錄,即使圖形會話已經開始,請記住該組合 按Ctrl+Alt鍵+F1 (要么 F2 - F6)會給你一個文本登錄。此外,您可以在此文本登錄中禁用Window Manager,

    sudo systemctl stop gdm
    

    (ORD kdm,lightdm,sddm,或者你使用的任何東西),你有一個純粹的文本登錄,沒有圖形會話運行。

  4. 最後,當您遇到圖形配置中的某些意外錯誤(更新出錯?)時,您可能希望採用純文本啟動方式,這會讓您意識不到(,沒有準備好解決方案 3)。如果您在grub中遇到命令提示符,則可以使用 特登的建議 適當修改,因為,就目前而言,確實如此  在我的Debian和Arch Linux系統上工作,但以下是:而不是追加 text 到了 linux 按照Terdon建議的Grub顯示行,鍵入 3  (三)代替;例如。,

    linux   /boot/vmlinuz-4.0.0-1-amd64 root=UUID=5e285652 ro  quiet 3
    

    這將成功啟動您進入運行級別3, 這是CLI網絡,但沒有顯示管理器。


11
2017-09-18 12:58



當你的nvidia驅動程序結束時總是有用...使用3而不是文本的解決方案確實有效。在我的情況下,我還要刪除 resume=... 部分 - Felix


那麼,一次性啟動到文本模式的最簡單方法是在GRUB2屏幕上選擇要引導的內核條目,命中 Ë,向下滾動到 linux 行並添加 text 到最後。例如:

linux   /boot/vmlinuz-4.0.0-1-amd64 root=UUID=5e285652 ro  quiet text

然後,打 F10 要么 按Ctrl+X 開機


3
2017-09-18 12:52



這就是我記憶中的情況,但它對我的系統中的任何一個都沒有用/ out systemd。 - MariusMatutiae
不幸的是,它對我也不起作用;如果重要的話,我正在使用openSUSE 13.2和 linux 線條較長,有一些變量;無論如何,添加 text 顯然在我的系統上什麼也沒做。 - Sekhemty
@Sekhemty請加相關 linux 你的問題。你可以看到它 /boot/grub/grub.cfg。我剛剛在Ubuntu VM中嘗試過它,它按預期工作。 - terdon
這裡是;請注意該文件是在 /boot/grub2/ - Sekhemty


請看一下這篇文章: 如何使用Grub2手動啟動Linux 

通過鍊式加載間接引導

對於Grub1,如果要啟動操作系統,可以是安裝在第一個磁盤的第二個分區中的任何Dos,MS Windows,BSD,Solaris或Linux,Grub Legacy命令將是 碼:

root (hd0,1)
chainloader +1
boot

對於Grub2,命令略有不同,更改以紅色突出顯示 碼:

set root=(hd0,2)
chainloader +1
boot

通過命名內核和initrd文件直接引導

...

說我的Linux有沒有 vmlinuz-2.6.18-6-686 和 initrd.img-2.6.18-6-686 在 /boot 子目錄可以使用Grub1命令啟動Linux 碼:

root (hd0,1)
kernel  /boot/vmlinuz-2.6.18-6-686 root=/dev/sda11 ro 
initrd   /boot/initrd.img-2.6.18-6-686
boot

對於Grub2,相應的命令將是 碼:

set root=(hd0,2)
linux  /boot/vmlinuz-2.6.18-6-686 root=/dev/sda11  
initrd   /boot/initrd.img-2.6.18-6-686
boot

1
2017-09-18 12:46





從/ etc / inittab複製粘貼:

# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#

因此,您可以設置:

systemctl set-default multi-user.target

僅運行CLI


1
2018-05-10 12:48