systemdにはまだランレベルの概念がありますか?たとえば、を使用することは意味がありませんかtelinit <number>
?
答え1
SystemD(aemon)では、ランレベルが「ターゲット」として公開されます。概念は依然として存在しますが、目的の結果を生成するワークフローは要件によって異なります。
添付ファイルではこの問題を明確にする必要があります。
現在のランレベルを変更するには?
$ systemctl isolate runlevelX.target
次の起動にデフォルトのランレベルを変更するにはどうすればよいですか?
# Create a symlink
$ ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
ln -sf TARGET DESTINATION
-s
シンボリックリンクの生成-f
既存のターゲットファイルの削除
または(@centimaneが提案したように)単に「blessed」systemd
コマンドを使用してください。
systemctl set-default [target name].target
現在のランレベルを識別する方法は?
$ systemctl list-units --type=target
答え2
いいえ。システムを備えた人々が2回、つまりマニュアルに1回telinit
、マニュアルに1回書いたように、ランレベルはrunlevel
「昔ながら」です。ランレベルは忘れてもいいです。
いくつかの互換性シムを除いて、これらは実際にsystemdにはまったく存在しません。
- 一部のターゲット名へのシンボリックリンクがありますが、これらのターゲットは実際にはsystemdでは使用されません。
- 代わりに、ブートプロセスはa(および
default.target
aとaの一方または両方)、a、またはanを使用します。終了プロセスには、a、a、またはaが含まれます。graphical.target
multi-user.target
rescue.target
emergency.target
shutdown.target
reboot.target
halt.target
poweroff.target
関連する実行レベルのターゲットはありません。起動またはシャットダウン中。 - コマンドは互換性シンボリックリンクを使用してコマンドライン引数をマッピングすると考えることができますが、
telinit
そうしません。プログラムのソースコードには固定配線されたテーブルがあり、コマンドの引数であるtelinit
数字2
、3
および4
は、およびにマッピングされるように固定配線されています。5
multi-user.target
graphical.target
systemd-update-utmp
内部に固定配線されたテーブルもあります。
- 代わりに、ブートプロセスはa(および
- 実行レベルのコンテンツには「初期化テーブル」はありません。 systemdはvan Smoorenburgとのみ互換性があり、
rc
van Smoorenburgとは互換性がありませんinit
。 - systemd自体は「現在実行レベル」の値を保持しません。代わりに、ほとんど完全に文書化されていない
systemd-update-utmp
コマンドは、およびのアクティブ状態によってrescue.target
内部的にmulti-user.target
実行されますgraphical.target
。 systemd-sysv-generator
、ディレクトリを生成されたサービスユニットと/etc/rc[234].d
一意の関係にマージするsystemd用の以前のバージョンと互換性のあるサービスユニットジェネレータですWanted-By
。multi-user.target
生成されたサービスユニットには、ランレベルへの実際の参照はありません。 (数年前にもこのようなことがありましたが、他の場所で参照されていないため、システムの人々はこれが間違っていることを発見しました。)
質問者が「Arch Linux」で行ったように、systemdが構築されたシステムのユーザーであればArchのインストール中に「init 0」が原因で「超過パラメータ」が表示されるのはなぜですか?「、人々は互換性の深さを得ることができず、そのようなコマンドは、コマンドが誤って呼び出されたと不平を言うinit 0
「基本」システム動作につながります。
追加読書
- Lennart Potlinget al。
runlevel
。システムのマニュアルページ。 freedesktop.org. - Lennart Potlinget al。
telinit
。システムのマニュアルページ。 freedesktop.org. - Lennart Potlinget al。
bootup
。システムのマニュアルページ。 freedesktop.org. - レナート・ペトリング(2015-02-08)。Everywhere:sysvランレベル - ターゲットマッピングの構成を削除する。システムd。 github。
- https://unix.stackexchange.com/a/196014/5132
- https://unix.stackexchange.com/a/196197/5132
- https://unix.stackexchange.com/a/233581/5132
- https://unix.stackexchange.com/a/211927/5132
- https://unix.stackexchange.com/a/392612/5132
- ジョナサンデボインポラード(2015)。
/etc/inittab
それは過去の仕事です。。一般的な答え。
答え3
とても感謝しています。したがって、私が正しく理解した場合は、次のようになります。
たとえば、
ls -ll /usr/lib/systemd/system/runlevel*.target
出力:
/usr/lib/systemd/system/runlevel0.target -> poweroff.target
/usr/lib/systemd/system/runlevel1.target -> rescue.target
/usr/lib/systemd/system/runlevel2.target -> multi-user.target
/usr/lib/systemd/system/runlevel3.target -> multi-user.target
/usr/lib/systemd/system/runlevel4.target -> multi-user.target
/usr/lib/systemd/system/runlevel5.target -> graphical.target
/usr/lib/systemd/system/runlevel6.target -> reboot.target
ご覧のとおり、ランレベルの概念は存在しますが、runlevel.targetファイルは実際には「実際の」ファイルではなく、新しく現代的でより良い名前のファイルスキームであるため、使用されなくなりました。ソフトリンクの場合、プログラムsystemdはこれを「ターゲット」と呼ぶのが好きです。
したがって、次のようなことをしたい場合は、次のようになりますtelinit 5
。 (私の考えにはお勧めです)systemctl isolate runlevel5.target
。systemctl isolate graphical.target
可能なすべての目標について学びたい場合:
ls /usr/lib/systemd/system/*.target
答え4
導入されたシステムターゲット相手としてランレベルsysV初期化システムで。 sytemd 開発者はほとんどの sysV スクリプトとほぼ互換性がありました。でも同様です
telinit <runlevel>
。これはsystemdに変換されます。
たとえば、telinit 0
本機の電源を切ってください。システムは停電対象同じこと実行レベル0。だからtelinit 0
システム翻訳で活性化停電対象。
しかし、sytemdとsysV initシステムの間にはいくつかの互換性の問題があります。 ->https://www.freedesktop.org/wiki/Software/systemd/Incompatibility。