systemd入門」でした。その特集の中の後ろのほうにちょこっとだけ,主に14.04と14.10におけるsystemdの状況と今後の予定について書かせていただいています。そこで今回のRecipeでは,Upstart初心者向けのsystemdとの違いについて紹介します。2015年2月号を読んでいなくてもわかるように書いています。同号にはsystemdそのものの基本も載っていますので,併せて読んでいただけると嬉しいです。多くの方がご存知のとおり,Ubuntuで現在採用されているinitデーモンは「Upstart」です。6.10から採用されたUpstartは,イベントベースの非同期的な起動システムによって,起動時間の大幅な高速化に貢献してくれました。そんなUbuntuのinitデーモンですが,Debianがデフォルトのinitとしてsystemdの採用を決定したことをうけて,Ubuntuでも将来的にsystemdに移行することが議論されています。LTSは従来どおりUpstartを利用しています。このため,少なくとも5年間はUpstartのサポートが続きます。2015年2月号では14.04以降の流れや,今のUbuntu内部でsystemdがどのように使われているのか(注1⁠)⁠,今後どういう予定になっているかについて紹介しました。そこで今回のRecipeでは,移行に向けての具体的な作業内容について紹介したいと思います。注1)Ubuntuは主にGNOMEサポートのために,Upstartからsystemdの一部のサービスも使用できるようになっています。2015年4月にリリース予定の15.04では,かなり多くのパッケージがsystemd「も」サポートする予定です。これはJessieのリリースに向けたDebianの成果を取り込んでいることに加えて,先日のSprintではUpstartのみサポートしていた100近くのパッケージにsystemdのUnitも追加しました。Job(注2)で利用するものばかりなので,15.04でPID=1をsystemdに移行するための「パッケージ側の準備」はほぼ整ったと言えます。注2)デスクトップセッションなど,PID=1ではないUpstartから起動するJobのことを指します。こちらは少なくとも15.04ではUpstartをそのまま使う予定です。15.04をインストールしたマシンがあるのであれば,以下のように必要なパッケージをインストールして,GRUBからカーネルの起動オプションを設定することで,かんたんにPID=1をsystemdに変更することが可能です。systemd-ui/etc/default/grubのGRUB_CMDLINE_LINUX_DEFAULTにinitオプションを追加してください。init=/lib/systemd/systemd"最後にGRUBの内容をアップデートします。update-grub再起動すればPID=1がsystemdになっているはずです。今後はアップグレード時の移行シナリオや移行の是非・タイミングを議論することになります(注3⁠)⁠。systemdの多種多様な機能をフルに活用するという状態にはなっていません。hostnamectlやtimedatectlなど,既存の仕組みとかぶっているsystemdの機能はどうするのかということも考えなくてはなりません。Topicsやリリースノートにご期待ください。注3)「是非」と言っても先日アナウンスされたSnappyがsystemdを前提とした実装になっている以上,移行はほぼ確定事項だと思います。ちなみにSnappyでは,ソースパッケージの設定ファイルからsystemdのUnitを自動生成する仕組みが備わっています。Jobをどうすれば良いのでしょうか。これについては作成者が各自で手作業で対応していただくほかありません。Upstartとsystemdの設定ファイルの書式や「できること」が大幅に違うため,自動的な変換ツールを提供することは難しいでしょう。その代わり移植の際に蓄積したノウハウが,UbuntuのWikiにまとまっていますのでそちらを参考にするのが良いでしょう。Upstartとsystemdの用語は必ずしも1:1の対応になっているわけではありませんが,基本的な部分において,似たような意味や役割を持つ用語はいくつか存在します。Upstartは特定のサービスやタスクを実行する処理単位を「Job」と呼びます。systemdで対応するのは「Unit」です。Jobは「/etc/init/」以下に「Job名.conf」という名前で保存されます。システム/パッケージが提供するJobは,「⁠/etc/init/Job名.override」というファイルを作ることでその挙動を上書きできます。systemdの場合はシステムが提供するUnitは「/lib/systemd/system/」に配置され,ユーザーがUnitの挙動を変更する場合は/etc/systemd/system/に同名のファイルを置くことになります。UpstartのJobファイルの中では「stanza」を使って設定を行います。systemdのUnitファイルでは「directive」が近い存在でしょう。on」stanzaで指定します。upstart-events」に詳細が載っていますし,Jobファイルの中で独自のイベントを生成することも可能です。systemdの場合はUnit同士の「依存関係」や「起動順序」を「Wants/Requires/After/Before」directiveなどを利用して,より細かく設定できます。UpstartのJob操作コマンドは「initctl」や「start/stop/restart」を利用します。systemdの場合は「systemctl」コマンドが中心となります。詳しいことはWikiの比較表を参照してください。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。