2016年アップデート

2016年アップデート

それが現れるシステム熱い新製品です。内部にブロックのシステム、突然現れるそれは数年前でした。それぞれの利点/欠点は何ですか?また、各システムは他の初期化システムとどのように比較されますか?

ベストアンサー1

2016年アップデート

ここにある回答のほとんどは5年前​​のものなので更新する時間です。

Ubuntuはデフォルトでupstartを使用しましたが、昨年はsystemdを好み、それを放棄しました。以下を参照してください。

これで良い記事があります。スタートアップユーザー向けにシステム化Ubuntu wiki - upstartとsystemdの非常に詳細な比較とupstartからsystemdへの移行ガイド。

(知っているUbuntu Wikiによると基本的upstart-sysvsudo update-initramfs -u。 )

以下のコマンドとスクリプトセクションのほとんどの情報は、記事で使用されているいくつかの例で修正されました(Stack Exchangeユーザーの貢献と同様にライセンスが簡単に付与されています)。クリエイティブ・コモンズ著作者表示 - 同一条件変更許可3.0ライセンス)。

以下は、一般的に使用されるコマンドと簡単なスクリプトをすばやく比較したものです。詳細な手順については、以下のセクションを参照してください。この回答は、質問で尋ねるように、Upstartベースのシステムの以前の動作をsystemdベースのシステムの新しい動作と比較しますが、「Upstart」とマークされたコマンドは必ずしもUpstartに固有のものではありません。通常、次のコマンドです。システム化されていないLinuxおよびUnixシステム。

注文する

suを実行してください:

  • 突然現れる: su
  • システム: machinectl shell

(下記の「suコマンドの置換」セクションを参照)

実行画面:

  • 突然現れる: screen
  • システム: systemd-run --user --scope screen

(下記の「予期しないバックグラウンドプロセスの終了」セクションを参照)

tmuxを実行します。

  • 突然現れる: tmux
  • システム: systemd-run --user --scope tmux

(下記の「予期しないバックグラウンドプロセスの終了」セクションを参照)

foo ジョブの開始:

  • 突然現れる: start foo
  • システム: systemctl start foo

ジョブを停止 foo:

  • 突然現れる: stop foo
  • システム: systemctl stop foo

fooジョブの再起動:

  • 突然現れる: restart foo
  • システム: systemctl restart foo

役職一覧:

  • 突然現れる: initctl list
  • システム: systemctl status

ジョブ foo の構成を確認してください。

  • 突然現れる: init-checkconf /etc/init/foo.conf
  • システム: systemd-analyze verify /lib/systemd/system/foo.service

ジョブの環境変数をリストします。

  • 突然現れる: initctl list-env
  • システム: systemctl show-environment

ジョブの環境変数を設定します。

  • 突然現れる: initctl set-env foo=bar
  • システム: systemctl set-environment foo=bar

ジョブの環境変数を削除します。

  • 突然現れる: initctl unset-env foo
  • システム: systemctl unset-environment foo

丸太

upstartでは、ログは/var/log/upstartディレクトリにあるプレーンテキストファイルであるため、通常どおりに処理できます。

cat /var/log/upstart/foo.log
tail -f /var/log/upstart/foo.log

systemdでは、ログはテキストファイルではなく内部バイナリ形式で保存されるため、journalctlログにアクセスするには次のコマンドを使用する必要があります。

sudo journalctl -u foo
sudo journalctl -u foo -f

スクリプト

はいスタートアップスクリプトに書く/etc/init/foo.conf

description "Job that runs the foo daemon"
start on runlevel [2345]
stop on runlevel [016]
env statedir=/var/cache/foo
pre-start exec mkdir -p $statedir
exec /usr/bin/foo-daemon --arg1 "hello world" --statedir $statedir

はいシステムスクリプトに書く/lib/systemd/system/foo.service

[Unit]
Description=Job that runs the foo daemon
Documentation=man:foo(1)
[Service]
Type=forking
Environment=statedir=/var/cache/foo
ExecStartPre=/usr/bin/mkdir -p ${statedir}
ExecStart=/usr/bin/foo-daemon --arg1 "hello world" --statedir ${statedir}
[Install]
WantedBy=multi-user.target

su コマンドの置換

プール要求#1022で、コマンド置換がsusystemdにマージされました。

Lennart Petlingによると、「suは実際に壊れた概念です」

彼は説明した「以前と同様にsuとsudoを使用できますが、完全に機能すると期待しないでください。

