あまりにトラップが多いので、備忘録として残しておく。
先に言っておくが、私はこの作業を完遂できなかった。
しかし、学ぶことは多くあったので、誰かの役に立てるかもしれない。
なお、私はGRUBをいじるのにGrub Customizerを使用している。
そのため、一部を除いて基本的にこのソフトを使った解説となる。
実現したいこと
まず前提として、環境とやりたいことをまとめる。
まずは環境。今回は実機への導入をしている。
機体: Dell Inspiron 11 3147
CPU: Intel® Celeron(R) CPU N2830
メモリ: 4GB
ストレージ:120GB SSD(換装済み)
OS: Ubuntu 20.04.3 LTS (64bit)(Japan Teamの日本語Remix版)
そもそも今回GRUBでCUIを起動したいのは、CUIだけですむ作業をGUIで行いたくないからだ。
私の環境は見ていただければわかるとおり、非常に貧弱だ。ストレージがHDDだった頃とかはマジの地獄だった。(なおWindowsは動くはずもないので、早々に見切りをつけた。)
Ubuntuにしたことでいくぶんか良くなったが、それでもGUIを使っている間はCPU使用率が20%前後に、YouTubeなんて開こうものなら天井に張り付くざまだ。
その状態で、例えばradikoやYouTubeの生配信の録画をしたらどうなるだろうか。
結果はお察しである。
そのため、リソースの1/5であったとしても開放してやりたいのだ。
なお、そんなもん[Ctrl]+[Alt]+[Fn]でttyに切り替えてやればいいというツッコミは無しで。終わってから気づいた()
そして、今回やりたいことは以下の通りだ。
- 起動時にエントリの選択画面を出す
- 通常のエントリに加え、CUIで起動するエントリも作る。
それでは、実際の作業の説明に移る。
起動時にGRUBの選択画面を出す
まずは「デフォルトのエントリーをn秒後に起動する」の設定を3に変更。
しかしここでいきなり引っかかる。再起動してもエントリの選択画面が出てこないのである。
原因をいろいろと探った結果、GRUB_TIMEOUT_STYLE
という設定が悪さをしていることが分かった。
先の画面の「高度な設定」の中にある、GRUB_TIMEOUT_STYLE=hidden
のチェックを外せば、無事エントリが表示されるようになる。
CUIで起動するエントリを作る
標準であるUbuntuのエントリを「編集」からコピーして、新規作成から種類「その他」に設定してペースト。linux
行にsystemd.unit=multi-user.target
を追加してやればとりあえずCUIで起動はする。
しかしこれだと起動したときにシェルに入れない。
なので先の行の末尾にある$vt_handoff
を削除。
この$vt_handoff
は、起動後に入るシェルの番号を指定する変数らしい。
本来vt.handoff=1
が代入されるはずなのだが、なぜかうまくいかないらしい。(おそらくスクリプトが他のエントリと別れているせい)
かといって直で書いてやるとなぜかシェルの文字がすべてボールドになる。
色々試したが、たぶん何も書かないのが正解だろう。
なお、この方法ではgrub-mkconfigを叩いた時に内容が更新されないので、カーネルを更新したときに手動でエントリを編集しなくてはならない。
よっぽど問題にはならないが、カーネルが更新されて忘れたころにapt autoremove
をかけて起動しなくなるオチが待っている。
回避するには/etc/grub.d/下のファイルやなんやを編集する必要があるようだが、よくわからなかったので触れなかった。
諦めた
vt.handoffをいじる段階で、「あれ、これって普通にGUIで起動してtty3に切り替えればよくね?」ということに気が付いて、さっさとやめた。ここまで来ないと気が付けなかったせいで無駄足を踏んだが、まあ勉強にはなったので良しとする。
なお、もし何らかの原因でX Windowが死んだ場合などは、起動時にEscapeキーを押すとGRUBのメニューに入れる。
「Advanced options for Ubuntu」の中にリカバリーモードで起動できるメニューがデフォルトで生成されているため、それを使うのがいいだろう。
コメント