今、su同様の動作を達成するための正式な方法は次のとおりです。

machinectl shell

もう進む レナート・ポトリンが説明します。 問題#825の議論で:

「まあ、これは長い間議論されていますが、問題はsuが何をすべきかは明確ではありません。 、完全なログインではないので、誤解しないでください。」 - Lennart Petling。

また見なさい:

バックグラウンドプロセスが予期せず終了しました。

コマンドは次のとおりです。

これ以上期待どおりに動作しません。。たとえば、nohupセッションからログアウトした後でもプロセスが継続的に実行されることを保証するPOSIXコマンドです。それもう有効ではありませんシステムに。特別な方法や他の方法で同様のプログラムを呼び出すscreenことも必要です。tmux一緒に実行するプロセスは終了します(これらのプロセスを終了しないことが通常、screenまたはtmuxを実行する主な理由です。)

これはバグではありませんが、慎重に決定したものであるため、将来修正される可能性は低くなります。レナルト・ポトリンはこう述べています。説明するこの問題について:

私が見ると、UNIXは基本的にログアウト後も任意のユーザーコードを制限なく維持できるという点で実際に奇妙なようです。多くのOSの人々はこれが可能でなければならないと長い間話してきましたが、確かにデフォルトではありません。しかし、これまで誰もあえてスイッチをオンにして、デフォルトからオプションに変更できませんでした。ログアウト後にユーザーセッションをクリーンアップしないことは、見苦しくハッキング的であるだけでなく、セキュリティ上の問題でもあります。 systemd 230は、最終的にスイッチをオンにし、ユーザーがログアウトしたときにすべてを適切にクリーンアップするようにデフォルト設定されました。

詳細については、次を参照してください。

高水準のスタートコンセプト

ある意味、systemdは逆さまに動作します。 upstart ではジョブができるだけ早く開始され、systemd では必要に応じてジョブが開始されます。結局のところ、両方のシステムはほぼ同じ順序で同じ作業を始めることができますが、言えば反対方向に考えているのです。

以下の方法スタートアップユーザー向けにシステム化説明する:

突然現れるプロセス(作業)開始モデルは「貪欲なイベントベース」です。つまり、開始イベントが発生したときに使用可能なすべての操作ができるだけ早く開始されます。起動プロセス中に、upstart は開始または rcS などのいくつかの初期イベントを、初期サービスが開始され、電子が実行されている間に後期サービスが開始される「ツリールート」に合成します。新しいタスクを有効にするには、その設定ファイルを/ etc / init /にインストールするだけです。

システムプロセス(ユニット)起動モデルは「遅延依存性ベース」です。つまり、他の起動ユニットがそれに依存する場合にのみ、ユニットが起動される。起動中に、systemdは「ルート単位」(grubでオーバーライドできるdefault.target)を起動し、拡張を渡してその依存関係を開始します。新しいデバイスを有効にするには、起動シーケンスデバイス(通常はmulti-user.target)の依存関係として自分自身を追加する必要があります。

流通に活用

ウィキペディアの最近のデータによると、

upstart ディストリビューションはデフォルトで使用されます。

デフォルトでは、systemdディストリビューションが使用されます。

(望むよりウィキペディア最新情報を入手してください)

Upstartやsystemdを使用しないディストリビューション:

議論

過去にsystemd を避けるために Debian フォークが提案されました。。これドイツ語 GNU+Linux作成済み - systemdのないDebianブランチ(ありがとう。マーフィー1コメントで指摘しました。)

この紛争の詳細については、以下を参照してください。

多くの人がすでに知っていますが、Ian Jacksonが推進したInit GR Debian投票は、システムの雪崩からDebianの遺産とユーザーを保護するのにほとんど役に立ちませんでした。

このような状況は、実際に開発の自由を脅かし、Debian とその上流と下流のパートナーに深刻な結果をもたらす可能性のあるシステムの依存関係をロックする可能性があります。

CTTEは依存関係をうまく交換し、sysvinitを介してsystemdを微妙にインストールして時間をかけましたが、このプロセスでさえ疲れていてドラマでいっぱいでした。ついに一週間前、イアン・ジャクソンが辞任しました。 [...]

私はすぐに技術委員会で辞任します。

プロジェクトメンバーのうち30~40%の見解がTCで引き続き代表されることが重要ですが、現時点でそうするには私があまりにも議論の余地がある数値です。私は一歩後退し、プロジェクトガバナンスへの対話をあまり個人的にするように努力しなければなりません。 [...]

Devuan は Debian の基本初期化システムとして使用されることについての議論から生まれました。これsystemdに対するDebianの公式立場主張がいっぱい他の人は真実ではないと暴露した。。興味のある読者はこのホットな話題について話し続けることができます。体系的な議論。しかし、落ち着きを保ち、丁寧な声を維持してください。 Devuanでは、過去を振り返るよりも間違ったプログラミングに興味があります。 [...]

systemd議論に関するいくつかのウェブサイトと記事が作成されました。

持つたくさんHacker Newsに関する興味深い議論:

他の分布でも同様の傾向が見られます。

哲学

突然現れるDOTADIWのUnix哲学である「1つのことをうまくやってください」に従ってください。これは伝統的なinitデーモンを置き換えます。サービスの開始および停止を除くその他の操作は実行されません。他のタスクは他の特別なサブシステムに委任されます。

システムそれ以上を行います。サービスの開始と停止に加えて、パスワード、ログイン、端末、電源管理、工場初期化、ログ処理、ファイルシステムのマウントポイント、ネットワークなどを管理します。情報ファイルの一部の機能。

拡張計画

~によるとsystemdの成果と今後の発展の見通し2014年のGNOME.asiaでのLennart Poetteringの講演によると、systemdの主な目標、その領域、およびまだ進行中の領域は次のとおりです。

システム目標:

私たちの目標

  • Linuxを多数の部分から競争力のある汎用オペレーティングシステムに置き換えます。

  • インターネットを構築する次世代オペレーティングシステムの統一ディストリビューション間の無意味な違い

  • コアオペレーティングシステムにイノベーションを再インポートします。

  • デスクトップ、サーバー、コンテナー、組み込み、モバイル、クラウド、クラスター、... .この地域は思ったより近いです。

  • 管理者の複雑さを減らし、監督なしで安定性を高めます。

  • すべては考える価値がある

  • 自動検索とプラグアンドプレイが重要です。

  • 私たちは壊れたものをテープで貼るのではなく修正します。

すでに扱っている領域:

私たちが扱った内容:

システムの初期化、ロギング、ログイン管理、デバイス管理、一時ファイルと揮発性ファイルの管理、バイナリ形式の登録、バックライトの保存/復元、rfkillの保存/復元、ブートチャート、先読み、暗号化されたストレージ設定、EFI / GPTパーティション検索、仮想マシン/コンテナ登録、最小コンテナ管理、ホスト名管理、ロケール管理、時間管理、ランダムシード管理、sysctl変数管理、コンソール管理、... 。

進行中の作業:

私たちがすること:

  • ネットワーク管理
  • システムネットワーク
  • ローカルDNSキャッシュ、mDNSレスポンダ、LLMNRレスポンダ、DNSSEC検証
  • カーネルのIPC
  • kdバス、sdバス
  • NTP時間と同期
  • システム時刻同期
  • コンテナとのさらなる統合
  • サービスサンドボックス
  • アプリケーションサンドボックス
  • オペレーティングシステムイメージフォーマット
  • コンテナイメージ形式
  • 画像フォーマットの適用
  • 自動検索機能付きGPT
  • 無状態システム、インスタンス化可能システム、工場初期化
  • / usrはオペレーティングシステムです。
  • / etcは(オプションの)設定です。
  • / varは(オプション)状態です。
  • 原子ノードの初期化と更新
  • クラウドとの統合
  • ノード間サービスの管理
  • 検証可能なオペレーティングシステムイメージ
  • ファームウェアまで
  • ブートローダー

この回答の範囲

〜のようにマーフィー1「長年にわたり、systemdの作業範囲が単純なシステムの起動を超えてはるかに拡張されていることに注意する必要があります」とコメントは述べています。

私はここに関連するほとんどの情報を含めようとしました。ここでは、質問で要求されたようにinitシステムとして使用したときのUpstartとsystemdの共通機能を比較しました。これらの機能はStartupと比較することはできませんが、その存在が非常に重要であるため、initシステムの範囲外のsystemdの機能だけに言及しました。 。これら2つのプロジェクトの違いを理解することが重要です。詳細については関連文書を確認してください。

追加情報

詳しくは以下をご覧ください。

追加機能

これ鉛(II)酸化物チームはSystemd および SysV Init Linux チートシート

おすすめ記事