Chapter1-Prepare.txt:Linuxトレーニングのためのコンピュータの準備 Chapter1-Prepare.txt:2018年11月1日 Chapter1-Prepare.txt:The Linux Foundation Training training.linuxfoundation.orgの出版物 Chapter1-Prepare.txt:このクラスは実践的であることを目指しています。Linuxについて学ぶには、このクラスをぜひ利用するべきです。 Chapter1-Prepare.txt:このクラスで説明されているさまざまな手順を試し演習を実行するには、コンピュータにLinuxをインストールする必要があります。 Chapter1-Prepare.txt:すでにLinuxシステムを実行している場合はこのドキュメントの残りの部分を読む必要はありませんが、興味を持つかもしれません。 Chapter1-Prepare.txt:Linuxをまだインストールしていない場合は、このガイドは、Linuxを起動して実行する作業の助けになるでしょう。 Chapter1-Prepare.txt:© Copyright The Linux Foundation 2014–2018. All rights reserved. Chapter1-Prepare.txt:目次 Chapter1-Prepare.txt:1 はじめに 3 Chapter1-Prepare.txt:1.1 クイック ガイド 5 Chapter1-Prepare.txt:2  Linuxディストリビューションの選択 6 Chapter1-Prepare.txt:3 ビジュアル インストールのデモ 9 Chapter1-Prepare.txt:4 インストール方法 11 Chapter1-Prepare.txt:4.1 完全インストールの代わりにライブ メディアを使用する方法 12 Chapter1-Prepare.txt:4.2 ハイパーバイザと仮想マシンのインストール 13 Chapter1-Prepare.txt:4.3 ネイティブLinuxインストールの実行 14 Chapter1-Prepare.txt:4.4 ディスク容量とパーティション 15 Chapter1-Prepare.txt:1 はじめに Chapter1-Prepare.txt:初期のLinuxでは、インストールは数十枚のフロッピー ディスクを(低速の電話回線を介して)ダウンロードし、1つずつロードするという、骨の折れるプロセスでした。 Chapter1-Prepare.txt:最終的にディストリビュータは、はるかにユーザー フレンドリなCDベースのインストール方法を開発しました。そして、インストールするサイズが徐々に拡大するにつれて、DVDベースで行う方法も広く普及しました。 Chapter1-Prepare.txt:初期のインストール プログラムでは、特に次の点に関して、設定可能な多くの選択肢が用意されていました。 Chapter1-Prepare.txt:•デスクトップ マネージャ:(通常はGNOMEまたはKDE)デスクトップのルック アンド フィールを制御します。 Chapter1-Prepare.txt:•ソフトウェアの選択:他のオペレーティング システムのベンダーとは異なり、Linuxディストリビュータは、基本的なオペレーティング システムとユーティリティだけでなく、幅広いアプリケーションとユーティリティを提供します。 Chapter1-Prepare.txt:他のオペレーティング システムでは、さまざまなソースからダウンロードか購入、またその両方を行った後、(基本的なシステム インストールの後に)同等の機能を個別にインストールする必要があります。 Chapter1-Prepare.txt:ほとんどのLinuxユーザーは、ディストリビューションのパッケージング システムでフリーに提供されているすべてのソフトウェアを見つけることができるので便利です。 Chapter1-Prepare.txt:新しいLinuxユーザーは、しばしば、これらの選択肢のパラメータや長期的な影響を評価するための知識や経験を持っていないことがありました。 Chapter1-Prepare.txt:そのためほとんどのディストリビューションでは、インストール中に行う必要がある選択の数を、少数の基本的な質問に制限しています。最も一般的に役立つものはデフォルトになっています。 Chapter1-Prepare.txt:通常、インストール中に回答する必要がある質問は2 ~ 3にすぎません。 Chapter1-Prepare.txt:さまざまなグラフィカル パッケージ管理システムを使用すれば、インストール後により詳細なソフトウェアを選択できます。 Chapter1-Prepare.txt:1.1 クイック ガイド Chapter1-Prepare.txt:Linuxのインストール方法について少し詳しく説明しますが、せっかちな方のために以下の手順を示します。 Chapter1-Prepare.txt:1. 使用するLinuxディストリビューションを決定します。(後で、インストール メディアをダウンロードするための一般的な選択肢と便利なリンクの表、および手順に関する役立つチュートリアルを提供します。) Chapter1-Prepare.txt:2. ローカルまたはネットワークのインストール イメージ、またはライブ イメージ(インストールにも使用できます)のいずれかをダウンロードします。 Chapter1-Prepare.txt:3. 次のいずれを行うかを決定します。 Chapter1-Prepare.txt:ネイティブ インストール:これを行うには、十分な使用可能ディスク領域があるマシンが必要になるか、領域を使用可能にするためにパーティションを分割し直す必要があります。 Chapter1-Prepare.txt:仮想マシンのインストール:これを行うには、後で説明するように、まずハイパーバイザ プログラムをインストールする必要があります。 Chapter1-Prepare.txt:ライブCD/DVB/USBメソッド:これを行うにはインストールは必要ありませんが、パフォーマンスは低下します。 Chapter1-Prepare.txt:4. ディストリビューションが提供する指示に従ってインストールを行ってください。 Chapter1-Prepare.txt:5. 楽しんで! Chapter1-Prepare.txt:2 Linuxディストリビューションの選択 Chapter1-Prepare.txt:Linuxという用語は、人によって意味が異なる場合があります。狭義ではオペレーティング システムのカーネルのみを指します。すなわち、ハードウェア(CPU、メモリ、接続されたデバイスなど)と通信し、コンピュータ上で実行するその他すべてのものの基盤となる基本プログラムです。 Chapter1-Prepare.txt:もう1つは、コンピュータ上のその他すべてのソフトウェア(優れたグラフィカル デスクトップを提供するために必要なすべてのソフトウェアを含む)です。追加された多くのアプリケーションに対し、完全なオペレーティング システムを提供します。このゆるく定義されたLinuxシステムという意味で使用するときには、本当はLinuxベースのシステムと言うべきです。 Chapter1-Prepare.txt:Linuxカーネルの上に積み重ねられている他のすべてのコンポーネント(アプリケーション、ライブラリ、グラフィカル環境など)を組み立てるのは大変な作業です。Linuxディストリビューションの仕事は、ユーザーが利用できるクリーンで更新可能なものとして、これらすべてのコンポーネントを統合することです。 Chapter1-Prepare.txt:異なるLinuxディストリビューションは多数あります(ディストリビューションはディストロと呼ばれることもあります)。その目的を考えると、このクラスでは1つのディストリビューションを選択して、それに応じた指示を与える方が簡単ですが、次の2つの理由でそれを行いません。 Chapter1-Prepare.txt:•すべてのLinuxシステムにグローバルに当てはまることと、特定のディストリビューション ファミリーにしか当てはまらないことがあります。これを理解してください。 Chapter1-Prepare.txt:•The Linux Foundationは、コミュニティ全体をサポートしているため、特定のディストリビューションを推奨または宣伝しません。 Chapter1-Prepare.txt:したがって、以下のディストリビューション ファミリーで動作を示すこととします。 Chapter1-Prepare.txt:•Red Hat:Fedora、Red Hat Enterprise Linux(RHEL)、CentOSを含みます。 Chapter1-Prepare.txt:•Debian:Debian、Ubuntu、Mintを含みます。 Chapter1-Prepare.txt:•SUSE:SUSEとOpenSUSEを含みます。 Chapter1-Prepare.txt:特定のファミリーのメンバは、主にソフトウェアのパッケージ化、インストール、更新の方法で統合されています。 Chapter1-Prepare.txt:このコースでは、CentOS、Ubuntu、OpenSUSEをそれぞれのファミリーの代表的なメンバとして使用します。 Chapter1-Prepare.txt:比較的経験の浅いユーザーは、UbuntuやMintが最も使いやすいと感じるかもしれません。一方で、より強力なハードウェア、またはエンタープライズ システムでの作業に慣れているユーザーは、CentOSやOpenSUSEが最も簡単に理解できるかもしれません。 Chapter1-Prepare.txt:図 Chapter1-Prepare.txt:利用可能なディストリビューションの選択肢は、他にもたくさんあることを覚えておいてください。 Chapter1-Prepare.txt:http://lwn.net/Distributionsにその完全なリストがあります。 Chapter1-Prepare.txt:一部のディストリビューションは、実際には上記の3種類のファミリーに適合していません。そしてそれらが、Linuxの新しいユーザーが利用するディストリビューションになる可能性はほとんどないでしょう。 Chapter1-Prepare.txt:したがって、これらの3種類のファミリーを使って作業します。 Chapter1-Prepare.txt:次の表は、上記の3種類のファミリーの主要なディストリビューションの、ウェブサイトを示しています。 Chapter1-Prepare.txt:これらのリンクを使用して、またはThe Linux Foundationが管理するhttp://mirrors.kernel.orgなどのミラー サイトを使用して、ダウンロード メディアを簡単に見つけることができます。 Chapter1-Prepare.txt:ディストリビューションの場所  Chapter1-Prepare.txt:ディストリビューション 場所 Chapter1-Prepare.txt:FEDORA  http://www.fedoraproject.org Chapter1-Prepare.txt:REDHAT (RHEL) http://www.redhat.com Chapter1-Prepare.txt:CENTOS http://www.centos.org Chapter1-Prepare.txt:DEBIAN http://www.debian.org Chapter1-Prepare.txt:UBUNTU http://www.ubuntu.com Chapter1-Prepare.txt:MINT http://www.linuxmint.com Chapter1-Prepare.txt:SUSE http://www.suse.com Chapter1-Prepare.txt:OPENSUSE http://www.opensuse.org Chapter1-Prepare.txt:3 ビジュアル インストールのデモ Chapter1-Prepare.txt:多くの企業、組織、および個人が、インストール プロセスの画面をキャプチャし、それらをオンラインに投稿しています。 Chapter1-Prepare.txt:あなたのディストリビューション選択に適したものを見ることをお勧めします。 Chapter1-Prepare.txt:この種の代表的なリソースの表を以下に示します。 Chapter1-Prepare.txt:ウェブ上で少し検索すると、さらに多くのことがわかります。 Chapter1-Prepare.txt:ディストリビューション 場所 Chapter1-Prepare.txt:FEDORA  https://www.youtube.com/watch?v=FcFYFuiidso Chapter1-Prepare.txt:FEDORA   https://www.youtube.com/watch?v=k3MvJrIPgfs Chapter1-Prepare.txt:CENTOS 7  https://www.youtube.com/watch?v=SgXvX4652NA Chapter1-Prepare.txt:DEBIAN 9  https://www.youtube.com/watch?v=AXkhZkTGXW4 Chapter1-Prepare.txt:UBUNTU 18.04  https://www.youtube.com/watch?v=KtOrBL2XIXs Chapter1-Prepare.txt:LINUX MINT 19  https://www.youtube.com/watch?v=nLGFQjPsojg Chapter1-Prepare.txt:このドキュメントはインストールに手助けとなる出発点を提供しますが、一般的なガイドです。選択したディストリビューションの固有のガイドも読むことを強くお勧めします。 Chapter1-Prepare.txt:ハイパーバイザを使用して仮想マシンをインストールする場合でも、ベアメタル マシンでネイティブ インストールを実行する場合でも、手順は基本的に同じであり、これらのデモはどちらの場合にも有用です。 Chapter1-Prepare.txt:4 インストール方法 Chapter1-Prepare.txt:すべてのLinuxディストリビューションは、ダウンロード可能なインストール メディアを、物理ディスクやUSBスティック イメージに簡単に書き込むことができる光学メディア イメージ(CDかDVD、またはその両方)の形式で提供しています。同時に、インストール用に起動できるUSBドライブの作成方法の説明も提供しています。 Chapter1-Prepare.txt:これらのイメージは、マシンの種類(例:64ビットまたは32ビット。64ビットをサポートする最新のハードウェアならば、64ビットのインストールのみを実行することをお勧めします)、または小規模か大規模か(例:最小、完全なデスクトップ、またはサーバー システム)で異なります。 Chapter1-Prepare.txt:または、とても小さいダウンロードを実行して、ファイルが数個しかないネットワーク インストール イメージを取得することもできます。インストール手順はインターネット上で行われ、他に必要なものもすべて取得できます。 Chapter1-Prepare.txt:このようなネットワーク インストールは、最初のダウンロードは短いのですが、ネットワークのダウンロード速度によってはインストール プロセス自体に長い時間がかかる場合があります。 Chapter1-Prepare.txt:完全インストール イメージは、ネットワーク インストールのように、インストール中にインターネットにアクセスすることもサポートします。これば、完全インストール イメージに含まれていたバージョンよりも新しいバージョンのソフトウェアを取得するためです。 Chapter1-Prepare.txt:4.1 完全インストールの代わりにライブ メディアを使用する方法 Chapter1-Prepare.txt:多くの一般的なディストリビューションは、実際にディスク ドライブにインストールせずにLinuxを実行するために使用できる、ライブCD、DVD、USBメディアを提供しています。 Chapter1-Prepare.txt:ご想像のとおり、すでに別のオペレーティング システムを実行しているコンピュータがある場合は、これがLinuxを試す最も安全な方法です。 Chapter1-Prepare.txt:ただし、欠点もあります。 Chapter1-Prepare.txt:•起動が遅い:起動するたびに、ハードウェアを調べ、新規インストールの場合と同様にオペレーティング システムをセット アップする必要があります。 Chapter1-Prepare.txt:•パフォーマンスが低下する可能性があるため、問題なく動作させるには、より多くのメモリとCPUパワーが必要になる場合があります。 Chapter1-Prepare.txt:•作業やその他の素材を通常のハードディスクや外部メディアなどに保存するのは面倒ですが、可能です。特に、セットアップやインストールされているその他のソフトウェアの変更は、起動するたびに失われる可能性があります。 Chapter1-Prepare.txt:ライブ メディア イメージとインストール イメージは、最新の使いやすいディストリビューションの多くで、同じであることを知っておいてください! Chapter1-Prepare.txt:ライブ イメージから起動し、システムが起動したら、「Install(インストール)」をクリックするだけです。 Chapter1-Prepare.txt:このデュアル ユース メディアの非常に優れた点の1つは、インストールを試みる前に、Linuxベースのオペレーティング システムが、ネットワーク カードやサウンド システム 、ウェブカメラなどのすべてのハードウェアと周辺機器を認識して動作できるかどうかを知っていることです。 Chapter1-Prepare.txt:4.2 ハイパーバイザと仮想マシンのインストール Chapter1-Prepare.txt:おそらく誰もが仮想マシンという言葉を聞いたことがあるでしょう。 Chapter1-Prepare.txt:これは完全なゲスト オペレーティング システム(Linuxである場合もそうでない場合もあります)であり、ホスト マシン上のハイパーバイザ プログラム上で実行されます。Windows、Linux、Mac OSのすべての特徴を含む、利用可能なハイパーバイザを備えた任意のオペレーティング システムを実行できます。 Chapter1-Prepare.txt:仮想マシン イメージを使用する利点は、実行中にホスト システムを根本的に破壊することはなく、非特権アプリケーションとして実行できることです。適用する場合、会社のITポリシーと共生できる可能性があります。 Chapter1-Prepare.txt:特にオンライン クラスの場合はもう1つ利点があり、システム障害が発生してもオフラインにならないことです。 Chapter1-Prepare.txt:欠点は主にパフォーマンスに関係しており、ある程度の多くのメモリとCPUパワーが必要です。 Chapter1-Prepare.txt:ただし、ほとんどの状況でこれは問題にはなりません。 Chapter1-Prepare.txt:ハイパーバイザ プログラムがない場合は、インストールする必要があります。 Chapter1-Prepare.txt:簡単に入手できる2つの低コストまたは無料のソリューションを次に示します。 Chapter1-Prepare.txt:• Oracle Virtual Box Chapter1-Prepare.txt:Windows、Linux、MacOS、Solarisオペレーティング システムの場合は、https://www.virtualbox.orgExistsからダウンロードできます。 Chapter1-Prepare.txt:• VMware Chapter1-Prepare.txt:VMware Workstationなどのフル機能の製品にも含まれていますが、無料でダウンロードできるVMware Playerにhttp://www.vmware.com/try-vmware.htmlからアクセスできます。 Chapter1-Prepare.txt:VMware PlayerはWindowsとLinuxホスト オペレーティング システムでのみ無料で利用できます。VMware Fusionは Mac OS用の低コスト プログラムです。 Chapter1-Prepare.txt:ハイパーバイザをインストールすれば、ゲスト オペレーティング システムのインストールは非常に簡単にできます。 Chapter1-Prepare.txt:インストール イメージをCDやDVDに書き込む必要もありません。ハイパーバイザをコンピュータ上の.isoイメージにポイントするだけです。 Chapter1-Prepare.txt:場合によっては(Virtual Boxの場合など)、インストール時に質問されることさえない自動インストールを実行することができます! Chapter1-Prepare.txt:パーティション分割のような難しいことを除けば、インストールに関する大部分がここで説明されていて、デフォルトの選択をそのまま使用できます。 Chapter1-Prepare.txt:ただし、十分なディスク容量を割り当てるようにしてください(少なくとも20GBあると安全ですが、必要な容量はかなり少ないでしょう)。 Chapter1-Prepare.txt:4.3 ネイティブLinuxインストールの実行 Chapter1-Prepare.txt:最近は、人気のあるLinuxディストリビューションには簡単なインストール手順があり、ほとんどがライブCDまたはUSBスティックを提供しており、これを使用してインストールを行うこともできます。 Chapter1-Prepare.txt:まず、ライブ メディアから起動します。起動が成功すると、Linuxディストリビューションがハードウェアと互換性があることが確認されるので、「Install(インストール)」をクリックしてLinuxディストリビューションをハードディスクに置きます。 Chapter1-Prepare.txt:(WindowsからWubiを使用してUbuntuをインストールすることは、ネイティブ インストールとは言いません。この仮想マシンを使用する方法はパフォーマンスが非常に悪くこのオプションはサポートされません。) Chapter1-Prepare.txt:最も単純なケースは、純粋なLinuxインストールを実行することです。これには、ハードディスクを一掃し、以前にインストールされていたオペレーティング システムを破棄することを含みます。 Chapter1-Prepare.txt:専用マシンにするためにLinuxをインストールするのでない限り、それはおそらく必要ありません。代わりに、マルチ ブート構成をセットアップする必要があります。 Chapter1-Prepare.txt:これにより、システムがLinux、Windows、または別のオペレーティング システムの間で起動するとき、もしくは異なるバージョンのLinuxを起動するときに選択肢が表示されます。たとえば、同じマシンにUbuntuとFedoraを別々にインストールすることができます。 Chapter1-Prepare.txt:マルチ ブート インストールでは、インストール時に非常に注意する必要があります。ディスクのセットアップについて聞かれた部分には注意して、まだ使用されていないハードディスクの部分のみを使用するようにしてください。 Chapter1-Prepare.txt:運がよければ、インストール プログラムは既存のフォーマットで簡単に実行できます。 Chapter1-Prepare.txt:ただし、新たにパーティション分割できる使用可能な領域がない場合、または消去して再利用できるパーティションがない場合、対処が複雑になる可能性があります。 Chapter1-Prepare.txt:これについては、次のセクションで説明します。 Chapter1-Prepare.txt:4.4 ディスク容量とパーティション Chapter1-Prepare.txt:インストールを続行するには、通常、ハードディスクに十分な空き容量が必要です。 Chapter1-Prepare.txt:さらに、既存のパーティションの外に未割り当ての空き領域がある、もしくは既存パーティションを再フォーマットできる必要があります。 Chapter1-Prepare.txt:これは、マルチ ブート構成がまだ設定されていないほとんどのシステムにとって重要なことです。(最初に処理する必要がある)このステップは、実際のインストールよりも時間がかかる場合があります。 Chapter1-Prepare.txt:適切なパーティション分割のセットアップに数時間かかるシステムを見てきましたが、一度完了すると、インストールは約20分で完了しました。 Chapter1-Prepare.txt:ほとんどのライブCD/USBメディアには、ディスク パーティションのサイズ変更、移動、作成、削除を行うためのシステム ソフトウェアが含まれています。gpartedと呼ばれるプログラムで、それを利用します。 Chapter1-Prepare.txt:運が良ければ、単にgpartedを使用して既存のパーティションを縮小し、20〜30GBほど解放してから、通常のインストールを実行できます。 Chapter1-Prepare.txt:手順の実行中は、ハードディスクのレイアウトに関する質問に適切に回答し、既存の使用中のパーティションを破棄しないように注意してください。 Chapter1-Prepare.txt:多くのシステムでは、すでに4つのプライマリ ディスク パーティションが使用されている場合があります。この場合、新しいパーティションを作成できません。 Chapter1-Prepare.txt:(最大で4つのプライマリ パーティション、または最大3つのプライマリ パーティションと1つの拡張パーティションを作成でき、そこに多数の論理パーティションを作成できます。) Chapter1-Prepare.txt:たとえば、一部のメーカーでは、Windows用に予約された2つのパーティション(ブート パーティションと C:ドライブ)をセットアップします。1つは回復ディスク用に予約され、もう1つは製造元の診断用に予約されています。 Chapter1-Prepare.txt:この状況で身動き取れない場合は、プライマリを3つに減らすためにパーティションを削除するか、プライマリ パーティションの1つを論理パーティションに変換するなど、より複雑なことを行う必要があります。そして、パーティションを縮小および移動するには、いくつかの手順を実行する必要があります。 Chapter1-Prepare.txt:The Linux Foundationでは、これを行う方法について詳細な手順を示すことはしません。 Chapter1-Prepare.txt:各システムは既存のレイアウトに応じて異なるため、システムを無用の長物に変える可能性が非常に高くなるためです。 Chapter1-Prepare.txt:我々には、このようなことに対処するための技術サポート力はありません。 Chapter1-Prepare.txt:したがって、技術支援については、お好みのディストリビューションとそのインストール ページを紹介するだけにします。 Chapter1-Prepare.txt:インストールが正常に完了したら、クラスで学習する方法を使用して、不足していることに気づいたときに必要なその他のソフトウェア パッケージをインストールできます。 Chapter1-Prepare.txt:ごく最近のハードウェアにはUEFIセキュア ブート メカニズムが含まれている場合があります。 Chapter1-Prepare.txt:これがBIOSで有効になっている場合には状況は複雑で、Linuxを共存させる一般的な方法はまだありません。 Chapter1-Prepare.txt:この状況でテクニカル サポートを提供することは、現在まだ難しいです。 Chapter1-Prepare.txt:結論としては、パーティショニングの設定に慣れていず、潜在的な問題に対処する時間も、障害が発生した場合に利用可能な救護策もない場合は、仮想マシンのインストールを行うか、ライブ メディアを使用する方がよいでしょう。 Chapter1-Prepare.txt:The Linux Foundationは、オープンソースがクローズド プラットフォームとうまく競争するために必要な統合リソースとサービスを提供することにより、Linuxの促進、保護、標準化しています。 Chapter1-Prepare.txt:Linuxトレーニング プログラムの詳細については、training.linuxfoundation.orgをご覧ください。 Chapter1.txt:コース紹介 Chapter1.txt:コース情報 Chapter1.txt:LFS201へようこそ! Chapter1.txt:このビデオでは、コース全体の概要を説明しています。 Chapter1.txt:Introduction to Linux(LFS101)との関係 Chapter1.txt:このコースは、edXのThe Linux Foundationの無料の Introduction to Linux(6th Ed.)を受講していること(このMOOC - Massive Open Online Course - はこちらをクリックするか、edXウェブサイトで「Linux」を検索することで見つけることができます)、またはコースの受講で得られる知識と同等以上の知識を前提にしています。 Chapter1.txt:LFS101xは無料です。このコースを受講する必要がないと感じた場合でも、サイン アップすることをお勧めします。少なくとも資料をすぐに閲覧することができます。LFS101xで説明している内容は、このコースでも説明してるものもあります。その場合、このコースの受講生のレベル合わせ、より詳細になっています。パッケージ管理のトピックはその一例です。一方でここで取り上げていない、とても基本的なトピックについては入門コースを参照することをお勧めします。 Chapter1.txt:このコースでは説明していませが、システム管理者の知識として必要なトピックが他にもいくつかあります。特に以下のトピックです。 Chapter1.txt:テキスト エディタ(vi、emacs、nano、geditなど) Chapter1.txt:Linuxドキュメントの検索(help の使い方) Chapter1.txt:テキストの操作(sed、grep、awk、cut、paste、tail、headなど) Chapter1.txt:ファイル ユーティリティ(find、locate、fileなど) Chapter1.txt:印刷(プリンタの構成、印刷ジョブの管理) Chapter1.txt:グラフィカル インターフェイスとその管理 Chapter1.txt:bashシェル スクリプト Chapter1.txt:システムのインストール Chapter1.txt:このコースを受講する前に、最低限 LFS101xを少しだけ見てみることをお勧めします。あなたがこのコースで使用する基本的なユーティリティとその操作手順に精通していない、もしくは使い慣れていない場合、LFS101xを参照すると議論されていることでしょう。このコースではそれらを知っているものとして説明しています。 Chapter1.txt:講師紹介:Jerry Cooperstein(ジェリー クーパースタイン) Chapter1.txt:Jerry Coopersteinは1994年からLinuxに取り組んでおり、カーネルとユーザーの両方の分野でトレーニングを開発し提供しています。彼は、The Linux Foundationのすべてのトレーニング コンテンツの包括責任者です。核天体物理学における20年のキャリアの間、彼は多くの種類のスーパー コンピュータで最先端のシミュレーション ソフトウェアを開発し、学部と大学院の両方で教えていました。Jerry Coopersteinは2009年にトレーニング プログラム ディレクタとしてThe Linux Foundationに参加しました。現在ウィスコンシン(Wisconsin)に住んでいます。 Chapter1.txt:コースの受講者と要件 Chapter1.txt:各ボックスをクリックして、コースの対象受講者、知識/スキル要件、ソフトウェア環境、およびラボ環境について学習します。 Chapter1.txt:受講者と要件 Chapter1.txt:受講者 Chapter1.txt:このコースは、主にシステム管理者向けです。 Chapter1.txt:ほとんどのユーザーが、エンタープライズ環境と呼ばれる環境で、複数のマシンを構成、実行、およびトラブルシューティングの作業を行うものと想定しています。他のオペレーティング システムでかなりの経験がある方もいると思います。以前の知識を活用しながら、Linuxにおける正しい方法を学んでください。 Chapter1.txt:すでにLinuxを使用している方もいると思いますが、個人のシステムを実行して安全に保つこと以上の複雑なトピックについては、学んでいない可能性があります。 Chapter1.txt:このコースは、以下は対象としていません。 Chapter1.txt:オペレーティング システムの経験があまりない新規ユーザー Chapter1.txt:新規Linuxユーザーは、The Linux FoundationのLinux入門(LFS101x)などの入門コースに参加した後、このコースを受講することをお勧めします。 Chapter1.txt:開発者(カーネル レベルまたはアプリケーション レベル) Chapter1.txt:多くの開発者はこの資料に興味を持つでしょう。しかし、誰よりもオペレーティング システムの理論、カーネル内部、アプリケーションなどについて精通していますので、このコースでは物足りないかもしれません。そして、管理と開発の両方を行う「パワー ユーザー」はたくさんいます。 Chapter1.txt:パフォーマンス チューニングに集中している経験豊富な管理者 Chapter1.txt:管理とパフォーマンスは疑う余地もなくリンクしているため、このコースでは、パフォーマンス チューニングの問題についても説明します。ただし、詳細は説明しません。詳細を学びたい場合は、The Linux FoundationのLFS426など、より高度で専用のパフォーマンス チューニング コースを受講してください。 Chapter1.txt:知識/スキル Chapter1.txt:Linuxのインストールやコマンド ラインの使用などのLinuxの基本的な知識は、役に立ちますが必須ではありません。 Chapter1.txt:ソフトウェア環境 Chapter1.txt:The Linux Foundationが作成した資料は、どのディストリビューションでも有用です。これは、技術的な説明、演習、手順が最新のLinuxディストリビューションのほとんどで機能するという意味です。特定のベンダーが販売する製品を説明することはしません(特定のシナリオについては言及する場合があります)。 Chapter1.txt:実際には、ほとんどの資料は、以下の3つの主要なLinuxディストリビューション ファミリーを念頭に置いて作成されています。 Chapter1.txt:Debian / Ubuntu Chapter1.txt:Red Hat / Fedora Chapter1.txt:openSUSE / SUSE​ Chapter1.txt:コースの受講生が使うディストリビューションは、これら3種類のいずれか1つ、またはそれらから派生した製品になります。 Chapter1.txt:コースで使うリソース Chapter1.txt:このコースのリソースはオンラインで見つけることができます。このコースを更新するには時間がかかります。したがって、このコースの更新の間に何らかの変更があった場合には、オンラインでコースの最新情報やコース リソースにいつでもアクセスできます。 Chapter1.txt:コース リソースの取得は、The Linux Foundationトレーニング ウェブサイトにアクセスします。 Chapter1.txt:ユーザーIDはLFtraining、パスワードはPenguin2014です。 Chapter1.txt:ドキュメントを読むこと Chapter1.txt:ところどころでLinuxユーティリティ プログラムを使用してコマンドを作成する方法について説明し、オプション、引数などの選択の1つ以上の例を示します。また、あまり一般的でない使用モードは取り上げません。多くのプログラムは非常に汎用性が高いため、めったに使用されない機能も多数持っています。 Chapter1.txt:「manページで詳細を読んでください」と明示的に言うこともよくありますが、常に暗黙的に言っていると思ってください。最も単純なユーティリティ以外は、言われなくてもLinuxディストリビューションで簡単にアクセスできるドキュメントを読む習慣を身に付けるようにしてください。 Chapter1.txt:ほとんどのユーティリティ プログラムには、manページの他に、helpとその使用方法に関する情報が組み込まれています。通常、df --helpのように--helpオプションを使用してアクセスします。 Chapter1.txt:これらの情報をすべてコース教材に含めようとすると無意味に重複してしまい、実際には内容が薄れてしまいますので、manや--helpを活用してください。 Chapter1.txt:変化、反復、そして聖戦(Holy Wars) Chapter1.txt:クリックして各ボックスを展開し、3つの重要なコンテキストについて学びます。 Chapter1.txt:コンテキスト Chapter1.txt:Linuxは変化しています Chapter1.txt:我々がどれほど最新の状態に努めても、技術レベル(カーネル機能を含む)とディストリビューションおよびインターフェイス レベルの両方で、Linuxは常に進化しています。我々はこのコースをリリースする時点で可能な限り最新の状態にしようと努力しています。ただし、その後に変更されたり我々が説明していない新しい機能があるかもしれないことについては、了承をお願いします。これはやむを得ないことです。 Chapter1.txt:コース教材では、いくつかの説明を繰り返しています Chapter1.txt:このコース全体を通して、以前に取り上げたトピックを再度説明することはほぼ不可能です。ただ、短いレビューを参考にすれば思い出せると思うので、以前のセクションを見直す必要はありません。この短いレビューの提供は、偶然に記載しているのではなく意図的に行っています。 Chapter1.txt:私たちは聖戦(holy wars)ともいえる争いを避けようとしてきました Chapter1.txt:Linux(およびより広いオープンソース)コミュニティには、多くの分野で強い嗜好の不一致があります。例えば、エディタではemacs vs. vi、最良のグラフィカル デスクトップではGNOME vs. KDEなど。ここでは、(必要な場合には)物事を明確にするためにあえて特定の選択肢を選択しています。たとえば、KDEよりもGNOMEについて詳しく説明していますが、単にユーザー数が多いからであり、どちらが優れているかというものではありません。 Chapter1.txt:対象プラットフォーム Chapter1.txt:このコースは、ハードウェア上で直接、またはKVM、VMWare、Virtual Boxファミリーなどのハイパーバイザ下の仮想マシン(VM)として実行されるx86ベースのプラットフォームで、動作するように設計されています。 Chapter1.txt:このコースのほとんどは他のアーキテクチャにも適用できますが、大部分が実際のx86マシンまたは仮想のx86マシンを対象にしています。 Chapter1.txt:32ビットは考慮せず、すべて64ビットを想定しています。ただテストは行っていませんが、もし受講生が何らかの理由で32ビットのx86を実行していたとしても、ほとんどが実行可能のはずです。 Chapter1.txt:また、組み込みLinuxプラットフォームを対象とはしていません。同じLinuxカーネルをデプロイしており、多くの同じユーザー領域の構成要素を使用していますが、ここでは、アプライアンスとして使用されるデバイスのシステム管理は説明対象にしていません。 Chapter1.txt:異なるブートローダー プログラムやファイルシステムを使用するなど、重要で基本的な要素が異なるためです。さらに、メモリ、プロセッサ パワー、ストレージ容量などのリソースは大きく異なります。 Chapter1.txt:同じ事がAndroid(組み込みLinuxの特定の形式)にも当てはまります。カーネルはLinuxですが、ファイルシステムとアプリケーション空間は標準のLinuxシステムとは大きく異なります。 Chapter1.txt:コマンド ライン vs. グラフィカル インターフェイス Chapter1.txt:多くの管理タスクは、コマンド ラインまたはグラフィカル アプリケーションから実行できます。直接命令を入力するため、大抵の場合のコマンド ライン アプローチには柔軟性と追加機能が存在します。ただし、コマンド ラインには、タスクを実行する必要があるときに、管理者がそのための命令を覚えたり調べたりする必要が多いという欠点もあります。 Chapter1.txt:Linuxではさまざまなグラフィカル デスクトップ環境が使用されており、一般的なものとしてはGNOMEとKDEの2つがあります。それぞれに複数のバージョンや世代があります。 Chapter1.txt:このコースでは、グラフィカル インターフェイスについて言及しません。グラフィカル インターフェイスは、Linuxディストリビューション ファミリーやバージョン間で大きく異なるためです。さらに、多くのサーバーにはグラフィカル インターフェイスがインストールされていません。 Chapter1.txt:ただし、グラフィカル インターフェイスの使用方法を示すいくつかのビデオ デモがありますので、それらがどのように機能するかを知ることができます。 Chapter1.txt:もしすでにLFS101xを受講しているのであれば、それらは理解していると思います。 Chapter1.txt:利点としては、私たちが行うことに関してはディストリビューション間での違いがほとんどないため、パッケージ管理を含む簡単なタスク以外は、各ディストリビューションについて個別に説明する必要がないということです。 Chapter1.txt:このコースでは、ローカル マシンのコンソール、またはグラフィカル デスクトップで実行されているgnome-terminalなどのターミナル エミュレータから、コマンド ラインで作業ができます。または、SSHまたはVPNセッションを介してリモートで作業することもできます。私たちが行うことはほとんど、リモート セッションでも同じようにできます。例外は、レスキュー環境を起動する場合など、マシンに物理的にアクセスする必要がある場合です。 Chapter1.txt:対象Linuxディストリビューション Chapter1.txt:Linux ディストリビューションの数はほとんど無限です。オンラインで入手できるLWN.net Linuxディストリビューション リストをよく読んでください。ただし、このコースでは、エンタープライズLinuxディストリビューションに集中して説明します。 Chapter1.txt:各ボックスをクリックして展開し、システムの大部分が使用しているディストリビューションについて学習します。 Chapter1.txt:エンタープライズLinuxディストリビューション Chapter1.txt:Red Hat Enterprise Linux Chapter1.txt:ここでは、これをRHELと略記するか、2014年にリリースされたRHEL 6またはRHEL 7のようにバージョン番号を付けて略記します。RHELの派生物には、CentOSやScientific OSなどの派生ディストリビューションが含まれます。このコースでは、自由に利用でき無料で入手できる点でこれらは同じです。公式のRHELシステムのパッケージ更新にはいくつかの違いがありますが、ここではそれらを詳しく述べません。Oracle Linuxは実際には単なるRHELのコピーでありRHELとほぼ同じため、ここでは説明しません。 Chapter1.txt:FedoraはRed Hatファミリーに属しており、実際にはRHELのアップストリームと見なすことができます。現在のバージョンはRHEL 7に非常に似ています。ただし、Fedoraは最先端技術を取り入れており、重要な機能(カーネルのバージョンなど)を頻繁に変更するため、安定性が重要な場合には適していません。エンタープライズ環境でFedoraが使用されることはまれです。 Chapter1.txt:SUSE Chapter1.txt:SUSEは、大きな市場シェアを持つ本格的なエンタープライズ ディストリビューションです。これはopenSUSEと密接に関連しています。openSUSEとSUSEは、FedoraとRHELの関係と同じです。SUSEには、RHELにとってのCentOSのような近いクローンがないため、対象システムとしてopenSUSEを使用します。その違いは小さく、将来開発される機能に触れる機会と思ってください。 Chapter1.txt:Debian Chapter1.txt:Debian(およびDebianから派生したUbuntu)もエンタープライズ環境で使用されます。DebianまたはUbuntuシステムを使う時は、ほとんどの場合、Ubuntu 16.04 LTSまたは18.04リリースを使用します。Linux Mintなどの他のDebian派生ディストリビューションも、それほど大きな違いはありません。 Chapter1.txt:このコースのすべては、上記の主要なディストリビューション ファミリーで機能します。違いについては、必要に応じて説明します。この違いは、多くの場合、ソフトウェアのパッケージ方法と使用方法に現れます。 Chapter1.txt:なお、あまり使われていないけれども広く関心を持たれているディストリビューション(Arch LinuxやGentooなど)を使用している企業を、非難するつもりはありません。どちらもローリング ディストリビューション(特定のリリースはなく、常に更新されている)であり、エンタープライズ環境に精通した管理者ならば最適に使用できます。 Chapter1.txt:デモ:対象Linuxディストリビューション Chapter1.txt:このビデオでは、起動、ログイン、シャットダウンに関するGNOMEベースのLinuxディストリビューションの類似点を視覚的に簡単に説明しています。 Chapter1.txt:インストール:このコースで使用するもの Chapter1.txt:このコースではあなたがお好みのLinuxディストリビューションをローカルにインストールし、使用して頂いて結構です。コースの中で使用する特定のプログラムやパッケージが無い場合は、そのLinuxディストリビューションの方法を使用して随時取得、インストールしてください。 Chapter1.txt:ここではグラフィカル環境を使用していないため、リモートでログインするリモート マシンでコース作業を行うこともできます。 Chapter1.txt:このコースは物理マシンと、VMware、Oracle Virtual Box、KVMなどのハイパーバイザで実行されている仮想マシンのどちらでも使用できます。パフォーマンス チューニングを積極的に行っていない部分もありますが、仮想マシンは物理マシンと同様に機能するはずです。仮想マシンの使用で少し性能が低くなりますが、それでも問題にはならず、また受講上大きなダメージになることは無いはずです。 Chapter1.txt:The Linux Foundationは、LFS101xの受講のためにインストールに関するドキュメントを作成しました。これは、このコースに強く関係しています。以下のドキュメントをご覧ください。特に、ハイパーバイザのさまざまなオプションについて説明しています。 Chapter1.txt:🚩 Chapter1.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter1.txt:<<ここにPreparing Your Computer for Linux Trainingの訳が挿入されます。>> Chapter1.txt:アマゾン ウェブ サービスの無料枠 Chapter1.txt:アマゾン ウェブ サービス(AWS)は、クラウド内のリモート ユーザーがアクセスできる幅広い仮想マシン製品(インスタンス)を提供します。 Chapter1.txt:AWS Free Tierアカウント レベルを最大1年間使用できます。The Linux Foundationトレーニング コースの演習を実行し、オープンソース ソフトウェアの経験を積むために必要なハードウェアとソフトウェアのシミュレーションの選択肢がすべて揃っています。また、AWSは、ローカル ハードウェアで作業するための教育的な補足を提供し、複数のLinuxディストリビューションを簡単に研究する機会を提供してくれるでしょう。 Chapter1.txt:AWSはコンソールへのアクセスを許可せず、グラフィカル インターフェイスも表示しないため、これらの機能のいずれかを必要とするタスクを実行することはできません。さらに、カーネル レベルのコースでは、いくつかの特定の課題があります。 Chapter1.txt:AWS無料利用枠を試すのに役立つガイドをダウンロードできます。 Chapter1.txt:課題 1.1: sudo用にシステムを構成する Chapter1.txt:🚩 Chapter1.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックを使用して新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter1.txt:【【これ以降は橋本さんの訳を参照】】 Chapter1.txt:It is very dangerous to run aroot shellunless absolutely necessary: a single typo or other mistake can cause serious (evenfatal) damage. Chapter1.txt:Thus, the sensible procedure is to configure things such that single commands may be run with superuser privilege, by using the sudo mechanism. With sudo the user only needs to know their own password and never needs to know the root password. Chapter1.txt:If you are using a distribution such asUbuntu, you may not need to do this lab to get sudo configured properly for the course. However, you should still make sure you understand the procedure. Chapter1.txt:To check if your system is already configured to let the user account you are using runsudo, just do a simple command like: Chapter1.txt:$ sudo ls Chapter1.txt:You should be prompted for your user password and then the command should execute. If instead, you get an error messageyou need to execute the following procedure. Chapter1.txt:Launch a root shell by typingsuand then giving therootpassword, not your user password. Chapter1.txt:On all recent Linux distributions you should navigate to the /etc/sudoers.d subdirectory and create a file, usually with thename of the user to whom root wishes to grant sudo access. However, this convention is not actually necessary as sudo will scan all files in this directory as needed. The file can simply contain: Chapter1.txt:student ALL=(ALL) ALL Chapter1.txt:if the user isstudent. Chapter1.txt:An older practice (which certainly still works) is to add such a line at the end of the file/etc/sudoers. It is best to do so using the vi sudo program, which is careful about making sure you use the right syntax in your edit. Chapter1.txt:You probably also need to set proper permissions on the file by typing: Chapter1.txt:$ sudo chmod 440 /etc/sudoers.d/student Chapter1.txt:(Note some Linux distributions may require 400 instead of 440 for the permissions.) Chapter1.txt:After you have done these steps, exit the root shell by typing exit and then try to do sudo ls again. Chapter1.txt:There are many other ways an administrator can configure sudo, including specifying only certain permissions for certainusers, limiting searched paths etc. The /etc/sudoers file is very well self-documented. Chapter1.txt:However, there is one more setting we highly recommend you do, even if your system already has sudo configured. Most distributions establish a different path for finding executables for normal users as compared to root users. In particular the directories /sbin and /usr/sbin are not searched, since sudo in herits the PATH of the user, not the full root user. Chapter1.txt:Thus, in this course we would have to be constantly reminding you of the full path to many system administration utilities;any enhancement to security is probably not worth the extra typing and figuring out which directories these programs are in. Consequently, we suggest you add the following line to the.bashrcfile in your home directory: Chapter1.txt:PATH=$PATH:/usr/sbin:/sbin Chapter1.txt:If you log out and then log in again (you don’t have to reboot) this will be fully effective. Chapter1.txt:コース サポート Chapter1.txt:このコースを受講している仲間と交流する方法の1つに、クラス フォーラムの利用があります。フォーラムは次の方法で使用できます。 Chapter1.txt:このコースを受講している他の仲間に自己紹介します。 Chapter1.txt:このコースで提示された概念、ツール、技術について、またはコース資料で説明されているトピックに関連して説明します。 Chapter1.txt:コースの内容について質問します。 Chapter1.txt:Linuxシステム管理に関連するリソースとアイデアを共有します。 Chapter1.txt:クラス フォーラムはThe Linux Foundationのスタッフによって定期的にレビューされます。これはコミュニティ リソースであり、「インストラクタに質問する」サービスではありません。 Chapter1.txt:技術的な問題についてさらにサポートが必要な場合は、training@linuxfoundation.orgまでメールでお問い合わせください。 Chapter1.txt:コース受講のタイミング Chapter1.txt:このコースは完全に自習型です。教材を学習するための決まったスケジュールはありません。自分のペースでコースを進むことができます。また、新しいセッションを開始するために戻ったときは常に中断した場所に戻ります。ただし、学習の加速とコンテンツの理解の維持向上のため、学習の長期の中断は避けることをお勧めします。 Chapter1.txt:コースを完了した後でも、登録した日から12か月間、このコースに無制限にアクセスできます。 Chapter1.txt:コースの各章は、相互に関連するように設計されています。そのため、順番に学習していくことをお勧めします。いくつかの章をスキップしたり読み飛ばすと、説明されていないトピックが書かれている場合があります。しかし、これはすべて自習型であり、いつでも前の方の章に戻ることができるので、教材を自分のやり方で進めて結構です。 Chapter1.txt:演習と評価 Chapter1.txt:演習と知識チェックの問題は採点されません。 Chapter1.txt:また、このコースを修了するために最終試験を受ける必要はないことも強調しておきます。 Chapter1.txt:各ボックスをクリックして、演習と知識チェックの問題について学習します。 Chapter1.txt:演習と評価 Chapter1.txt:演習 Chapter1.txt:すべてのThe Linux Foundationコース(任意の形式)では、実践による学習に重点を置いています。インストラクタ主導のライブ クラスでは、ほとんどの場合、講義とディスカッションの50/50のバランスを目指し、クラスで説明したタスクを実行したり、より意欲的なバリエーションを試すラボの演習や宿題に取り組みます。インストラクタは、これらの演習セッション中に受講生が何かを行う方法や、コードやスクリプトをデバッグする方法などを理解することを支援します。一方で、このコースは自習型であり、ライブ インストラクタがいません。時間の割り振りを管理して演習の実施に十分な時間をかけられるかは、あなたの裁量次第です。 Chapter1.txt:コース全体に演習があります。 Chapter1.txt:📦 Chapter1.txt:便利な機能として、画面の左側にある目次に移動し、Resource > File を選択すれば、すべての演習(LFS201演習)のファイルにアクセスすることができます。 Chapter1.txt:知識チェック Chapter1.txt:各章の終わりには、一連の知識チェックの問題があります。これらの問題は、演習と同様に、1つの主要な目標を念頭に置いて設計されました。それは、コースの内容のより良い理解と学んだことの強化に役立つことです。 Chapter1.txt:コースのフォーマット Chapter1.txt:コース内では、さまざまなタイプのコンテンツを簡単に区別できるように、以下の色分けと形式を使用しています。 Chapter1.txt:濃い青:コマンド ラインで入力したテキスト Chapter1.txt:緑:出力 Chapter1.txt:黒:ファイルの内容 Chapter1.txt:茶色:ファイル/ディレクトリ名 Chapter1.txt:水色:ハイパーリンク Chapter1.txt:また、異なるアイコンのテキスト ボックスが表示されている場合もあります。それぞれの意味を以下に示します。 Chapter1.txt:📦 追加のコース文書 Chapter1.txt:💡 追加情報 Chapter1.txt:🚩 重要な情報 Chapter1.txt:🔍 考える、調査する Chapter1.txt:📖 外部リソース Chapter1.txt:著作権 Chapter1.txt:Copyright 2015-2020, The Linux Foundation. All rights reserved. Chapter1.txt:The Linux Foundationがトレーニング サービスに関連して提供または開発したトレーニング資料は、著作権およびその他の知的財産権によって保護されています。 Chapter1.txt:本書に組み込まれているオープンソース コードには、他の著作権所有者がいる場合があり、該当するオープンソース ライセンスに従って使用されます。 Chapter1.txt:ここではサードパーティのアプリケーション ソフトウェア パッケージを参照する場合がありますが、これはデモンストレーションのみを目的としており、これらのソフトウェア アプリケーションを推奨するものではありません。 Chapter1.txt:ここで提供される資料を含むすべてのThe Linux Foundationのトレーニングは、Linux Foundationからの保証なしで提供されます。The Linux Foundationは、本書に含まれる内容、詳細の使用、誤用から生じる損害、法的措置について、責任を負いません。 Chapter1.txt:LinuxはLinus Torvaldsの登録商標です。このコース資料内の他の商標は、それぞれの所有者の所有権を表します。 Chapter1.txt:The Linux Foundationの資料が使用、コピー、またはその他の方法で不適切に配布されていると思われる場合は、training@linuxfoundation.orgに電子メールを送信するか、+ 1-415-723-9709(米国)に電話してください。 Chapter1.txt:The Linux Foundation Chapter1.txt:The Linux Foundationは、オープンソース プロジェクトを中心に持続可能なエコシステムを構築し、テクノロジの開発と業界での採用を促進を行っています。2000年に設立されたThe Linux Foundationは、資金および知的リソース、インフラストラクチャ、サービス、イベント、トレーニングを通じて、オープンソース コミュニティに多くのサポートを提供しました。The Linux Foundationとそのプロジェクトは、協力という最も野心的で成功する投資によって、技術の共有を行っています。 Chapter1.txt:Linuxは、歴史上、世界最大かつ最も普及しているオープンソース ソフトウェア プロジェクトです。The Linux Foundationは、LinuxクリエーターのLinus Torvaldsと主任メンテナのGreg Kroah-Hartmanの本拠地であり、Linuxカーネル開発を何年もの間保護し加速できる中立的な場を提供しています。Linuxの成功は、オープンソース コミュニティの成長を促進し、オープンソースの商業的有効性を実証し、すべての業界にわたる無数の新しいプロジェクトと技術スタックのレベル向上を奨励してきました。 Chapter1.txt:The Linux Foundationは、今日の企業に力を与える多くの重要なオープンソース プロジェクトの傘のような存在です。以下のようなあらゆる産業セクタにまたがっています。 Chapter1.txt:ビッグ データと分析:ODPi、Rコンソーシアム Chapter1.txt:ネットワーキング:OpenDaylight、OPNFV、ONAP Chapter1.txt:組み込み:Dronecode、Zephyr Chapter1.txt:ウェブ ツール:OpenJS Foundation Chapter1.txt:クラウド コンピューティング:Cloud Foundry、Cloud Native Computing Foundation、Open Container Initiative Chapter1.txt:オートモーティブ: Automotive Grade Linux Chapter1.txt:セキュリティ: The Core Infrastructure Initiative Chapter1.txt:ブロックチェーン: Hyperledger Chapter1.txt:など。 Chapter1.txt:The Linux Foundationのイベント Chapter1.txt:The Linux Foundationは世界中で技術イベントを開催しています。私たちのカンファレンスは、以下のプラットフォームの推進において比類のない環境を提供します。それは、次のカーネル リリースを開発するためのオープン フォーラムを提供する、リアルタイム環境で問題を解決するために開発者を集める、活発な議論のためにワーク グループとコミュニティ グループをホストする、エンド ユーザーとカーネル開発者をつなぐ、企業でのLinuxおよびオープンソース ソフトウェアの使用を拡大する、コミュニティ全体のコラボレーションを促進したりすることです。 Chapter1.txt:The Linux Foundationは毎年、次のようなイベントを主催しています。 Chapter1.txt:Open Source Summit 北米、ヨーロッパ、日本、中国 Chapter1.txt:Embedded Linux Conference + OpenIoT Summit 北米、ヨーロッパ Chapter1.txt:Open Source Leadership Summit Chapter1.txt:Open Networking Summit 北米、ヨーロッパ Chapter1.txt:KubeCon + CloudNativeCon 北米、ヨーロッパ、中国 Chapter1.txt:Automotive Linux Summit Chapter1.txt:KVM Forum Chapter1.txt:Linux Storage Filesystem and メモリ Management Summit Chapter1.txt:Linux Security Summit 北米、ヨーロッパ Chapter1.txt:Cloud Foundry Summit Chapter1.txt:Hyperledger Global Forum、など Chapter1.txt:The Linux Foundationのイベントの詳細については、オンラインで知ることができます。 Chapter1.txt:トレーニング会場 Chapter1.txt:The Linux Foundationのトレーニングは、コミュニティによる、コミュニティのためのものであり、Linux開発者コミュニティのリーダーが直接講師をしたりコンテンツを提供したりしています。 Chapter1.txt:The Linux Foundationは、いくつかの種類のトレーニングを提供しています。 Chapter1.txt:クラスルーム(教室) Chapter1.txt:オンライン Chapter1.txt:オンサイト Chapter1.txt:イベントベース。 Chapter1.txt:参加者は、Linuxおよびオープンソース ソフトウェア開発コミュニティの実際のリーダー自身が作成した、ディストリビューションに柔軟であり技術的に高度な、Linuxおよびオープンソース ソフトウェアのトレーニングを受けることができます。The Linux Foundationコースは、今日のキャリアで成功するために必要な、幅広い基礎知識とネットワーキングを参加者に提供します。The Linux Foundationクラスは、オンライン トレーニングまたは対面式トレーニングのいずれかです。あなたやあなたの開発者に、オープンソースの必須要素を先行して提供します。 Chapter1.txt:The Linux Foundationのトレーニングの提供 Chapter1.txt:現在提供されているコースは次のとおりです。 Chapter1.txt:Linuxプログラミングおよび開発トレーニング Chapter1.txt:エンタープライズITおよびオープンソース システム管理コース Chapter1.txt:オープンソース コンプライアンス コース。 Chapter1.txt:技術要件やその他のロジスティクスなど、The Linux Foundationが提供する特定のコースの詳細を入手するには、Linux Foundationトレーニング ウェブサイトにアクセスしてください。 Chapter1.txt:The Linux Foundation 認定 Chapter1.txt:The Linux Foundation認定資格は、スキルを渇望する求人市場で、自分を差別化する方法を提供します。オープンソース認証には、新しい革新的なアプローチを採用しました。これにより、他の同業者が敬意を持ち、雇用主が信頼する方法でスキルを披露できます。 Chapter1.txt:認定試験は、いつでもどこでも、どのコンピュータからでも受けることができます。 Chapter1.txt:認定試験はパフォーマンス ベースです。 Chapter1.txt:試験はディストリビューションに依存性はありません。 Chapter1.txt:試験は最新の内容で、今日のIT環境で実際に重要な知識とスキルをテストします。 Chapter1.txt:各カードをクリックして、The Linux Foundationとその共同プロジェクトが提供する認定について確認してください。 Chapter1.txt:Linux Foundation Certified Sysadmin (LFCS) Chapter1.txt:The Linux Foundation Certified System Administrator試験は、自らのLinuxシステム管理のスキル セットを検証したい受験者に最適です。 Chapter1.txt:Linux Foundation Certified Engineer (LFCE) Chapter1.txt:The Linux Foundation Certified Engineer試験は、より高度なレベルのLinux管理およびエンジニアリング スキルの実証を目指すLinuxエンジニアを対象としています。 Chapter1.txt:Cloud Foundry Certified Developer (CFCD) Chapter1.txt:Certified Cloud Foundry Developer試験は、Cloud Foundryプラットフォームを使用してアプリケーションをデプロイおよび管理するためのスキル セットを検証したい受験者に最適です。 Chapter1.txt:Certified Kubernetes Administrator (CKA) Chapter1.txt:Certified Kubernetes Administratorプログラムは、Kubernetes管理者の責任を遂行するスキル、知識、および能力をCKAが備えていることを保証します。 Chapter1.txt:Certified Kubernetes Application Developer (CKAD) Chapter1.txt:Certified Kubernetes Application Developer試験は、Kubernetesのクラウド ネイティブ アプリケーションを設計、構築、構成、および公開する能力を証明するための試験です。 Chapter1.txt:Certified Kubernetes Security Specialist (CKS) Chapter1.txt:Certified Kubernetes Security Specialist(CKS)プログラムは、ビルド、デプロイ、およびランタイム時のコンテナベースのアプリやKubernetesプラットフォームを保護する各種ベストプラクティスのスキル、知識、コンピテンシーを、CKS資格保持者が備えていることを保証します。 Chapter1.txt:Certified Hyperledger Fabric Administrator (CHFA) Chapter1.txt: Certified Hyperledger Fabric Administratorは、ネットワーク上のノードのインストール、構成、運用、管理、およびトラブルシューティングを行う機能など、商用展開用の安全なHyperledger Fabricネットワークを効果的に構築できます。 Chapter1.txt:Certified Hyperledger Fabric Developer (CHFD) Chapter1.txt:Certified Hyperledger Fabric Developer試験は、クライアント アプリケーションとスマート コントラクトを開発および保守する能力を証明できます。 Chapter1.txt:Certified Hyperledger Sawtooth Administrator (CHSA) Chapter1.txt:Certified Hyperledger Sawtooth Administratorは、ネットワーク上のノードのインストール、構成、運用、管理、トラブルシューティングなどを含む、商用展開用の安全なHyperledger Sawtoothネットワークを、効果的に構築できることを目的にしています。 Chapter1.txt:OpenJS Node.js Application Developer (JSNAD) Chapter1.txt:OpenJS Node.js Application Developer認定は、Node.jsでの作業に2年以上の経験がある Node.js開発者を対象しています。 Chapter1.txt:OpenJS Node.js Services Developer (JSNSD) Chapter1.txt:OpenJS Node.js Services Developer認定は、Node.jsを使用して RESTful サーバーおよびサービスを作成した経験が2年以上ある Node.js 開発者を対象としています。 Chapter1.txt:FinOps Certified Practitioner (FOCP) Chapter1.txt:FinOps認定は、クラウドの財務管理とコスト最適化のスキルを検証したい方に最適です。使用するクラウド プラットフォームは選びません。 Chapter1.txt:トレーニング/認定間のファイアウォール Chapter1.txt:The Linux Foundationには、コースの提供と認定の2つのトレーニング部門があります。これらの2つの部門はファイアウォールで分離されています。 Chapter1.txt:The Linux Foundationトレーニング部門のカリキュラム開発および保守部門は、認定試験の開発、管理、採点に対して、直接的に関わることはありません。 Chapter1.txt:この自発的なファイアウォールを適用することで、受験者の認定試験合格を支援するためのサードパーティのトレーニング資料を、独立した組織や企業が開発できるようになります。 Chapter1.txt:さらに、成功するために知っておくべき秘密の「コツ」(または一般的な秘密)がないことを保証します。 Chapter1.txt:The Linux Foundationは、テストを教える以上のことを行う非常に濃密なコース セットを開発することもできますが、オープンソース システム管理で成功するために、参加者が習得する必要のある多くの分野について幅広い知識を身に付けるコースも提供します。 Chapter1.txt:企業向けオープンソース ガイド Chapter1.txt:The Linux FoundationはTODOグループと協力して、以下のベスト プラクティスを活用する一連のガイドを作成しました。 Chapter1.txt:「Running an open source program office」、または Chapter1.txt:「Starting an open source project in an existing organization」です。 Chapter1.txt:企業向けのオープンソース ガイドは無料でオンラインで入手できます。 Chapter10.txt:はじめに Chapter10.txt:第10章はじめに Chapter10.txt:Debianベースのシステムでは、プログラムのAPT(Advanced Packaging Tool)は、dpkgプログラムを基とした高度なインテリジェント サービスを提供します。Red Hatベースのシステムでのyumと同じ役割を果たします。主なユーティリティはaptとapt-cacheです。パッケージのインストール、更新、削除時に、依存関係を自動的に解決できます。外部ソフトウェア リポジトリにアクセスして同期を取り、必要に応じてソフトウェアを取得してインストールします。 Chapter10.txt:学習目標 Chapter10.txt:この章の終わりまでに、次のことができるようになります。 Chapter10.txt:APTとは何かを説明できます。 Chapter10.txt:パッケージ クエリを実行できます。 Chapter10.txt:パッケージに関するシステム情報をきちんと整理できます。 Chapter10.txt:apt を使用してパッケージをインストール、削除、アップグレードできます。 Chapter10.txt:APT Chapter10.txt:APTとは何か? Chapter10.txt:Debianベースのシステムでは、プログラムのAPT(Advanced Packaging Tool)は、dpkgプログラムを基とした高度なインテリジェント サービスを提供します。Red Hatベースのシステムでのyumと同じ役割を果たします。主なユーティリティはaptとapt-cacheです。パッケージのインストール、更新、削除時に、依存関係を自動的に解決できます。外部ソフトウェア リポジトリにアクセスして同期を取り、必要に応じてソフトウェアを取得してインストールします。 Chapter10.txt:APTシステムは、ファイルの拡張子が.debであるDebianパッケージと連携して動作します。本質的な部分を変更せずにDebianパッケージング システムを採用している、Debianから派生したディストリビューション(UbuntuやLinux Mintを含む)は多数あります。実際、複数のDebianベースのLinuxディストリビューションが、1つのリポジトリを使用することは珍しくありません。 Chapter10.txt:繰り返しになりますが、SynapticやUbuntu Software Centerのような(コンピュータ上の)グラフィカル インターフェイス、もしくはaptitudeなどのAPTの古いフロントエンドは、ここでは扱いません。 Chapter10.txt:apt Chapter10.txt:aptは、パッケージ管理用の主要なAPTコマンド ライン ツールです。個々のパッケージやシステム全体のインストール、管理、アップグレードに使用できます。ディストリビューションを完全に新しいリリースにアップグレードすることもできますが、これは難しい作業です。 Chapter10.txt:aptがrpmファイルを操作できるようにする(不完全な)拡張機能もあります。 Chapter10.txt:yumやzypperと同様に、複数のリモート リポジトリで動作します。 Chapter10.txt:💡 Chapter10.txt:すべてのインタラクティブな操作を行うために、apt-getを使用する必要はなくなりました。aptという短い名前を使用できます。ただし、apt-getの使用は習慣化されており、スクリプトで使用されています。 Chapter10.txt:優れたインターネット ベースのリソースは、Debianパッケージのウェブ ページとUbuntuパッケージのウェブ ページにあります。これらのデータベースを使用すれば、パッケージを検索し、その内容を調べてダウンロードできます。 Chapter10.txt:クエリ Chapter10.txt:クエリは、apt-cacheまたはapt-fileユーティリティを使用します。最初にapt-fileをインストールし、そのデータベースを更新する必要があるかもしれません。 Chapter10.txt:インストールする場合: Chapter10.txt:$ sudo apt install apt-file Chapter10.txt:$ sudo apt-file update Chapter10.txt:リポジトリでapache2という名前のパッケージを検索する場合: Chapter10.txt:$ apt-cache search apache2 Chapter10.txt:apache2パッケージに関する基本情報を表示する場合: Chapter10.txt:$ apt-cache show apache2 Chapter10.txt:apache2パッケージに関する詳細情報を表示する場合: Chapter10.txt:$ apt-cache showpkg apache2 Chapter10.txt:apache2のすべての依存パッケージをリストする場合: Chapter10.txt:$ apt-cache depends apache2 Chapter10.txt:リポジトリでapache2.confという名前のファイルを検索する場合: Chapter10.txt:$ apt-file search apache2.conf Chapter10.txt:apache2パッケージ内のすべてのファイルをリストする場合: Chapter10.txt:$ apt-file list apache2 Chapter10.txt:aptを使用したパッケージのインストール/削除/アップグレード Chapter10.txt:aptプログラムは、パッケージのインストール、削除、アップグレードを行います。 Chapter10.txt:パッケージ インデックス ファイルをリポジトリ ソースと同期させます。利用可能なパッケージのインデックスを、/etc/apt/sources.listで指定された場所からフェッチする場合: Chapter10.txt:$ sudo apt update Chapter10.txt:新しいパッケージをインストールする、または既にインストールされているパッケージを更新する場合: Chapter10.txt:$ sudo apt install [package] Chapter10.txt:構成ファイルを削除せずにパッケージをシステムから削除する場合: Chapter10.txt:$ sudo apt remove [package] Chapter10.txt:システムからパッケージとその構成ファイルを削除する場合: Chapter10.txt:$ sudo apt --purge remove [package] Chapter10.txt:既にインストールされているパッケージに利用可能なすべての更新を実施する場合: Chapter10.txt:$ sudo apt upgrade Chapter10.txt:徹底的に依存関係の解決を行っていくつかの古いパッケージを削除して新しい依存関係をインストールする、スマート アップグレードを実行する場合: Chapter10.txt:$ sudo apt dist-upgrade Chapter10.txt:よく誤解されるようですが、これは Linuxディストリビューションを新しいバージョンに更新するわけではありません。 Chapter10.txt:💡 Chapter10.txt:update引数で、リポジトリの更新とパッケージのアップグレードの両方を行うyumとは違って、アップグレードする前にリポジトリを更新を行う必要があることに注意してください。Debianベースのシステムでは、これによりyumユーザーがよく混乱します。 Chapter10.txt:古いLinuxカーネル バージョンなど、不要になったパッケージをすべて削除する場合: Chapter10.txt:$ sudo apt autoremove Chapter10.txt:キャッシュ ファイルとインストールされているアーカイブ パッケージ ファイルをすべて削除する場合: Chapter10.txt:$ sudo apt clean Chapter10.txt:これにより、多くの領域を節約できます。 Chapter10.txt:さらに、最新の情報をシステムに反映する新しいapt [update | upgrade]コマンドは、このcleanを使用することにより、障害を引き起こすことなく/var/cache/apt*に保存されるデータ量を減らすことができます。 Chapter10.txt:デモ:Ubuntu 17.04でのグラフィカル パッケージ管理の使用方法 Chapter10.txt:このビデオでは、Ubuntu 17.04でグラフィカル パッケージ管理を使用する方法を示します。 Chapter10.txt:演習 Chapter10.txt:演習の要件 Chapter10.txt:本演習を実行するには、Debian、Ubuntu、inux Mint など、Debian ベースのシステムにアクセスできることが必要です。 Chapter10.txt:課題 10.1:APTの基本コマンド Chapter10.txt:🚩 Chapter10.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter10.txt:Exercise 10.1: Basic APT Commands Chapter10.txt:1. Check to see if there are any available updates for your system. Chapter10.txt:2. List all installed kernel-related packages, and list all installed or available ones. Chapter10.txt:3. Install the apache2-dev package, or anything else you might not have installed yet. Doing a simple: Chapter10.txt:$ apt-cache pkgnames Chapter10.txt:will let you see a complete list; you may want to give a wildcard argument to narrow the list. Chapter10.txt:Solution 10.1 Chapter10.txt:1. First synchronize the package index files with remote repositories: Chapter10.txt:$ sudo apt update Chapter10.txt:To actually upgrade: Chapter10.txt:$ sudo apt upgrade Chapter10.txt:$ sudo apt -u upgrade Chapter10.txt:(You can also usedist-upgradeas discussed earlier.) Only the first form will try to do the installations. Chapter10.txt:2.$ apt-cache search "kernel" Chapter10.txt:$ apt-cache search -n "kernel" Chapter10.txt:$ apt-cache pkgnames "kernel" Chapter10.txt:The second and third forms only find packages that havekernelin their name. Chapter10.txt:$ dpkg --get-selections "*kernel*" Chapter10.txt:to get only installed packages. Note that on Debian-based systems you probably should use linux not kernel for kernel-related packages as they don’t usually have kernel in their name. Chapter10.txt:3.$ sudo apt install apache2-dev Chapter10.txt:課題 10.2: パッケージの情報を参照するために apt コマンドを使う Chapter10.txt:🚩 Chapter10.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter10.txt:Exercise 10.2: Using APT to Find Information About a Package Chapter10.txt:Usingapt-cacheandapt(and notdpkg), find: Chapter10.txt:1. All packages that contain a reference tobashin their name or description. Chapter10.txt:2. Installed and availablebashpackages. Chapter10.txt:3. The package information forbash. Chapter10.txt:4. The dependencies for thebashpackage. Chapter10.txt:Try the commands you used above both asrootand as a regular user. Do you notice any difference? Chapter10.txt:Solution 10.2 Chapter10.txt:1.$ apt-cache search bash Chapter10.txt:2.$ apt-cache search -n bash Chapter10.txt:3.$ apt-cache show bash Chapter10.txt:4.$ apt-cache depends bash Chapter10.txt:$ apt-cache rdepends bash Chapter10.txt:課題 10.3: APT で、パッケージ グループを管理する Chapter10.txt:🚩 Chapter10.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter10.txt:Exercise 10.3: Managing Groups of Packages with APT Chapter10.txt:APT provides the ability to manage groups of packages, similarly to the way yum does it, through the use of metapackages. Chapter10.txt:These can be thought of asvirtual packages, that collect related packages that must be installed and removed as a group.To get a list of of available metapackages: Chapter10.txt:$ apt-cache search metapackage Chapter10.txt:bacula - network backup service - metapackage Chapter10.txt:bacula-client - network backup service - client metapackage Chapter10.txt:bacula-server - network backup service - server metapackage Chapter10.txt:cloud-utils - metapackage for installation of upstream cloud-utils source Chapter10.txt:compiz - OpenGL window and compositing manager Chapter10.txt:emacs - GNU Emacs editor (metapackage) Chapter10.txt:.... Chapter10.txt:You can then easily install them like regular single packages, as in: Chapter10.txt:$ sudo apt install bacula-client Chapter10.txt:Reading package lists... Done Chapter10.txt:Building dependency tree Chapter10.txt:Reading state information... Done Chapter10.txt:The following extra packages will be installed: Chapter10.txt:bacula-common bacula-console bacula-fd bacula-traymonitor Chapter10.txt:Suggested packages: Chapter10.txt:bacula-doc kde gnome-desktop-environment Chapter10.txt:The following NEW packages will be installed: Chapter10.txt:bacula-client bacula-common bacula-console bacula-fd bacula-traymonitor 0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded. Chapter10.txt:Need to get 742 kB of archives. Chapter10.txt:After this operation, 1,965 kB of additional disk space will be used. Chapter10.txt:Do you want to continue?[Y/n] Chapter10.txt:Select an uninstalled metapackage and then remove it. Chapter10.txt:知識チェック Chapter10.txt:「第10章 - APT」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter10.txt:クイズ開始 Chapter10.txt:問題 10.1 Chapter10.txt:apt install は、新しいパッケージをインストールするために使用されます。True or False? Chapter10.txt:A. True Chapter10.txt:B. False Chapter10.txt:問題 10.2 Chapter10.txt:apt updateは、パッケージを引数として指定できません。True or False? Chapter10.txt:A. True Chapter10.txt:B. False Chapter10.txt:問題 10.3 Chapter10.txt:apt-file find は、引数として指定されたファイルを提供するパッケージの検索には使用できません。True or False? Chapter10.txt:A. True Chapter10.txt:B. False Chapter10.txt:問題 10.4 Chapter10.txt:apt-cache searchは、パッケージ名と短い説明で検索ができます。True or False? Chapter10.txt:A. True Chapter10.txt:B. False Chapter11.txt:システム監視 Chapter11.txt:はじめに Chapter11.txt:第11章はじめに Chapter11.txt:このビデオでは、この章で扱うコンテンツの概要を簡単に説明します。 Chapter11.txt:学習目標 Chapter11.txt:この章の終わりまでに、次のことができるようになります。 Chapter11.txt:インベントリの概念を理解し、利用可能なシステム監視ツールに精通します。 Chapter11.txt:システムがログ ファイルを保存する場所を理解し、最も重要なファイルを調べることができます。 Chapter11.txt:/procと/sys疑似ファイルシステムを使用できます。 Chapter11.txt:sarを使用して、システムの活動状態とパフォーマンス データを収集し、人が読める形でレポートを作成できます。 Chapter11.txt:システム監視 Chapter11.txt:利用可能な監視ツール Chapter11.txt:Linuxディストリビューションには、パフォーマンスとプロファイリングに関する多くの標準ツールが既にインストールされています。それらの多くは、他のUNIX系のオペレーティング システムでもよく知られていますが、一部はLinux専用に開発されました。 Chapter11.txt:これらのツールのほとんどは、マウントされた疑似ファイルシステム、特に/procと/sysを使用します。これらは両方とも、ファイルシステムとカーネル構成を調べる章ですでに説明しました。ここでも両方を見ていきます。 Chapter11.txt:詳細の多くを非表示にするグラフィカル システム モニタも多くありますが、このコースではコマンド ライン ツールのみを見て行きます。 Chapter11.txt:主なユーティリティのいくつかを詳細に見ていく前に、種類別に分類された以下の要約を見ることにします。一部のユーティリティには重複する範囲があることに注意してください。特定のトピックに焦点を当てたこの後の章でも、これらの表を再度取り上げます。 Chapter11.txt:表:プロセスと負荷の監視ユーティリティ Chapter11.txt:ユーティリティ 内容 パッケージ Chapter11.txt:top 動的に更新、プロセスの活動状況の表示 procps Chapter11.txt:uptime システムの稼働時間と平均負荷の表示  procps Chapter11.txt:ps  プロセスに関する詳細情報の表示  procps Chapter11.txt:pstree プロセスとその親子関係のツリー表示  psmisc(またはpstree) Chapter11.txt:mpstat マルチ プロセッサの使用量の表示 sysstat Chapter11.txt:iostat  CPU使用率とI/O統計情報の表示 sysstat Chapter11.txt:sar システムのアクティビティに関する情報の収集・表示 sysstat Chapter11.txt:numastat  NUMA(Non-Uniform Memory Architecture)に関する情報の表示 numactl Chapter11.txt:strace プロセスが行うすべてのシステムコールに関する情報を表示 strace Chapter11.txt: Chapter11.txt:表:メモリ監視ユーティリティ Chapter11.txt:ユーティリティ 内容 パッケージ Chapter11.txt:free メモリ使用量の概要の表示 procps Chapter11.txt:vmstat  動的に更新される、仮想メモリ統計とブロックI/Oの詳細情報  procps Chapter11.txt:pmap プロセスのメモリ マップの表示 procps Chapter11.txt: Chapter11.txt:表:I/O 監視ユーティリティ Chapter11.txt:ユーティリティ 内容 パッケージ Chapter11.txt:iostat  CPU使用率とI/O統計情報の表示 sysstat Chapter11.txt:sar システムのアクティビティに関する情報の収集・表示 sysstat Chapter11.txt:vmstat  動的に更新される、仮想メモリ統計とブロックI/Oの詳細情報  procps Chapter11.txt: Chapter11.txt:表:ネットワーク監視ユーティリティ Chapter11.txt:ユーティリティ 内容 パッケージ Chapter11.txt:netstat ネットワーク関連のさまざまな統計情報の表示 netstat Chapter11.txt:iptraf ネットワーク インターフェイスに関する情報の収集 iptraf Chapter11.txt:tcpdump ネットワーク パケットとトラフィックの詳細な分析情報の表示 tcpdump Chapter11.txt:wireshark 詳細なネットワーク トラフィック分析の表示 wireshark Chapter11.txt:ログ ファイル Chapter11.txt:システム ログ ファイルは、監視とトラブルシューティングに不可欠です。Linuxでは、これらのメッセージを/var/logの下のさまざまなファイルで見ることができます。正確な名前はLinuxディストリビューションによって異なります。 Chapter11.txt:メッセージ処理の基本的な制御は、多くのUNIX系のオペレーティング システムに共通の、syslogd(最近のシステムでは通常rsyslogd)デーモンによって制御されます。新しいsystemdベースのシステムでは、syslogdの代わりにjournalctlを使用できますが、通常はsyslogdを保持しておいてjournalctlと連携します。 Chapter11.txt:重要なメッセージは、ログ ファイルだけでなく、システム コンソール ウィンドウにも送信されます。 Xを実行していない場合、または仮想端末にいる場合は、そこに直接表示されます。さらに、これらのメッセージは/var/log/messages(またはUbuntuの/var/log/syslog)にコピーされますが、Xを実行している場合は、表示するためにいくつかの手順を実行する必要があります。 Chapter11.txt:次を実行すると、新しいメッセージを新しい行に継続的に表示できます。 Chapter11.txt:$ sudo tail -f /var/log/messages or /var/log/syslog Chapter11.txt:または Chapter11.txt:$ dmesg -w Chapter11.txt:これらはカーネル関連のメッセージのみを表示します。 Chapter11.txt:ターミナル ウィンドウでログ メッセージを表示する以外に、グラフィカル インターフェイスを使用してログ メッセージを表示できます。 Chapter11.txt:GNOMEデスクトップでは、デスクトップ メニューのSystem -> Administration -> System Log、またはApplications -> System Tools -> Log File Viewerをクリックしても、メッセージにアクセスできます。他のデスクトップにも同様のリンクがあります。 Chapter11.txt:表:/var/logの下にある重要なログ ファイル Chapter11.txt:ファイル  内容 Chapter11.txt:boot.log システム ブート メッセージ Chapter11.txt:dmesg ブート以降に保存されるカーネル メッセージ(カーネル メッセージ バッファの現在の内容を表示するには、dmesg と入力します。 Chapter11.txt:messagesまたはsyslog すべて重要なシステム メッセージ Chapter11.txt:secure  セキュリティ関連のメッセージ Chapter11.txt: Chapter11.txt:ログ ファイルの肥大化をふせぐために、logrotateプログラムが定期的に実行されます。(デフォルトでは)ログ ファイルの4世代のコピーを保持します(オプションで圧縮)。logrotateの実行内容は/etc/logrotate.confに設定されています。 Chapter11.txt:疑似ファイルシステム:/procと/sys Chapter11.txt:疑似ファイルシステムである/procと/sysには、システムに関する多くの情報が含まれています。さらに、これらのディレクトリ ツリーのエントリの多くは書き込み可能であり、システムの動作を変更するために使用できます。ほとんどの場合、これにはrootユーザー権限が必要です。 Chapter11.txt:これらはすべてメモリ内に存在する疑似ファイルシステムです。システムが実行されていないときにディスク パーティションを見ると、マウント ポイントとして使用される空のディレクトリのみが存在します。 Chapter11.txt:さらに、表示される情報は、表示されるときにのみ収集されます。エントリを更新するための一定または定期的なポーリングはありません。 Chapter11.txt:/proc疑似ファイルシステムには長い歴史があります。他のUNIX系オペレーティング システムにルーツがあり、元々、システム上のプロセスに関する情報を表示するために開発されました。各プロセスは/procに独自のサブディレクトリを持ち、すべての重要プロセスの特性をここで入手できます。 Chapter11.txt:時がたつにつれて、割り込み、メモリ、ネットワークなどのシステム プロパティに関する多くの情報が、多少無秩序な方法ではありますが、含まれるようになりました。今も広く使用されており、私たちも頻繁に参照しています。 Chapter11.txt:調整可能なシステム パラメータのほとんどは、/proc/sysをルートとするサブディレクトリ ツリーにあります。 Chapter11.txt:ls -lF /proc/sys コマンドと出力のスクリーンショット Chapter11.txt:これらの各サブディレクトリには、情報だけでなく(注意が必要ですが)調節用のノブが含まれています。 Chapter11.txt:abi/ Chapter11.txt:アプリケーションのバイナリ情報を含むファイルがあります。めったに使われません。 Chapter11.txt:debug/ Chapter11.txt:デバッグ パラメータがあります。現時点では、例外レポートの一部の制御のみです。 Chapter11.txt:dev/ Chapter11.txt:cdrom、scsi、raid、parportのサブディレクトリを含むデバイス パラメータがあります。 Chapter11.txt:fs/ Chapter11.txt:quota、使用されているファイル ハンドル、最大値、inode、ディレクトリ情報などを含むファイルシステム パラメータがあります。 Chapter11.txt:kernel/ Chapter11.txt:カーネル パラメータがあります。ここには多くの重要なエントリがあります。 Chapter11.txt:net/ Chapter11.txt:ネットワーク パラメータがあります。ipv4、netfilterなどのサブディレクトリがあります。 Chapter11.txt:vm/ Chapter11.txt:仮想メモリ パラメータがあります。ここには多くの重要なエントリがあります。 Chapter11.txt:パラメータの表示と変更は、簡単なコマンドで実行できます。たとえば、システムで許可されているスレッドの最大数は、以下を調べることで確認できます。 Chapter11.txt:$ ls -l /proc/sys/kernel/threads-max Chapter11.txt:$ cat /proc/sys/kernel/threads-max Chapter11.txt:129498 Chapter11.txt:そして、値を変更し、変更が有効になったことを確認するには以下を実行します。 Chapter11.txt:$ sudo bash -c 'echo 100000 > /proc/sys/kernel/threads-max' Chapter11.txt:$ cat /proc/sys/kernel/threads-max Chapter11.txt:100000 Chapter11.txt:sysctlでも、同じ効果を得られることを思い出してください。 Chapter11.txt:$ sudo sysctl kernel.threads-max=100000 Chapter11.txt:値の表示は通常のユーザーでも実行できますが、値を変更するにはスーパーユーザー特権が必要です。 Chapter11.txt:/sys疑似ファイルシステムは、統合デバイス モデルの不可欠な部分です。概念的にはデバイス ツリーに基づいており、それをたどってバス、デバイスなどの情報を見ることができます。また、カーネル モジュールのように、デバイスに厳密に関連する場合とそうでない場合がある情報も含まれています。 Chapter11.txt:/procよりも構造が厳密に定義されています。ほとんどのエントリには1行のテキストしか含まれていませんが、例外があります。カーネルのバージョン間で内容が異なることがわかっている場合は、複数のエントリがあります。そのため、インターフェイスの不変性の向上が望まれています。 Chapter11.txt:/procと/sysの両方に表示エントリがあるシステム プロパティがあります。広く使用されているシステム ユーティリティとの互換性のために、古いフォームは徐々に廃止されています。 Chapter11.txt:sysfs仮想ファイルシステムのサポートは最新のすべてのカーネルに組み込まれており、/sysの下にマウントする必要があります。ただし、統合デバイス モデルでは、機能させるためにsysfsをマウントする必要はありません。 Chapter11.txt:カーネル3.18を使用して何があるかを見てみましょう。このファイルシステムのレイアウトは、変化する可能性があるので注意してください。トップ レベルのディレクトリで以下のコマンドを実行すると、 Chapter11.txt:$ ls -F /sys Chapter11.txt:block/ bus/ class/ dev/ devices/ firmware/ fs/ kernel/ module/ power/ Chapter11.txt:基本的なデバイス ツリーが表示されます。デバイス モデルsysfsの実装には、厳密にはハードウェアに関連していない情報も含まれます。 Chapter11.txt:ネットワーク デバイスを調べるには以下のコマンドを実行します。 Chapter11.txt:ls -lF /sys/class/net Chapter11.txt:ls -lF /sys/class/net コマンドと出力のスクリーンショット Chapter11.txt:イーサネット カードを見ると、スクリーンショットが表示されます。sysfsは、行ごとに1つのテキスト値を持つことになっていますが、これは厳密に強制されてはいません。 Chapter11.txt:ls -F /sys/class/net/ens33/ コマンドと出力のスクリーンショット Chapter11.txt:最初のネットワーク インターフェイスの基盤となるデバイスとドライバは、デバイスと(間もなく表示される)ドライバ のシンボリックリンクを通して追跡できます。このスクリーンショットでは、最初のイーサネット カードに対応するディレクトリに何があるかを示しています。 Chapter11.txt:sysfsで利用できるすべての情報を確認するには、それを調べる必要があります。 Chapter11.txt:sar Chapter11.txt:sar は、Systems Activity Reporterの略です。システムの稼働状況とパフォーマンス データを収集し、人が読める形のレポートを作成するための汎用ツールです。 Chapter11.txt:Linuxシステムでは、sarのバックエンドはsadc(system activity data collector)であり、実際に統計情報を蓄積します。/var/log/saディレクトリに情報を保存します。デフォルトの実行頻度は毎日ですが、変更可能です。データ収集はコマンド ラインから開始できます。通常の定期的な収集は/etc/cron.d/sysstatに保存されているcronジョブとして開始されます。 Chapter11.txt:そしてsarはこのデータを(デフォルトの場所から、または-fオプションで指定されたファイルから)読み込み、レポートを作成します。 Chapter11.txt:sarは次の構文で実行します。 Chapter11.txt:$ sar [ options ] [ interval ] [ count ] Chapter11.txt:上記では、レポートはinterval秒後に合計count回繰り返されます(デフォルトは1)。オプションがなければ、CPU使用率に関するレポートを提供します。 Chapter11.txt:sarの使用例 Chapter11.txt:表:sarのオプション Chapter11.txt:オプション  内容 Chapter11.txt:-A  ほぼすべての情報を取得 Chapter11.txt:-b   I/Oと転送速度の統計情報の取得(iostatと同じ) Chapter11.txt:-B  ページフォールトを含むページング統計情報の取得 Chapter11.txt:-d  ブロック デバイスのアクティビティ情報の取得(iostat -xと同じ) Chapter11.txt:-n  ネットワーク統計情報の取得 Chapter11.txt:-P   CPUごとの統計情報の取得(sar -P ALL 3と同じ) Chapter11.txt:-q  キューの長さ(実行キュー、プロセス、スレッド)の取得 Chapter11.txt:-r  メモリ使用の統計情報の取得 Chapter11.txt:-S スワップ使用の統計情報の取得 Chapter11.txt:-u   CPU使用率の取得(デフォルト) Chapter11.txt:-v   inodeとファイルおよびファイル ハンドルに関する統計情報の取得 Chapter11.txt:-w  コンテキスト スイッチの統計情報の取得 Chapter11.txt:-W  スワップ統計情報、1秒あたりに入出力したページ情報の取得 Chapter11.txt:-f   -oオプションで作成された指定ファイルから情報を抽出 Chapter11.txt:-o  読み取り値を保存するファイルを指定。後で-fオプションで読み取る Chapter11.txt: Chapter11.txt:たとえば、ここのスクリーンショットでは、ページング統計情報を見て、そのあと、I/Oと転送速度の統計情報を見ています。 Chapter11.txt:ksarプログラムは、sarデータのグラフを生成するためのJavaベースのユーティリティです。ksarのウェブ ページからダウンロードできます。 Chapter11.txt:sarを使用してI/O統計情報を取得する Chapter11.txt:デモ:利用可能なシステム監視ツール Chapter11.txt:このビデオは、いくつかのシステム監視ツールの使用方法を示しています。 Chapter11.txt:演習 Chapter11.txt:課題 11.1: stress または stress-ng を使う Chapter11.txt:🚩 Chapter11.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter11.txt:Exercise 11.1: Using stress or stress-ng Chapter11.txt:stress is a C language program written by Amos Waterland at the University of Oklahoma, licensed under the GPL v2. It isdesigned to place a configurable amount of stress by generating various kinds of workloads on the system. Chapter11.txt:stress-ng is essentially an enhanced version of stress, which respects its symptoms and options. It is actively maintained: see https://wiki.ubuntu.com/Kernel/Reference/stress-ng Chapter11.txt:All major distributions should have stress-ng in their packaging systems However, for RHEL/CentOS it needs to be obtained from the EPEL repository. As of this writing there is no package in the EPEL 8 repository, but you can install the one from EPEL 7 without a problem. Chapter11.txt:Installing from Source Chapter11.txt:If you are lucky you can installstressorstress-ngdirectly from your distribution’s packaging system. Chapter11.txt:Otherwise, the source for stress-ng can be obtained using git from https://kernel.ubuntu.com/git/cking/stress-ng.git/. (Or you can download a tarball and use that.)To download, compile, and install: Chapter11.txt:$ git clone git://kernel.ubuntu.com/cking/stress-ng.git Chapter11.txt:$ cd stress-ng$ make Chapter11.txt:$ sudo make install Chapter11.txt:Once installed, you can do: Chapter11.txt:$ stress-ng --help Chapter11.txt:for a quick list of options, or Chapter11.txt:$ info stress-ng Chapter11.txt:for more detailed documentation. Chapter11.txt:As an example, the command: Chapter11.txt:$ stress-ng -c 8 -i 4 -m 6 -t 20s Chapter11.txt:will: Chapter11.txt:• Fork off 8 CPU-intensive processes, each spinning on asqrt()calculation. Chapter11.txt:• Fork off 4 I/O-intensive processes, each spinning onsync(). Chapter11.txt:• Fork off 6 memory-intensive processes, each spinning on malloc(), allocating 256 MB by default. The size can bechanged as in --vm-bytes 128M. Chapter11.txt:• Run the stress test for 20 seconds. Chapter11.txt:After installing stress-ng, you may want to start up your system’s graphical system monitor, which you can find on your application menu, or run from the command line, which is probably gnome-system-monitor or ksysguard. Chapter11.txt:Now begin to put stress on the system. The exact numbers you use will depend on your system’s resources, such as the number of CPU’s and RAM size. Chapter11.txt:For example, doing Chapter11.txt:$ stress-ng -m 4 -t 20s Chapter11.txt:puts only a memory stressor on the system. Chapter11.txt:Play with combinations of the switches and see how they impact each other. You may find the stress-ng program useful tosimulate various high load conditions. Chapter11.txt:知識チェック Chapter11.txt:「第11章 - システム監視」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter11.txt:クイズ開始 Chapter11.txt:問題 11.1 Chapter11.txt:プロセスがどのようにオペレーティング システムにリクエストを行っているかを表示する、トレースとデバッグのツールは次のうちどれですか? Chapter11.txt:A. netstat Chapter11.txt:B. top Chapter11.txt:C. mpstat Chapter11.txt:D. strace Chapter11.txt:問題 11.2 Chapter11.txt:システムが実行している時間を表示するツールは、次のうちどれですか? Chapter11.txt:A. strace Chapter11.txt:B. uptime Chapter11.txt:C. tcpdump Chapter11.txt:D. numastat Chapter11.txt:質問11.3 Chapter11.txt:プロセスの活動をインタラクティブにモニタするツールは次のうちどれですか? Chapter11.txt:A. top Chapter11.txt:B. wireshark Chapter11.txt:C. ps Chapter11.txt:D. vmstat Chapter11.txt:問題 11.4 Chapter11.txt:メモリ使用量の概要を表示するツールは、次のうちどれですか。 Chapter11.txt:A. uptime Chapter11.txt:B. sar Chapter11.txt:C. free Chapter11.txt:D. pmap Chapter11.txt:問題 11.5 Chapter11.txt:/procでプロセスに関連しない情報は何ですか? Chapter11.txt:A. カーネル コマンド ライン Chapter11.txt:B. CPUモデル情報 Chapter11.txt:C. メモリ使用率の統計 Chapter11.txt:D. ディスク パーティション情報 Chapter11.txt:E. 上記すべて Chapter12.txt:プロセス監視 Chapter12.txt:はじめに Chapter12.txt:第12章はじめに Chapter12.txt:実行中(およびスリープ中)のプロセスを追跡することは、システム管理の重要なタスクです。psプログラムは、数十年にわたってUNIX系のオペレーティング システムの主要なツールでした。 Chapter12.txt:ただし、ユーティリティには複数のオペレーティング システムでさまざまに使用されてきた長い複雑な歴史があるため、混乱を招く組み合わせとなる多くのオプションが存在します。もう一つ信頼できるツールとしてtopがあり、システムの状態をインタラクティブに監視します。 Chapter12.txt:学習目標 Chapter12.txt:この章の終わりまでに、次のことができるようになります。 Chapter12.txt:psを使用して、プロセスに関連する特性と統計情報を表示できます。 Chapter12.txt:さまざまなps出力フィールドを識別し、ps出力をカスタマイズできます。 Chapter12.txt:pstreeを使用して、プロセスの親子関係とマルチスレッド アプリケーションを視覚的に説明できます。 Chapter12.txt:topを使ってシステムの負荷をインタラクティブに表示できます。 Chapter12.txt:プロセス監視 Chapter12.txt:プロセス監視ツール Chapter12.txt:このセクションでは、プロセスの監視について集中して述べます。Linux管理者は、プロセス監視にps、pstree、topなどの多くのユーティリティを使用します。これらはすべて、 UNIX系のオペレーティング システムで長く使われてきたものです。 Chapter12.txt:繰り返しになりますが、プロセス監視の主要ツールのリストを確認してみましょう。 Chapter12.txt:表:プロセスと負荷の監視ユーティリティ Chapter12.txt:ユーティリティ 内容 パッケージ Chapter12.txt:top 動的に更新、プロセスの活動状況の表示 procps Chapter12.txt:uptime システムの稼働時間と平均負荷の表示  procps Chapter12.txt:ps  プロセスに関する詳細情報の表示  procps Chapter12.txt:pstree プロセスとその親子関係のツリー表示  psmisc(またはpstree) Chapter12.txt:mpstat マルチ プロセッサの使用量の表示 sysstat Chapter12.txt:iostat  CPU使用率とI/O統計情報の表示 sysstat Chapter12.txt:sar システムのアクティビティに関する情報の収集・表示 sysstat Chapter12.txt:numastat  NUMA(Non-Uniform Memory Architecture)に関する情報の表示 numactl Chapter12.txt:strace プロセスが行うすべてのシステムコールに関する情報を表示 strace Chapter12.txt: Chapter12.txt:/procファイルシステムは、システム上のプロセスや他のアイテムの監視にも役立ちます。 Chapter12.txt:psを使用したプロセス状態の表示 Chapter12.txt:psは、プロセスに関連付けられた特性と統計情報を表示する、有用なツールです。これらの情報はすべて、プロセスに関連付けられた/procディレクトリから収集されます。 Chapter12.txt:一般的なオプションの選択肢は次のとおりです。 Chapter12.txt:$ ps aux Chapter12.txt:$ ps -elf Chapter12.txt:$ ps -eL Chapter12.txt:$ ps -C "bash" Chapter12.txt:このコマンド ユーティリティは、すべてのUNIX系のオペレーティング システムに異なる形で存在します。その多様性はLinuxバージョンのpsの雑多なオプションに反映されており、次の3つのカテゴリに分類されます。 Chapter12.txt:UNIXオプション:前に「-」を付ける必要があり、グループ化ができます。 Chapter12.txt:BSDオプション:前に「-」を付けることはできません。グループ化はできます。 Chapter12.txt:GNUの長いオプション それぞれの前に「--」が必要です。 Chapter12.txt:これらのオプションがすべてある場合、かなり混乱します。ほとんどのシステム管理者は、日常的な使用で1つか2つの標準的な組み合わせを使用します。 Chapter12.txt:提供されているスクリーンショットで、BSDオプションの一般的な使用法を確認できます。auxオプションはすべてのプロセスを示します。角括弧で囲まれたコマンド( [ksoftirqd/0] など)は、すべてカーネル内に存在するスレッドです。各CPUに1つ存在する場合には、コマンドの後には実行されているCPUを示す整数が続きます。 Chapter12.txt:BSDオプションでのpsの使用例 Chapter12.txt:上記の例のほとんどのフィールドは説明しなくてもわかると思います。念のため、以下は説明します。 Chapter12.txt:VSZはプロセスの仮想メモリ サイズで、単位はKBです。 Chapter12.txt:RSSは常駐セット サイズです。タスクが使用しているスワップされていない物理メモリで、単位はKBです。 Chapter12.txt:STATはプロセスの状態を表します。この例では、スリープ中はSのみ、実行中はRのみが表示されます。(プロセスが存在する場合)状態を示す文字は次のとおりです。 Chapter12.txt:- < 優先度が高い(niceではない) Chapter12.txt:- N  優先度が低い(nice) Chapter12.txt:- L  ページをメモリにロックする Chapter12.txt:- s  セッション リーダー Chapter12.txt:- l  マルチスレッドの場合(プロセス生成中) Chapter12.txt:- + フォアグラウンド プロセス グループに属している Chapter12.txt:fオプションを追加すると、どのような関係でプロセスがつながっているかが示されます。 Chapter12.txt:$ ps auxf Chapter12.txt:ps auxf コマンドとその出力のスクリーンショット Chapter12.txt:ps出力のカスタマイズの例 Chapter12.txt:-oオプションの後に、コンマで区切られたフィールド識別子のリストを指定すると、カスタマイズされたpsフィールドのリストを出力できます。 Chapter12.txt:pid:プロセスID番号 Chapter12.txt:uid:ユーザーID番号 Chapter12.txt:cmd:すべての引数を指定したコマンド Chapter12.txt:cputime:CPU時間の累積 Chapter12.txt:pmem:マシン上の物理メモリに対するプロセスの利用サイズの比率。パーセントで表示。 Chapter12.txt:以下のスクリーンショットでpsの例を示します。他の多くの出力オプションについては、ps manページを参照してください。 Chapter12.txt:ps出力のカスタマイズの例 Chapter12.txt:提供されているスクリーンショットで、UNIXオプション形式の一般的な使用法を確認できます。親プロセスID(PPID)とnice値(NI)が表示されていることに注目してください。この例(RHEL 7から取得し、systemdを使用)で、多くのプロセスがPPID=2を示すことがわかります。これは、親プロセスが終了したときに内部カーネル プロセスkthreaddが子を引き継ぐように設計されており、新たな親になっていることを示しています。古いカーネルとシステムでは、sbin/initにPPID=1が表示されますが、実際には同じことが起こっています。 Chapter12.txt:UNIXオプションでのpsの使用 Chapter12.txt:UNIX形式の一般的な選択オプションは次のとおりです。 Chapter12.txt:-Aまたは-e Chapter12.txt:すべてのプロセスを選択 Chapter12.txt:-N Chapter12.txt:指定された条件を満たさないプロセスのみを選択 (選択の逆の意味)。 Chapter12.txt:-C Chapter12.txt:コマンド名で選択 Chapter12.txt:-G Chapter12.txt:実際のグループIDで選択(グループ名もサポート) Chapter12.txt:-U Chapter12.txt:実際のユーザーIDで選択(ユーザー名もサポート) Chapter12.txt:pstreeの使用方法 Chapter12.txt:pstreeは、プロセスの親子関係とマルチスレッド アプリケーションについて、視覚的に示します。 Chapter12.txt:$ pstree -aAp 2408 Chapter12.txt:bash,2408 Chapter12.txt:|-emacs,24998 pmonitor.tex Chapter12.txt:| |-{emacs},25002 Chapter12.txt:| '-{emacs},25003 Chapter12.txt:|-evince,18036 LFS201-SLIDES.pdf Chapter12.txt:| |-{evince},18040 Chapter12.txt:| |-{evince},18046 Chapter12.txt:| '-{evince},18047 Chapter12.txt:オプションの説明については、pstreeのmanページを参照してください。上記では、pid=2408の情報表示を選択しています。 Chapter12.txt:子プロセスの1つ(evince, pid=18036)には、独自の子供が3つあることに注目してください。それを別の方法で確認するには以下を実行します。 Chapter12.txt:$ ls -l /proc/18036/タスク Chapter12.txt:total 0 Chapter12.txt:dr-xr-xr-x 5 coop coop 0 Sep 11 07:15 18036 Chapter12.txt:dr-xr-xr-x 5 coop coop 0 Sep 11 07:15 18040 Chapter12.txt:dr-xr-xr-x 5 coop coop 0 Sep 11 07:15 18046 Chapter12.txt:dr-xr-xr-x 5 coop coop 0 Sep 11 07:15 18047 Chapter12.txt:top Chapter12.txt:システムが何に時間を費やしているのかを知りたい場合、よく最初に使うツールがtopです。スクリーンショットは、引数なしでtopを使用したときの表示です。デフォルトでは、topは3.0秒ごとに自動的に更新されます。 Chapter12.txt:topは古くからあるユーティリティであり、多数のオプションがあります。特定のキーが押されたときに実行されるインタラクティブなコマンドもその1つです。たとえば、1を押すと各CPUが個別に表示され、iを押すとアクティブなプロセスのみが表示されます。両方を実行すると何が得られるかを、スクリーンショットで確認できます。 Chapter12.txt:topの使用例 Chapter12.txt:プロセスのソート方法と表示されるフィールドを細かく制御できます。デフォルトでの表示以外にも多くのものがあります。たとえば、hまたは?を押すと対話型コマンドで簡単なリストを表示し、qで終了します。 Chapter12.txt:さらに、kを押せばタスクを強制終了でき、rならばrenice(優先順位の変更)できます。 Chapter12.txt:man topを実行すると、構成の情報、オプション、対話型の情報に関する広範なドキュメントが提供されます。 Chapter12.txt:標準のtopプログラムに代わる人気のプログラムもあります。htop、ntop、atopなど、より視覚的なインターフェイスや追加情報を備えたものがあることを覚えておいてください。また、ほとんどのLinuxディストリビューションには、グラフィカル システム モニタ(gnome-system-monitorやksysguardなど)があり、topと似た表示ウィンドウがあります。 Chapter12.txt:演習 Chapter12.txt:課題 12.1: プロセス Chapter12.txt:🚩 Chapter12.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter12.txt:Exercise 12.1: Processes Chapter12.txt:1. Run ps with the options -ef. Then run it again with the options aux. Note the differences in the output. Chapter12.txt:2. Run ps so that only the process ID, priority, nice value, and the process command line are displayed. Chapter12.txt:3. Start a new bash session by typing bash at the command line. Start another bash session using the nice command but this time giving it a nice value of 10. Chapter12.txt:4. Runpsas in step 2 to note the differences in priority and nice values. Note the process ID of the two bash sessions. Chapter12.txt:5. Change the nice value of one of the bash sessions to 15 using renice. Once again, observe the change in priority and nice values. Chapter12.txt:6. Run top and watch the output as it changes. Hit q to stop the program. Chapter12.txt:Solution 12.1 Chapter12.txt:1.$ ps -ef Chapter12.txt:$ ps aux Chapter12.txt:2.$ ps -o pid,pri,ni,cmd Chapter12.txt:PID PRI NI CMD Chapter12.txt:2389 19 0 bash Chapter12.txt:22079 19 0 ps -o pid,pri,ni,cmd Chapter12.txt:(Note: There should be no spaces between parameters.) Chapter12.txt:3.$ bash Chapter12.txt:$ nice -n 10 bash Chapter12.txt:$ ps -o pid,pri,ni,cmd Chapter12.txt:2389 19 0 bash Chapter12.txt:22115 19 0 bash Chapter12.txt:22171 9 10 bash Chapter12.txt:22227 9 10 ps -o pid,pri,ni,cmd Chapter12.txt:4.$ renice 15 -p 22171 Chapter12.txt:$ ps -o pid,pri,ni,cmdP Chapter12.txt:ID PRI NI CMD Chapter12.txt:2389 19 0 bash Chapter12.txt:22115 19 0 bash Chapter12.txt:22171 4 15 bash Chapter12.txt:22246 4 15 ps -o pid,pri,ni,cmd Chapter12.txt:5.$ top Chapter12.txt:課題 12.2: プロセスの状態を監視する Chapter12.txt:🚩 Chapter12.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter12.txt:Exercise 12.2: Monitoring Process States Chapter12.txt:1. Useddto start a background process which reads from/dev/urandomand writes to/dev/null. Chapter12.txt:2. Check the process state. What should it be? Chapter12.txt:3. Bring the process to the foreground using the fg command. Then hit Ctrl-Z. What does this do?Look at the process state again, what is it? Chapter12.txt:4. Run the jobs program. What does it tell you? Chapter12.txt:5. Bring the job back to the foreground, then terminate it usingkillfrom another window. Chapter12.txt:Solution 12.2 Chapter12.txt:1.$ dd if=/dev/urandom of=/dev/null & Chapter12.txt:2.$ ps -C dd -o pid,cmd,stat Chapter12.txt:25899 dd if=/dev/urandom of=/dev/ R Chapter12.txt:Should beSorR. Chapter12.txt:3.$ fg Chapter12.txt:$ ˆZ Chapter12.txt:$ ps -C dd -o pid,cmd,stat Chapter12.txt:PID CMD STAT Chapter12.txt:25899 dd if=/dev/urandom of=/dev/ T Chapter12.txt:State should beT. Chapter12.txt:4. Type the jobs command. What does it tell you? Chapter12.txt:$ jobs Chapter12.txt:[1]+ Stopped dd if=/dev/urandom of=/dev/null Chapter12.txt:5. Bring the job back to the foreground, then kill it using the kill command from another window. Chapter12.txt:$ fg Chapter12.txt:$ kill 25899 Chapter12.txt:知識チェック Chapter12.txt:「第12章 - プロセスの監視」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter12.txt:クイズ開始 Chapter12.txt:問題 12.1 Chapter12.txt:プロセス監視ツールは次のうちどれですか?当てはまるものをすべて選択してください。 Chapter12.txt:A. sysctl Chapter12.txt:B. ps Chapter12.txt:C. top Chapter12.txt:D. pstree Chapter12.txt:E. df Chapter12.txt:問題 12.2 Chapter12.txt:システム上の、すべてのプロセスの親プロセスID(PPID)を表示するコマンドはどれですか。 Chapter12.txt:A. ps aux Chapter12.txt:B. ps elf Chapter12.txt:C. ps-aux Chapter12.txt:D. ps -elf Chapter13.txt:メモリの監視と利用 Chapter13.txt:はじめに Chapter13.txt:第13章はじめに Chapter13.txt:時代が進むにつれ、システムはメモリ リソースを要求するようになりました。同時にRAMの価格が下がり、かつパフォーマンスが向上してきました。それでも、システム全体のパフォーマンスとスループットのボトルネックはメモリに関連していることがよくあります。CPUとI/Oサブシステムでは、メモリからのデータの取得やメモリへのデータの書き込みで待たされることがあります。メモリに関するシステムの動作監視、デバッグ、調整のため、多くのツールがあります。 Chapter13.txt:学習目標 Chapter13.txt:この章の終わりまでに、次のことができるようになります。 Chapter13.txt:メモリ チューニングに関する重要な(相互に関連する)検討事項とタスクを一覧表示できます。 Chapter13.txt:/proc/sys/vmのエントリの使用と、/proc/meminfoの解読ができます。 Chapter13.txt:vmstatを使用して、メモリ、ページング、I/O、プロセッサ アクティビティ、およびプロセスのメモリ消費に関する情報を表示できます。 Chapter13.txt:OOM-killerが処理を実行するタイミングを決定する方法を理解し、メモリを解放するために消去するプロセスを選択できます。 Chapter13.txt:メモリの監視と利用 Chapter13.txt:メモリ監視 Chapter13.txt:メモリ サブシステムのチューニングは複雑なプロセスになる場合があります。まず、メモリ使用量とI/Oスループットは本質的に関連していることに注目する必要があります。ほとんどの場合、メモリの大部分はディスク上のファイルのコンテンツをキャッシュするために使用されます。 Chapter13.txt:したがって、メモリ パラメータを変更すると、I/Oパフォーマンスに大きな影響を与える可能性があります。同様に、I/Oパラメータを変更すると、仮想メモリ サブシステムに大きな逆効果を及ぼす可能性があります。 Chapter13.txt:/proc/sys/vmのパラメータを調整するときのベスト プラクティスは、一度に1つずつ調整して効果を探すことです。重要な(相互に関連する)タスクは次のとおりです。 Chapter13.txt:フラッシング パラメータの制御。すなわち、ダーティにすることが許可されているページの数と、ディスクにフラッシュされる頻度の制御です。 Chapter13.txt:スワップ動作の制御。すなわち、他にバッキングストアがないためにスワップアウトする必要があるページとは対照的に、ファイルの内容を反映するページをメモリに残すことができる量の制御です。 Chapter13.txt:多くのプログラムは、特にコピーオンライト(COW)技術によって、要求するメモリの全量を必要としないため、メモリのオーバーコミットを許可する量を制御できます。 Chapter13.txt:メモリのチューニングは微妙な場合が多く、あるシステムの状況や負荷で効果があるものでも、他の状況では最適とはほど遠い場合があります。 Chapter13.txt:さらに、システム全体のパフォーマンスとスループットのボトルネックに、メモリが関連していることがよくあります。CPUとI/Oサブシステムでは、メモリからのデータの取得やメモリへのデータの書き込みで待たされることがあります。 Chapter13.txt:表:メモリ監視ユーティリティ Chapter13.txt:ユーティリティ 内容 パッケージ Chapter13.txt:free メモリ使用量の概要の表示 procps Chapter13.txt:vmstat  動的に更新される、仮想メモリ統計とブロックI/Oの詳細情報  procps Chapter13.txt:pmap プロセスのメモリ マップの表示 procps Chapter13.txt: Chapter13.txt:使用する最も簡単なツールはfreeです。 Chapter13.txt:c7:/tmp> free -m Chapter13.txt: total used free shared buff/cache available Chapter13.txt:Mem: 15901 2946 2080 9317 4502 12457 Chapter13.txt:Swap: 8095 0 8095 Chapter13.txt:/proc/meminfo Chapter13.txt:疑似ファイル/proc/meminfoには、メモリの使用方法に関する豊富な情報が含まれています。 Chapter13.txt:$ cat /proc/meminfo Chapter13.txt:MemTotal: 16275080 kB Chapter13.txt:MemFree: 3117968 kB Chapter13.txt:MemAvailable: 11260960 kB Chapter13.txt:Buffers: 1115028 kB Chapter13.txt:Cached: 7785520 kB Chapter13.txt:SwapCached: 87488 kB Chapter13.txt:Active: 6206148 kB Chapter13.txt:Inactive: 6132824 kB Chapter13.txt:Active(anon): 3086828 kB Chapter13.txt:Inactive(anon): 1124176 kB Chapter13.txt:Active(file): 3119320 kB Chapter13.txt:Inactive(file): 5008648 kB Chapter13.txt:Unevictable: 117096 kB Chapter13.txt:Mlocked: 32 kB Chapter13.txt:SwapTotal: 21580796 kB Chapter13.txt:SwapFree: 21471740 kB Chapter13.txt:Dirty: 264 kB Chapter13.txt:Writeback: 0 kB Chapter13.txt:AnonPages: 3189032 kB Chapter13.txt:Mapped: 986784 kB Chapter13.txt:Shmem: 772612 kB Chapter13.txt:KReclaimable: 351196 kB Chapter13.txt:Slab: 506264 kB Chapter13.txt:SReclaimable: 351196 kB Chapter13.txt:SUnreclaim: 155068 kB Chapter13.txt:KernelStack: 17760 kB Chapter13.txt:PageTables: 91492 kB Chapter13.txt:NFS_Unstable: 0 kB Chapter13.txt:Bounce: 0 kB Chapter13.txt:WritebackTmp: 0 kB Chapter13.txt:CommitLimit: 29718336 kB Chapter13.txt:Committed_AS: 13371052 kB Chapter13.txt:VmallocTotal: 34359738367 kB Chapter13.txt:VmallocUsed: 33060 kB Chapter13.txt:VmallocChunk: 0 kB Chapter13.txt:Percpu: 6080 kB Chapter13.txt:HardwareCorrupted: 0 kB Chapter13.txt:AnonHugePages: 815104 kB Chapter13.txt:ShmemHugePages: 0 kB Chapter13.txt:ShmemPmdMapped: 0 kB Chapter13.txt:CmaTotal: 0 kB Chapter13.txt:CmaFree: 0 kB Chapter13.txt:HugePages_Total: 0 Chapter13.txt:HugePages_Free: 0 Chapter13.txt:HugePages_Rsvd: 0 Chapter13.txt:HugePages_Surp: 0 Chapter13.txt:Hugepagesize: 2048 kB Chapter13.txt:Hugetlb: 0 kB Chapter13.txt:DirectMap4k: 249932 kB Chapter13.txt:DirectMap2M: 13254656 kB Chapter13.txt:DirectMap1G: 4194304 kB Chapter13.txt:下の表にリストされている内容を調べてエントリを理解できると、役に立ちます。 Chapter13.txt:テーブル:/proc/meminfoのエントリ Chapter13.txt:エントリ  意味 Chapter13.txt:MemTotal  使用可能なRAMの合計(物理メモリからカーネル予約メモリを引いたもの) Chapter13.txt:MemFree  低ゾーンおよび高ゾーンの両方の空きメモリ Chapter13.txt:Buffers  一時的なブロックI/Oストレージに使用されるメモリ Chapter13.txt:Cached   ページキャッシュ メモリ。主にファイルI/O用 Chapter13.txt:SwapCached  スワップ後も、まだスワップ ファイルにあるメモリ Chapter13.txt:Active  最近使用されたメモリ。最初に要求されることはありません。 Chapter13.txt:Inactive  最近使用されていないメモリ。再利用に適しています Chapter13.txt:Active(anon) 匿名(anonymous)ページとして利用しているメモリ Chapter13.txt:Inactive(anon) 匿名(anonymous)ページとして利用していないメモリ Chapter13.txt:Active(file) file-backed ページとして利用しているメモリ Chapter13.txt:Inactive(file) file-backed ページとして利用していないメモリ Chapter13.txt:Unevictable メモリからスワップしたり解放したりできないページ Chapter13.txt:Mlocked   メモリにロックされているページ Chapter13.txt:SwapTotal  使用可能なスワップ領域の総容量 Chapter13.txt:SwapFree  スワップ領域の空容量 Chapter13.txt:Dirty  ディスクに書き戻す必要があるメモリ Chapter13.txt:Writeback 積極的にディスクに書き戻されるメモリ Chapter13.txt:AnonPages  キャッシュ内のfile-backedではないページ Chapter13.txt:Mapped  ライブラリなどにマップするために使用しているメモリの総量 Chapter13.txt:Shmem  共有メモリに使用されるページ(容量) Chapter13.txt:Slab  スラブで使用されるメモリ Chapter13.txt:SReclaimable  スラブ内の再利用可能なキャッシュ メモリ Chapter13.txt:SUnreclaim  再利用できないスラブ内のメモリ Chapter13.txt:KernelStack  カーネル スタックで使用されるメモリ Chapter13.txt:PageTables  ページテーブル構造で使用されているメモリ Chapter13.txt:Bounce   ブロック デバイスのバウンス バッファに使用されるメモリ Chapter13.txt:WritebackTmp  ライトバック バッファ用にFUSEファイルシステムで使用されるメモリ Chapter13.txt:CommitLimit  オーバーコミットを含む、使用可能なメモリの合計 Chapter13.txt:Committed_AS  使用されているかどうかにかかわらず、現在割り当てられている合計メモリ Chapter13.txt:VmallocTotal   vmallocでの割り当てに使用できるカーネル内のメモリの合計 Chapter13.txt:VmallocUsed  vmallocの割り当てで実際に使用されるメモリ Chapter13.txt:VmallocChunk  利用可能な最大隣接のvmalloc領域 Chapter13.txt:HugePages_Total  hugeページ プールの合計数 Chapter13.txt:HugePages_Free  まだ割り当てられていないhugeページ Chapter13.txt:HugePages_Rsvd  予約されているが、まだ使用されていないhugeページ Chapter13.txt:HugePages_Surp  オーバーコミッションに使用される余剰のhugeページ Chapter13.txt:Hugepagesize   hugeページのサイズ Chapter13.txt: Chapter13.txt:今見ているエントリは、実行しているカーネルのバージョンによって異なることに注意してください。 Chapter13.txt:/proc/sys/vm Chapter13.txt:/proc/sys/vmディレクトリには、仮想メモリ システムを制御するための多くの調節用のノブ(つまみ)が含まれています。このディレクトリに表示される内容は、カーネルのバージョンによって多少異なります。ほとんどすべてのエントリは(root権限で)書き込み可能です。 Chapter13.txt:これらの値は、エントリに直接書き込むか、sysctlユーティリティを使用して変更できます。さらに、/etc/sysctl.confを変更することにより、ブート時に値を設定できます。 Chapter13.txt:カーネル ソース(またはディストリビューションのカーネル ドキュメント パッケージ)の/proc/sys/vmディレクトリの完全なドキュメントは、Documentation/sysctl/vm.txtにあります。 Chapter13.txt:テーブル:/proc/sys/vmのエントリ Chapter13.txt:エントリ  意味 Chapter13.txt:admin_reserve_kbytes  特権ユーザー用に予約されている空きメモリ量 Chapter13.txt:block_dump  ブロックI/Oのデバッグを有効にします Chapter13.txt:compact_memory  カーネルの設定でmemory compactionが有効になっている場合に、メモリ圧縮(基本的にはデフラグメンテーション)をオンまたはオフにします Chapter13.txt:dirty_background_bytes  コミットされていないページをディスクへの書き込むトリガーとなるダーティ メモリのしきい値 Chapter13.txt:dirty_background_ratio  カーネルがダーティ データのディスクへの書き込みを開始する、ダーティ ページの割合 Chapter13.txt:dirty_bytes  プロセスが自分で書き込みを開始する、ダーティ メモリの量 Chapter13.txt:dirty_expire_centisecs  ダーティ データの保存期間(単位は100分の1秒) Chapter13.txt:dirty_ratio  プロセスが自分でダーティ データの書き込みを開始するページの割合 Chapter13.txt:dirty_writeback_centisecs  ライトバック デーモンが起動する定期的な間隔。この値を0に設定すると、定期的な自動ライトバックはありません。 Chapter13.txt:drop_caches  echoで1を指定するとページ キャッシュを解放、2を指定するとdentryキャッシュと inodeキャッシュを解放、3を指定するとすべてを解放。クリーンなキャッシュ ページだけが解放されることに注意してください。syncを実行して、最初にダーティ ページを書き込んでおく必要があります。 Chapter13.txt:extfrag_threshold  カーネルがメモリを圧縮するタイミングを制御 Chapter13.txt:hugepages_treat_as_movable  hugeページの処理方法を切り替えるために使用 Chapter13.txt:hugetlb_shm_group   System Vのhugeページに使用できるグループIDを設定 Chapter13.txt:laptop_mode  ラップトップの電力を節約するために、いくつかの機能を制御可能 Chapter13.txt:legacy_va_layout  メモリ マッピングの表示方法に古いレイアウト(カーネル 2.4)を使用 Chapter13.txt:lowmen_reserve_ratio  そのメモリにしか存在できないページのために低いアドレスのメモリをどの程度確保するかを制御。つまり、代わりに高いアドレスのメモリに移動できるページは移動します。Hugeメモリを搭載した32ビット システムでのみ重要です。 Chapter13.txt:max_map_count  プロセスが持つことができるメモリ マップ領域の最大数。デフォルトは64K です。 Chapter13.txt:min_free_kbytes  各ゾーンで予約する必要がある最小空きメモリ Chapter13.txt:mmap_min_addr  ユーザー プロセスがメモリ マップできないアドレス空間の量。セキュリティ上の目的で使用され、偶発的なカーネルのnull参照がアプリケーションで使用する最初のページを上書きするバグを回避します。 Chapter13.txt:nr_hugepages  hugeページ プールの最小サイズ Chapter13.txt:nr_pdflush_hugepages  huge ページ プールの最大サイズ =nr_hugepages*nr_overcommit_hugepages Chapter13.txt:nr_pdflush_threads   pdflushスレッドの現在の数。書き込み不可です。 Chapter13.txt:oom_dump_tasks  有効にするとoom-killerが割り込んだときにダンプ情報が生成されます。 Chapter13.txt:oom_kill_allocating_task  設定すると、oom-killerは最適な方法を選択するのではなく、メモリ不足の状況を引き起こしたタスクを強制終了します。 Chapter13.txt:overcommit_kbytes   overcommit_ratioかこのエントリのいずれかを設定できます。両方は設定できません Chapter13.txt:overcommit_memory  値が0の場合、オーバーコミットは有効で、カーネルは空きメモリがどれだけ残っているかをみて割り当てます。1 の場合、オーバーコミットは有効で、実メモリ以上に割り当てを許可します。2の場合、オーバーコミットは無効です。 Chapter13.txt:overcommit_ratio  overcommit_memory = 2の場合に使用。メモリは、スワップの大きさ + RAMの内、このパーセンテージまで使うことができます。 Chapter13.txt:page-cluster  スワップするために一度に書き込むことができるページ数デフォルトは3です Chapter13.txt:panic_on_oom  メモリ不足の状況の時にシステムがクラッシュするようにします Chapter13.txt:percpu_pagelist_fraction ホットプラグ可能なCPUマシンの、各ゾーンのそれぞれのCPUに割り当てられたページの割合 Chapter13.txt:scan_unevictable_pages  ここに書き込まれると、システムはスキャンしてページを移動し、それらを再利用可能にします Chapter13.txt:stat_interval   vmstatによってvmの統計情報が更新される頻度(デフォルトは1秒) Chapter13.txt:swappiness  カーネルをどれだけ積極的にスワップすべきかの頻度 Chapter13.txt:user_reserve_kbytes   overcommit_memoryが2に設定されている場合、ユーザーがどれくらいメモリ リソースを使えるかを設定します。 Chapter13.txt:vfs_cache_pressure  カーネルがinodeとdentryキャッシュに使用されたメモリを、どの程度積極的に再利用する必要があるかを設定します。デフォルトは100です。 0の場合、このメモリはメモリ不足のため再利用はされません。 Chapter13.txt:vmstat Chapter13.txt:vmstat は、メモリ、ページング、I/O、プロセッサ アクティビティ、およびプロセスに関する情報を表示する多目的ツールです。多くのオプションがあります。コマンドの一般的な形式は次のとおりです。 Chapter13.txt:$ vmstat [options] [delay] [count] Chapter13.txt:遅延が秒単位で指定されている場合、レポートはその間隔でcount回繰り返されます。countが指定されない場合、vmstatは、Ctrl-Cなどのシグナルによって強制終了されるまで、統計を永久にレポートし続けます。 Chapter13.txt:他の引数が指定されていない場合、vmstatが表示する内容は、最初の行は最後に再起動された以降の平均を示し、2行目以降は指定された間隔でのアクティビティを示しています。 Chapter13.txt:$ vmstat 2 4 Chapter13.txt:vmstatの使用例 Chapter13.txt:オプション-S mが指定された場合、メモリ統計の単位はKBではなくMBになります。 Chapter13.txt:-aオプションを使用すると、vmstatはアクティブおよび非アクティブなメモリに関する情報を表示します。アクティブなメモリ ページとは、最近使用されたページです。クリーン(ディスクの内容が最新)の場合、またはダーティ(最終的にディスクにフラッシュする必要がある)の場合があります。対照的に、非アクティブなメモリ ページは最近使用されていずクリーンである可能性が高く、メモリに負荷がかかるとすぐに解放されます。 Chapter13.txt:$ vmstat -a 2 4 Chapter13.txt:メモリは、アクティブ リストと非アクティブ リストの間を行ったり来たりします。これは、新しく参照されたり、使用と使用の間隔が長くなったりするためです。 Chapter13.txt:vmstat -SM -a 2 4 コマンドとその出力のスクリーンショット Chapter13.txt:ディスクの統計情報の表を取得するには、-dオプションを使用します。 Chapter13.txt:vmstatを使用してディスク統計情報の表を取得 Chapter13.txt:1つのパーティションのみの簡単な統計情報を取得する場合は、-pオプションを使用します。 Chapter13.txt:1つのディスクでvmstatを使用する例 Chapter13.txt:OOM Killer Chapter13.txt:メモリの負荷に対処する最も簡単な方法は、空きメモリが使用可能である限りメモリ割り当てを成功させ、すべてのメモリを使い切ったら失敗することです。 Chapter13.txt:最も簡単な方法の2番目は、ディスク上のスワップ領域を使用して、常駐メモリの一部をコアから転送することです。この場合、(少なくとも理論上の)使用可能なメモリの合計は、実際のRAMにスワップ領域のサイズを加えたものになります。難しいのは、負荷が出たときにスワップアウトするメモリのページを把握することです。このアプローチでは、スワップ領域自体がいっぱいになった場合、新しいメモリを要求しても失敗する必要があります。 Chapter13.txt:ただし、Linuxは優れています。Linuxでは、システムにメモリをオーバーコミットすることを許可するため、RAMとスワップのサイズを超えるメモリ要求を許可できます。これは無謀に思えるかもしれませんが、(ほとんどではないにしても)多くのプロセスは、要求されたすべてのメモリを使用することはありません。 Chapter13.txt:例として、1MBのバッファを確保してもメモリの数ページのみを使用するプログラムがあります。また別の例として、子プロセスがforkされるたびに親のメモリ空間全体のコピーを受け取る場合があります。LinuxはCOW(書き込み時コピー)技術を使用するため、プロセスの1つがメモリを変更しない限り、実際のコピーを作成する必要はありません。ただし、カーネルではコピーを実行する可能性があると想定する必要があります。 Chapter13.txt:したがって、カーネルはメモリのオーバーコミットを許可しますが、ユーザー プロセス専用のページに対してのみです。カーネル内で使用されるページはスワップせずに、要求時に常に割り当てられます。 Chapter13.txt:/proc/sys/vm/overcommit_memoryの値を設定することにより、このオーバーコミッションを変更したり、無効にすることもできます。 Chapter13.txt:0:(デフォルト設定)オーバーコミットを許可しますが、明らかなオーバーコミットは拒否し、rootユーザーには、一般のユーザーよりもいくらか多くのメモリを割り当てます。 Chapter13.txt:1:すべてのメモリ リクエストはオーバーコミットできます。 Chapter13.txt:2:オーバーコミットをオフにします。メモリ コミットの合計が、スワップ領域のサイズと構成変更可能なパーセンテージ(デフォルトでは50)のRAMのサイズとの合計に達すると、メモリ要求は失敗します。このパーセンテージは/proc/sys/vm/overcommit_ratioで変更できます。 Chapter13.txt:使用可能なメモリが使い果たされると、LinuxはOOM-killer(Out Of Memory)を呼び出して、メモリを開放するためにどのプロセスを終了するかを決定します。 Chapter13.txt:これを行うための明瞭な方法はありません。アルゴリズムはヒューリスティックでなければならず、全員を満足させることはできません。多くの開発者は、OOM-killerの目的は、通常の操作の一部ではなく、正常なシャットダウンを許可することと考えています。 Chapter13.txt:Andries Brouwerがこれについての面白い見解を示しました。 Chapter13.txt:「航空機会社は、より少ない燃料で飛行機を飛ばす方が格安であることを発見しました。飛行機はより軽くなり、燃料の使用はより少なくなり、お金の節約が実現しました。しかし、まれなケースですが、燃料の量が不足し飛行機が墜落することがありました。この問題は、特別なOOF(out-of-fuel:燃料切れ)メカニズムを開発した会社のエンジニアによって解決されました。緊急の場合、乗客が一人選択され、飛行機から放り出されました。(必要に応じて、この手順が繰り返されました。)多数の理論が開発され、放り出される犠牲者を適切に選択する問題に関して多くの発表がありました。犠牲者はランダムに選ばれるべきか? それとも、最も体重が重い人を選ぶべきか? それとも年長者を選ぶべきか? 乗客は、追い出されないようにお金を支払うべきだが、そうすると犠牲者は機内で最も貧しい人になるのか? さらに、例えば最も重い人が選ばれた場合、それがパイロットだったら特別な例外があるべきか? ファースト クラスの乗客は免除されるべきか? 現在もOOFメカニズムは存在しており、時々稼働しています。そして、燃料不足がなくても乗客を放り出します。エンジニアは、今もこの誤動作がどのように引き起こされるかを研究しています。」 Chapter13.txt:システムを生き続けさせるために何を犠牲にするかを決定するため、システム上の各プロセスのbadnessと呼ばれる値が計算され(/proc/[pid]/oom_scoreから読み取ることができます)、強制終了する順序はこの値によって決定されます。 Chapter13.txt:同じディレクトリ内の2つのエントリを使用して、強制終了の可能性を高くしたり低くしたりできます。oom_adjの値は、badnessポイントを調整するビット数です。通常のユーザーは可能性を高くすることだけができます。低くすること(oom_adjの負の値)は、スーパーユーザーのみが指定できます。oom_adj_scoreの値は、badnessポイント値を直接調整します。oom_adjの使用は推奨されませんので注意してください。 Chapter13.txt:演習 Chapter13.txt:課題 13.1:OOM Killer を呼び出す Chapter13.txt:🚩 Chapter13.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter13.txt:Exercise 13.1: Invoking the OOM Killer Chapter13.txt:Examine what swap partitions and files are present on your system by examining/proc/swaps. Chapter13.txt:Turn off all swap with the command Chapter13.txt:$ sudo /sbin/swapoff -a Chapter13.txt:Make sure you turn it back on later, when we are done, with Chapter13.txt:$ sudo /sbin/swapon -a Chapter13.txt:Now we are going to put the system under increasing memory pressure. One way to do this is to exploit the stress-ng program we installed earlier, running it with arguments such as: Chapter13.txt:$ stress-ng -m 12 -t 10s Chapter13.txt:which would keep 3 GB busy for 10 seconds. Chapter13.txt:You should see theOOM(Out of Memory) killer swoop in and try to kill processes in a struggle to stay alive. You can see whatis going on by runningdmesgor monitoring/var/log/messagesor/var/log/syslog, or through graphical interfaces thatexpose the system logs. Chapter13.txt:Who gets clobbered first? Chapter13.txt:知識チェック Chapter13.txt:「第13章 - メモリの監視と利用」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter13.txt:クイズ開始 Chapter13.txt:問題 13.1 Chapter13.txt:すべてのスワップ パーティションを無効にすると、システムがOOM-killerを呼び出す可能性が高くなります。True or False? Chapter13.txt:A. True Chapter13.txt:B. False Chapter13.txt:問題 13.2 Chapter13.txt:ファイル キャッシュに使用されるメモリは、システム プロセスで使用されるメモリよりも優先されます。OOM-killerは、ファイル キャッシュとユーザー プロセスの両方に十分なメモリがない場合に呼び出されます。True or False? Chapter13.txt:A. True Chapter13.txt:B. False Chapter13.txt:問題 13.3 Chapter13.txt:スワップ領域に移されたものは、メイン メモリに戻されません。True or False? Chapter13.txt:A. True Chapter13.txt:B. False Chapter13.txt:問題 13.4 Chapter13.txt:/proc/meminfoのMemFreeエントリは、使用されていないメモリの量を示します。アプリケーションがより多くのメモリを必要とする場合、カーネルはキャッシュが使用していたメモリを解放するため、ファイル キャッシュは空きメモリと見なすこともできます。True or False? Chapter13.txt:A. True Chapter13.txt:B. False Chapter14.txt:I/Oの監視とチューニング Chapter14.txt:はじめに Chapter14.txt:第14章はじめに Chapter14.txt:このビデオでは、この章で取り上げるトピックの概要を説明します。 Chapter14.txt:学習目標 Chapter14.txt:この章の終わりまでに、次のことができるようになります。 Chapter14.txt:I/Oアクティビティを監視することの重要性と、それがいつシステム パフォーマンスのボトルネックを引き起こすかを理解できます。 Chapter14.txt:iostatを使用して、システムI/Oデバイスのアクティビティを監視できます。 Chapter14.txt:iotopを使用して、絶えず更新されている現在のI/O使用率のテーブルを表示できます。 Chapter14.txt:ioniceを使用して、特定のプロセスのI/Oスケジューリング クラスと優先順位の両方を設定できます。 Chapter14.txt:I/Oの監視とチューニング Chapter14.txt:I/Oの監視とディスクのボトルネック Chapter14.txt:ディスク パフォーマンスの問題は、メモリ不足や不十分なネットワーク ハードウェアやチューニングなど、他の要因と強く結びついている可能性があります。解決は難しい場合があります。 Chapter14.txt:原則として、CPUがI/Oの完了を待っていてアイドル状態にあるか、ネットワークがバッファがクリアされるのを待っている場合、システムはI/Oバウンド(i/o-bound)と見なされます。 Chapter14.txt:ただし、間違う場合もあります。メモリ不足と思われるのは、I/Oが遅すぎるためです。読み書きに使用されているメモリ バッファがいっぱいになった場合、実際の問題はバッファが十分に速く満たされなかったり空にならないことなのに、メモリが問題のように見えることがあります。同様に、ネットワーク転送では、I/Oの完了を待っているためにネットワーク スループットが低下している可能性があります。 Chapter14.txt:リアルタイムの監視とトレースは、ディスクのボトルネックを特定して軽減するために必要なツールです。ただし、めったに起きない問題や繰り返し発生することがない問題は、解決することが困難になる場合があります。 Chapter14.txt:多くの関連変数があり、I/Oチューニングは複雑です。I/Oスケジューリングについても、のちほど説明します。 Chapter14.txt:iostat Chapter14.txt:iostat は、システム上のI/Oデバイスのアクティビティを監視するための基本的なツールです。詳細なコンテンツをオプションで制御して、多くの情報を含むレポートを作成できます。 Chapter14.txt:$ iostat [OPTIONS] [devices] [interval] [count] Chapter14.txt:このスクリーンショットは、iostatコマンドで何が得られるかを示しています。 Chapter14.txt:iostat Chapter14.txt:CPU使用率の簡単な説明の後、I/Oの統計情報を示します。tps(1秒あたりのI/Oトランザクション。いくつかの論理的なリクエストを1つのリクエストにまとめることができます)、ブロックの単位時間ごとの読み書き数、このブロックはほとんどの場合512バイトのセクタです。そして、読み取りと書き込みの合計ブロック数です。 Chapter14.txt:情報はディスク パーティションごとに分類されます(LVMがdmやデバイス マッパーや論理パーティションで使用されている場合)。 Chapter14.txt:-kオプションを指定すると、少し異なる表示が作成されます。ブロック数ではなくKBで結果を表示します。-mを使用して、MBで結果を表示することもできます。 Chapter14.txt:$ iostat -k Chapter14.txt:iostatに-kオプションを付ければ結果をKBで表示できます Chapter14.txt:もう1つの便利なオプションは-Nです。これは、提供されているスクリーンショットのように、デバイス名で表示します(または、少し異なる情報を得る場合は-dを使用)。 Chapter14.txt:$ iostat -N Chapter14.txt:iostatと-Nオプションを使用して、デバイス名ごとに結果を表示します。 Chapter14.txt:-xオプション(拡張用)を使用すると、より詳細なレポートを作成できます。 Chapter14.txt:$ iostat -xk Chapter14.txt:iostatを使用してより詳細なレポートを作成します。 Chapter14.txt:🚩 Chapter14.txt:使用率が100に近づくと、システムは飽和状態もしくはI/Oの限界状態になることに注意してください。 Chapter14.txt:iotop Chapter14.txt:もう1つの非常に便利なユーティリティはiotopです。これはroot権限で実行する必要があります。topのように、現在のI/O使用量と定期的に更新される表を表示します。以下は、オプションなしでsudo iotopと入力して得られた内容のスクリーンショットです。 Chapter14.txt:PRIOフィールド(プライオリティ)のbeとrtエントリは、ioniceセクションで説明します。beはベスト エフォート、rtはリアルタイムを表しています。 Chapter14.txt:iotopの使用例 Chapter14.txt:使用可能なオプションは、--helpオプションを実行すれば見ることができます。 Chapter14.txt:$ iotop --help Chapter14.txt:iotopオプション Chapter14.txt:-oオプションを使用すると、I/O処理を実施しているプロセス/スレッドのみが表示され、混乱を避けるのに役立ちます。 Chapter14.txt:ionice Chapter14.txt:ioniceユーティリティを使用すると、特定のプロセスのI/Oスケジューリング クラスと優先順位の両方を設定できます。形式は次のとおりです。 Chapter14.txt:$ ionice [-c class] [-n priority] [-p pid ] [COMMAND [ARGS] ] Chapter14.txt:-p引数でpidを指定すると、指定されたプロセスに適用されます。それ以外の場合は、指定された引数を持つCOMMANDを実行するプロセスが対象となります。引数が指定されていない場合、ioniceは、次のように、現在のシェル プロセスのスケジューリング クラスと優先度を返します。 Chapter14.txt:$ ionice Chapter14.txt:idle: prio 7 Chapter14.txt:-cパラメータは、次の表に示すように、I/Oスケジューリング クラスを指定します。 Chapter14.txt:表:I/Oスケジューリング クラス Chapter14.txt:スケジューリング クラス -c値 意味 Chapter14.txt:なしまたは不明(None/Unknown) 0  デフォルト値を採用します。 Chapter14.txt:リアルタイム(Real Time)  1  ディスクに最初にアクセスでき、他のプロセスに優先して処理されます。優先順位は、各プロセスが取得できるタイム スライスの大きさを定義します。 Chapter14.txt:ベスト エフォート(Best Effort)  2  すべてのプログラムは、優先順位の設定に従ってラウンドロビン方式で実行されます。これがデフォルトです。 Chapter14.txt:アイドル(Idle)  3  定義された期間、他のプログラムが要求しない限り、ディスクI/Oにアクセスしません。 Chapter14.txt: Chapter14.txt:ベスト エフォートおよびリアルタイムのクラスは、優先度を与える-n引数を指定します。これは0〜7の範囲で、0が最高の優先度です。以下に例を示します。 Chapter14.txt:$ ionice -c 2 -n 3 -p 30078 Chapter14.txt:🚩 Chapter14.txt:ioniceは、CFQ I/Oスケジューラを使用している場合にのみ使えます。ただし、CFQ I/Oスケジューラはカーネル バージョン 5.0で削除されていることに注意してください。 Chapter14.txt:デモ:iotopとiostatの使用方法 Chapter14.txt:このビデオでは、入出力操作を監視するためのiotopとiostatの使用方法を示します。 Chapter14.txt:演習 Chapter14.txt:課題 14.1: bonnie++ Chapter14.txt:🚩 Chapter14.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter14.txt:Exercise 14.1: bonnie++ Chapter14.txt:bonnie++ is a widely available benchmarking program that tests and measures the performance of drives and filesystems. Itis descended from bonnie, an earlier implementation. Chapter14.txt:Results can be read from the terminal window or directed to a file, and also to acsvformat (commaseparatedvalue).Companion programs,boncsv2html and boncsv2txt, can be used convert to html and plain text output formats. Chapter14.txt:We recommend you read the man page for bonnie++ before using as it has quite a few options regarding which tests to perform and how exhaustive and stressful they should be. A quick synopsis is obtained with: Chapter14.txt:$ bonnie++ --help Chapter14.txt:bonnie++: invalid option --'h' Chapter14.txt:usage: Chapter14.txt:bonnie++ [-d scratch-dir] [-c concurrency] [-s size(MiB)[:chunk-size(b)]] Chapter14.txt:[-n number-to-stat[:max-size[:min-size][:num-directories[:chunk-size]]]] Chapter14.txt:[-m machine-name] [-r ram-size-in-MiB] Chapter14.txt:[-x number-of-tests] [-u uid-to-use:gid-to-use] [-g gid-to-use] Chapter14.txt:[-q] [-f] [-b] [-p processes | -y] [-z seed | -Z random-file] Chapter14.txt:[-D] Chapter14.txt:Version: 1.96 Chapter14.txt:A quick test can be obtained with a command like: Chapter14.txt:$ time sudo bonnie++ -n 0 -u 0 -r 100 -f -b -d /mnt Chapter14.txt:構文の内容は以下のとおりです。 Chapter14.txt:•-n 0 means don’t perform the file creation tests. Chapter14.txt:•-u 0 means run as root. Chapter14.txt:•-r 100 means pretend you have 100 MB of RAM. Chapter14.txt:•-f means skip per character I/O tests. Chapter14.txt:•-b means do a fsync after every write, which forces flushing to disk rather than just writing to cache. Chapter14.txt:•-d /mnt just specifies the directory to place the temporary file created; make sure it has enough space, in this case 300 MB, available. Chapter14.txt:If you don’t supply a figure for your memory size, the program will figure out how much the system has and will create a testing file 2-3 times as large. We are not doing that here because it takes much longer to get a feel for things. Chapter14.txt:On RedHat Chapter14.txt:On anRHEL/CentOSsystem: Chapter14.txt:c7:/tmp> time sudo bonnie++ -n 0 -u 0 -r 100 -f -b -d /mnt Chapter14.txt:Using uid:0, gid:0. Chapter14.txt:Writing intelligently...done Chapter14.txt:Rewriting...done Chapter14.txt:Reading intelligently...done Chapter14.txt:start'em...done...done...done...done...done... Chapter14.txt:Version 1.97 ------Sequential Output------ --Sequential Input- --Random- Chapter14.txt:Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Chapter14.txt:Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP Chapter14.txt:c7 300M 286399 15 293907 14 +++++ +++ 3143 12 Chapter14.txt:Latency 14us 15us 18us 59226us Chapter14.txt:1.97,1.97,c7,1,1544116090,300M,,,,286399,15,293907,14,,,+++++,+++,3143,12,,,,,,,,,,,,,,,,,,,\14us,15us,,18us,59226us,,,,,, Chapter14.txt:On Ubuntu Chapter14.txt:On anUbuntusystem, running as a virtual machine under hypervisor on the same physical machine: Chapter14.txt:$ sudo bonnie++ -n 0 -u 0 -r 100 -f -b -d /mnt Chapter14.txt:student@ubuntu: ̃$ sudo bonnie++ -n 0 -u 0 -r 100 -f -b -d /mnt Chapter14.txt:Using uid:0, gid:0. Chapter14.txt:Writing intelligently...done Chapter14.txt:Rewriting...doneReading intelligently...done Chapter14.txt:start'em...done...done...done...done...done... Chapter14.txt:Version 1.97 ------Sequential Output------ --Sequential Input- --Random- Chapter14.txt:Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Chapter14.txt:Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP Chapter14.txt:ubuntu 300M 230788 94 +++++ +++ +++++ +++ +++++ +++ Chapter14.txt:Latency 11210us 606us 631us 4365us Chapter14.txt:1.97,1.97,ubuntu,1,1544120438,300M,,,,230788,94,+++++,+++,,,+++++,+++,+++++,+++,,,,,,,,,,,,,,,,,,,\11210us,606us,,631us,4365us,,,,,, Chapter14.txt:You can clearly see the drop in performance. Chapter14.txt:Assuming you have saved the previous outputs as a file calledbonnie++.out, you can convert the output to html: Chapter14.txt:$ bon_csv2html < bonnie++.out > bonnie++.html Chapter14.txt:or to plain text with: Chapter14.txt:$ bon_csv2txt < bonnie++.out > bonnie++.txt Chapter14.txt:After reading the documentation, try longer and larger, more ambitious tests. Try some of the tests we turned off. If yoursystem is behaving well, save the results for future benchmarking comparisons when the system is sick. Chapter14.txt:課題 14.2: fs_mark Chapter14.txt:🚩 Chapter14.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter14.txt:Exercise 14.2: fs_mark Chapter14.txt:The fs_mark benchmark gives a low level bashing to file systems, using heavily asynchronous I/O across multiple directoriesand drives.It’s a rather old program written by Rick Wheeler that has stood the test of time. Chapter14.txt:It can be downloaded from http://sourceforge.net/projects/fsmark/ Once you have obtained the tarball, you can unpack it and compile it with: Chapter14.txt:$ tar zxvf fs_mark-3.3.tgz Chapter14.txt:$ cd fs_mark Chapter14.txt:$ make Chapter14.txt:Read the README file as we are only going to touch the surface. Chapter14.txt:If the compile fails with an error like: Chapter14.txt:$ make Chapter14.txt:.... Chapter14.txt:/usr/bin/ld: cannot find -lc Chapter14.txt:it is because you haven’t installed the static version of glibc. You can do this on Red Hat-based systems by doing: Chapter14.txt:$ sudo yum install glibc-static Chapter14.txt:and on SUSE-related systems with: Chapter14.txt:$ sudo zypper install glibc-devel-static Chapter14.txt:On Debian-based systems the relevant static library is installed along with the shared one so no additional package needs tobe sought. Chapter14.txt:On RedHat, Centos, or Fedora Chapter14.txt:• On RHEL 8 glibc-static is not available without some unsupported tricks. However, on CentOS 8 it is includedin the PowerTools repo. Chapter14.txt:• If you already have/etc/yum.repos.d/CentOS-PowerTools.repo on your system, then just make sure it has enabled=1 set in the file. Otherwise we have made a copy of this file and placed it in the SOLUTIONS section forthis course: Chapter14.txt:This file looks like: Chapter14.txt:CentOS-PowerTools.repo Chapter14.txt:[PowerTools] Chapter14.txt:name=CentOS-$releasever - PowerTools Chapter14.txt:mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=PowerTools&infra=$infra#baseurl=http://mirror.centos.org/$contentdir/$releasever/PowerTools/$basearch/os/ Chapter14.txt:gpgcheck=1 Chapter14.txt:enabled=1 Chapter14.txt:gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial Chapter14.txt:• On RHEL 8you can get away with adding this file to the repository directory, but when you install you will probably have to do it as: Chapter14.txt:# dnf install --nogpgcheck glibc-static Chapter14.txt:or go to mirror sites and find the latest copies of the PowerTools repository and download and install bothglibc-staticandlibxcrypt-static Chapter14.txt:•RHEL 8 believes static linking to be a security risk and they discourage the use of any static packages. So youmay want to uninstall when done. Chapter14.txt:For a test we are going to create 2500 files, each 10 KB in size, and after each write we’ll perform anfsyncto flush out todisk. This can be done in the/tmpdirectory with the command: Chapter14.txt:$ fs_mark -d /tmp -n 2500 -s 10240 Chapter14.txt:While this is running, gather extended iostat statistics with: Chapter14.txt:$ iostat -x -d /dev/sda 2 10 Chapter14.txt:in another terminal window. Chapter14.txt:The numbers you should surely note are the number of files per second reported by fs_mark and the bandwidth percentage utilized as reported byiostat. If this is approaching 100 percent, you are I/O-bound. Chapter14.txt:Depending on what kind of filesystem you are using you may be able to get improved results by changing the mount options.For example, for ext3 or ext4 you can try: Chapter14.txt:$ mount -o remount,barrier=1 /tmp Chapter14.txt:or for ext4 you can try: Chapter14.txt:$ mount -o remount,journal_async_commit /tmp Chapter14.txt:See how your results change. Chapter14.txt:Please Note Chapter14.txt:• In the above mount command you should use whatever partition /tmp belongs to, such as /. Chapter14.txt:Note that these options may cause problems if you have a power failure, or other ungraceful system shutdown; i.e., there islikely to be a trade-off between stability and speed. Chapter14.txt:Documentation about some of the mount options can be found with the kernel source under Documentation/filesystems and the man page for mount. Chapter14.txt:CentOS-PowerTools.repo Chapter14.txt:知識チェック Chapter14.txt:「第14章 - I/Oの監視とチューニング」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter14.txt:クイズ開始 Chapter14.txt:問題 14.1 Chapter14.txt:プロセスのI/O優先度を設定するために使用されるツールは次のうちどれですか? Chapter14.txt:A. iotop Chapter14.txt:B. iostat Chapter14.txt:C. ionice Chapter14.txt:問題 14.2 Chapter14.txt:現在I/Oを実行しているすべてのタスクのアクティビティを、継続的に表示するコマンドはどれですか。 Chapter14.txt:A. sudo iotop -o Chapter14.txt:B. sudo iotop -u Chapter14.txt:C. sudo iotop -p 30376 Chapter14.txt:D. sudo iotop -h Chapter15.txt:I/Oスケジューリング Chapter15.txt:はじめに Chapter15.txt:第15章はじめに Chapter15.txt:多くの場合、システムのパフォーマンスには、I/Oのスケジューリングの最適化が大きく関わっています。多くの(しばしば競合する)要因が、動作に影響を与えます。これには、ハードウェア アクセス時間の最小化、ストレージ メディアの消耗の回避、データの整合性の確保、I/Oを行う必要があるアプリケーションへのタイムリーなアクセスの許可、重要なタスクの優先順位付けなどが含まれます。Linuxは、選択可能なさまざまなI/Oスケジューラを提供します。各スケジューラには、調整可能なパラメータと、I/Oパフォーマンスのレポートと分析を行う多数のユーティリティがあります。 Chapter15.txt:学習目標 Chapter15.txt:この章の終わりまでに、次のことができるようになります。 Chapter15.txt:I/Oスケジューリングの重要性と満たす必要がある競合要件を説明できます。 Chapter15.txt:Linuxで使用可能なオプションを明示して対比できます。 Chapter15.txt:CFQ(Completely Fair Queue)とDeadlineのアルゴリズムを理解できます。 Chapter15.txt:I/Oスケジューリング Chapter15.txt:ディスクのボトルネックとI/Oスケジューリング Chapter15.txt:I/Oスケジューラは、汎用ブロック レイヤーと低レベルの物理デバイス ドライバ間のインターフェイスを提供します。VM(仮想メモリ)レイヤーと VFS(仮想ファイルシステム)レイヤーの両方が、ブロック デバイスにI/O要求を送ります。これらの要求をブロック デバイスに渡す前に優先順位を付けて順序付けるのが、I/Oスケジューリング レイヤーの仕事です。ハードウェアのアクセス時間、レイテンシ、デッドライン、公平性、効率のバランスを取る必要があります。最新のSSDでは要件が根本的に変わる可能性があります。 Chapter15.txt:I/O スケジューリング アルゴリズムは、特定の(場合によっては競合する)要件を満たす必要があります。 Chapter15.txt:ハードウェアのアクセス時間を最小限に抑える必要があります。つまり、ディスク上の物理的な場所に応じてリクエストを並べる必要があります。このことは、要求が物理的な順番でペンディング キューに挿入されるエレベータ方式につながります。 Chapter15.txt:できる限り連続した領域を確保するために、可能な限りリクエストをマージする必要があります。これにより、ディスク アクセス時間が最小限に抑えられます。 Chapter15.txt:要求は可能な限り低いレイテンシで行われる必要があります。実際、場合によっては、(デッドラインという意味で)決定論の考え方が重要になる場合があります。 Chapter15.txt:通常、書き込み操作は、プロセスを停止することなく、キャッシュからディスクへの移動を待つことができます。しかし、読み取り操作ではほとんどの場合、プロセスがその完了を待ってから先に進む必要があります。書き込みより読み取りを優先すると、並列性とシステムの応答性が向上します。 Chapter15.txt:プロセスは、公平に、もしくは少なくとも意識的に優先順位を付けて、I/O帯域幅を共有する必要があります。I/Oレイヤーの全体的なパフォーマンスが低下する場合でも、プロセスのスループットが過度に低下することはありません。 Chapter15.txt:I/Oスケジューラの選択 Chapter15.txt:要求同士が競合する可能性があるため、ワークロードごとに異なるI/Oスケジューラを使用する場合があります。たとえば、大規模なデータベース サーバーとデスクトップ システムが良い例です。さらに、ハードウェアが異なると違う戦略を要求する場合があります。柔軟性を提供するために、Linuxカーネルはオブジェクト指向のスキームを採用しており、さまざまな必要機能へのポインタがデータ構造で提供されます。次のように、カーネル コマンド ラインで選択できるものもあります。 Chapter15.txt:linux ... elevator=[bfq|deadline-mq|kyber|none] Chapter15.txt:少なくとも1つのI/Oスケジューリング アルゴリズムをカーネルでコンパイルする必要があります。有用なものは時代とともに変化し、Linuxカーネルのバージョン 5.0では大幅な見直しが行われています。 Chapter15.txt:デフォルトの選択は、コンパイル構成オプションで行います。カーネル 2.6.18より前のカーネルでは、ASであり、その後CFQになり、現在はdeadline-mqですが、ディストリビューションごとに設定が異なる場合があります。デバイスごとに異なるI/Oスケジューラを使用することも可能です。 Chapter15.txt:以下のコマンドで使用可能なI/Oスケジューラを確認できます(ディスクが/dev/sdaの場合)。 Chapter15.txt:$ cat /sys/block/sda/queue/scheduler Chapter15.txt:noop [deadline] cfq # Before kernel version 5.0 Chapter15.txt:none bfq kyber [mq-deadline] # After kernel version 5.0 Chapter15.txt:(スーパーユーザーとして)設定を変更する場合: Chapter15.txt:# echo bfq > /sys/block/sda/queue/scheduler Chapter15.txt:$ cat /sys/block/sda/queue/sheduler Chapter15.txt:none [bfq] kyber mq-deadline Chapter15.txt:スケジューラ固有の調整パラメータは、/sys/block/sda/queue/ioschedにあります。 Chapter15.txt:I/OスケジューリングとSSDデバイス Chapter15.txt:フラッシュ メモリを使用してハードディスクをエミュレートするSSD(Solid State Drive)デバイスを段階的に導入することは、I/Oスケジューリングにとって重要な意味があります。 Chapter15.txt:このようなデバイスは、エレベータ スキームを必要とせず、ウェアレベリング機能によって、書き込み/消去のサイクルが制限されているデバイスで特定のブロックに利用が偏らないようにI/Oを分散します。 Chapter15.txt:以下のように/sys/block//queue/rotationalを調べることで、デバイスがSSDであるかどうかを確認できます。 Chapter15.txt:$ cat /sys/block/sda/queue/rotational Chapter15.txt:1 Chapter15.txt:$ cat /sys/block/sdb/queue/rotational Chapter15.txt:0 Chapter15.txt:デモ:I/O スケジューラ Chapter15.txt:このビデオは、I/Oスケジューラの簡単なデモを提供します。 Chapter15.txt:CFQ(Completely Fair Queue)スケジューラ Chapter15.txt:CFQ(Completely Fair Queue)メソッドの目的は、要求を送るすべてのプロセス間でI/O帯域幅を均等に分散させることです。 Chapter15.txt:理論的には、各プロセスには独自のI/Oキューがあり、デバイスへの途中で実際のリクエストを受信するディスパッチ キューと連携して動作しています。キューの数は(64で)固定されており、プロセスIDに基づいたハッシュ プロセスを使用して、要求の送信時にキューを選択します。 Chapter15.txt:リクエスト キューからの取り出しは、すべてのキューにおけるラウンドロビン スタイルで行われ、各キューはFIFO((First In First Out)の順序で機能します。このため、処理は分散されます。過度のシーク操作を回避するため、ラウンド全体を選択し、実際のI/O要求がデバイスに発行される前にディスパッチ キューでソートします。 Chapter15.txt:以下の例では、パラメータHZはカーネルが設定する数量であり、1秒あたりのjiffiesの数に対応します。カーネルはこのHZを時間の大まかな尺度として使用します。詳細には説明しませんが、時間単位HZ/2は0.5秒、5*HZは5秒などになります。 Chapter15.txt:クリックして各ボックスを展開し、提供されている例の詳細を確認してください。 Chapter15.txt:CFQの調整可能パラメータの例 Chapter15.txt:quantum Chapter15.txt:サービスの1ラウンドでの最大キュー長。(Default = 4) Chapter15.txt:queued Chapter15.txt:キューごとのリクエストの最小割り当て。(Default = 8) Chapter15.txt:fifo_expire_sync Chapter15.txt:同期要求が処理されずFIFOで保留される時間。(Default = HZ/2) Chapter15.txt:fifo_expire_async Chapter15.txt:非同期要求が処理されずFIFOで保留される時間。(Default = 5 * HZ) Chapter15.txt:fifo_batch_expire Chapter15.txt:FIFOが時間切れになる比率。(Default = HZ/8) Chapter15.txt:back_seek_max Chapter15.txt:最大後方シークで単位はKB 。(Default = 16K) Chapter15.txt:back_seek_penalty Chapter15.txt:後方シークのペナルティ。(Default = 2) Chapter15.txt:Deadline スケジューラ Chapter15.txt:Deadline I/Oスケジューラは、全体的なパフォーマンスを改善し、個々のリクエストの大きなレイテンシを防ぐという2つの目的を持ち、リクエストを積極的に並べ替えます。すなわち、スタベーションを制限します。 Chapter15.txt:リクエストごとに、カーネルは期限を付けます。読み取り要求は、書き込み要求よりも優先されます。 Chapter15.txt:次の5つの個別のI/Oキューを持ちます。 Chapter15.txt:開始するブロックを並べ換えるため、読み取り用と書き込み用の2つのソート キューを持ちます。 Chapter15.txt:読み取り用と書き込み用の2つのFIFOキューを持ちます。これらのリストは、サブミットされた時間でソートされています。 Chapter15.txt:5番目のキューは、デバイス ドライバ自体に渡す要求を含んでいます。これは、ディスパッチ キューと呼ばれます。 Chapter15.txt:リクエストが最初の4つのキューから出され5番目(ディスパッチ キュー)に配置される方法は、まさにアルゴリズムの芸術と言えます。 Chapter15.txt:Deadlineスケジューラで利用可能な調整可能パラメータの詳細については、クリックして各カードを反転して見てください。 Chapter15.txt:read_expire Chapter15.txt:読み取りリクエストの実行が保証される時間(ミリ秒単位)。(Default = HZ/2 = 500) Chapter15.txt:write_expire Chapter15.txt:書き込みリクエストの実行が保証される時間(ミリ秒単位)。(Default = 5 * HZ = 5000) Chapter15.txt:writes_starved Chapter15.txt:書き込みよりも読み取りを優先するリクエスト数。(Default = 2) Chapter15.txt:fifo_batch Chapter15.txt:処理期限になったときに、ソートされたスケジューラ リストからディスパッチ キューに移動するリクエストの数。(Default = 16) Chapter15.txt:front_merges Chapter15.txt:通常、連続するリクエストは次のブロックに続くため、バック マージはフロント マージよりも一般的です。必要になる可能性が低いことがわかっている場合には、このパラメーターを0に設定するとフロント マージが無効になり、性能を上げることができます。(Default = 1) Chapter15.txt:演習 Chapter15.txt:課題 15.1: I/Oスケジューラの比較 Chapter15.txt:🚩 Chapter15.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter15.txt:Exercise 15.1: Comparing I/O Schedulers Chapter15.txt:We provide a script which is to be used to compare I/O schedulers which can be extracted from your downloaded SOLUTIONS file as labiosched.sh. Chapter15.txt:lab iosched.sh Chapter15.txt:#!/bin/bash Chapter15.txt:NMAX=8 Chapter15.txt:NMEGS=100 Chapter15.txt:[[ -n $1 ]] && NMAX=$1 Chapter15.txt:[[ -n $2 ]] && NMEGS=$2 Chapter15.txt:echo Doing: $NMAX parallel read/writes on: $NMEGS MB size Files Chapter15.txt:TIMEFORMAT="%R %U %S" Chapter15.txt:############################################################## Chapter15.txt:# simple test of parallel reads Chapter15.txt:do_read_test(){ Chapter15.txt:for n in$(seq1$NMAX);do Chapter15.txt:cat file$n > /dev/null & Chapter15.txt:done Chapter15.txt:# wait for previous jobs to finish Chapter15.txt:wait Chapter15.txt:} Chapter15.txt:# simple test of parallel writes Chapter15.txt:do_write_test(){ Chapter15.txt:for n in$(seq1$NMAX);do Chapter15.txt:[[ -f fileout$n ]] && rm -f fileout$n Chapter15.txt:(cp file1 fileout$n && sync) & Chapter15.txt:done Chapter15.txt:# wait for previous jobs to finish Chapter15.txt:wait Chapter15.txt:} Chapter15.txt:# create some files for reading, ok if they are the same Chapter15.txt:create_input_files(){ Chapter15.txt:[[ -f file1 ]] || ddif=/dev/urandom of=file1 bs=1M count=$NMEGS Chapter15.txt:for n in$(seq1$NMAX);do Chapter15.txt:[[ -f file$n ]] || cp file1 file$n Chapter15.txt:done Chapter15.txt:} Chapter15.txt:echo -e"\ncreating as needed random input files" Chapter15.txt:create_input_files Chapter15.txt:############################################################## Chapter15.txt:# begin the actual work Chapter15.txt:# do parallel read test Chapter15.txt:echo -e"\ndoing timings of parallel reads\n" Chapter15.txt:echo -e" REAL USER SYS\n" Chapter15.txt:#for iosched in noop deadline cfq ; do Chapter15.txt:for iosched in\ Chapter15.txt:$(cat /sys/block/sda/queue/scheduler | sed -e s/'\['//g -e /'\]'//g);do Chapter15.txt:echo testing IOSCHED = $iosched Chapter15.txt:echo $iosched > /sys/block/sda/queue/scheduler Chapter15.txt:cat /sys/block/sda/queue/scheduler Chapter15.txt:# echo -e "\nclearing the memory caches\n" Chapter15.txt:echo 3> /proc/sys/vm/drop_caches Chapter15.txt:time do_read_test Chapter15.txt:done Chapter15.txt:############################################################## Chapter15.txt:# do parallel write test Chapter15.txt:echo -e"\ndoing timings of parallel writes\n" Chapter15.txt:echo -e" REAL USER SYS\n" Chapter15.txt:forviosched in\ Chapter15.txt:$(cat /sys/block/sda/queue/scheduler | sed -e s/'\['//g -e s/'\]'//g);do Chapter15.txt:echo testing IOSCHED = $iosched Chapter15.txt:echo $iosched > /sys/block/sda/queue/scheduler Chapter15.txt:cat /sys/block/sda/queue/scheduler Chapter15.txt:time do_write_test Chapter15.txt:done Chapter15.txt:############################################################## Chapter15.txt:If you are taking the online self-paced version of this course, the script is available for download from your Lab screen.Because changing the I/O scheduler is a privileged operation, you will have to run it as: Chapter15.txt:$ sudo ./lab_iosched.h [# reads/writes (NMAX)] [file size in MB (NMEGS)] Chapter15.txt:How it works Chapter15.txt:The script: Chapter15.txt:• Cycles through the available I/O schedulers on a hard disk while doing a configurable number of parallel readsand writes of files of a configurable size. (Note that exactly which schedulers are available will depend on the kernel has been configured and compiled and may vary quite a bit from machine to machine.) Chapter15.txt:• Tests reads and writes as separate steps. Chapter15.txt:• Makes sure, when testing reads, it is actually reading from disk and not from cached pages of memory; the cacheis flushed out by doing (as root): Chapter15.txt:echo 3 > /proc/sys/vm/drop_caches Chapter15.txt:before doing the reads. The script does a cat into /dev/null to avoid writing to disk. Chapter15.txt:• Makes sure all reads are complete before obtaining timing information; this is done by issuing a wait command under the shell. Chapter15.txt:• Tests writes by simply copying a file (which will be in cached memory after the first read) multiple times simulta-neously. To make sure it has waited for all writes to complete before getting timing information, it issues a synccall. Chapter15.txt:The provided script takes two arguments. The first is the number of simultaneous reads and writes to perform. The second isthe size (in MB) of each file. Chapter15.txt:This script must be run as root as it echoes values into the/procand/sysdirectory trees. Chapter15.txt:Compare the results you obtain using different I/O schedulers. Chapter15.txt:Extra Credit Chapter15.txt:For additional exploring you might try changing some of the tunable parameters and see how results vary. Chapter15.txt:知識チェック Chapter15.txt:「第15章 - I/Oスケジューリング」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter15.txt:クイズ開始 Chapter15.txt:問題 15.1 Chapter15.txt:LinuxのデフォルトのI/Oスケジューラは何ですか? 当てはまるものをすべて選択してください。 Chapter15.txt:A. Completely Fair Queuing (CFQ) Chapter15.txt:B. Elevator Chapter15.txt:C. Deadline Scheduling Chapter15.txt:D. noop Chapter15.txt:問題 15.2 Chapter15.txt:エレベータのスケジュール設定が不要なデバイスのカテゴリはどれですか? Chapter15.txt:A. SATA Chapter15.txt:B. ISE Chapter15.txt:C. SCSI Chapter15.txt:D. SAS Chapter15.txt:E. SSD Chapter16.txt:LinuxファイルシステムとVFS Chapter16.txt:はじめに Chapter16.txt:第16章はじめに Chapter16.txt:このビデオでは、この章で説明するトピックの概要を簡単に説明します。 Chapter16.txt:学習目標 Chapter16.txt:この章の終わりまでに、次のことができるようになります。 Chapter16.txt:基本的なファイルシステム構成を説明できます。 Chapter16.txt:VFSの役割を理解できます。 Chapter16.txt:Linuxで使用できるファイルシステムと、実際のシステムで使用できるファイルシステムを把握できます。 Chapter16.txt:ジャーナリング ファイルシステムが大きく進歩している理由を把握できます。 Chapter16.txt:Linuxにおけるスペシャル ファイルシステムの使用について説明できます。 Chapter16.txt:LinuxファイルシステムとVFS Chapter16.txt:ファイルシステムの基本 Chapter16.txt:アプリケーション プログラムは、ファイルが保存されている実際のハードウェア上の物理的な場所にアクセスすることなく、ファイルを読み書きします。ファイルシステムは、物理パーティションに使用可能なフォーマットを作成します。 Chapter16.txt:ファイルとその名前は、物理I/Oレイヤーを抽象的に見せたものです。(ファイルシステム レイヤーを無視して)lコマンドラインからディスクに直接書き込むことは非常に危険です。これは、ユーザー アプリケーションではなく、低レベルのオペレーティング システム ソフトウェアによってのみ行われます。例外として、このようなcmdアクセスを実行してファイルシステム関連のレイテンシをスキップする、エンタープライズ データベースなどの非常にハイエンドなソフトウェアがあります。 Chapter16.txt:UNIXのようなファイルシステムは、ツリー階層を使用します。 Chapter16.txt:ディレクトリにはファイルや他のディレクトリが含まれます。 Chapter16.txt:すべてのパスやノードはルート ディレクトリの下にあります。 Chapter16.txt:複数のファイルシステムを1つのツリー構造にマージできます(通常はマージされます)。Linux は、仮想ファイルシステム レイヤー(VFS)を介して、ファイルシステム ソフトウェアと通信しています。 Chapter16.txt:ローカル ファイルシステムは通常、ディスク上の物理パーティションである、または論理ボリューム マネージャ(LVM)によって制御される論理パーティションである、ディスク パーティション内に存在します。ファイルシステムはネットワークの性質を持つこともできます。その物理的な実体はネットワークを介することでローカル システムの中に完全に隠れます。 Chapter16.txt:inode Chapter16.txt:inodeは、場所などを含むファイル属性を記述し保存する、ディスク上のデータ構造体です。すべてのファイルは、個別のinodeに関連付けられています。inodeに保存される情報には次のものが含まれます。 Chapter16.txt:パーミッション Chapter16.txt:ユーザーとグループの所有権 Chapter16.txt:サイズ Chapter16.txt:タイム スタンプ(ナノ秒) Chapter16.txt:- 最終アクセス時間 Chapter16.txt:- 最終変更時間 Chapter16.txt:- 変更時間 Chapter16.txt:inodeのデータ ストレージとディレクトリ ファイルのデータ ストレージ Chapter16.txt:💡 Chapter16.txt:ファイル名は、ファイルのinodeには保存されず、代わりにディレクトリ ファイルに保存されます。ファイル名は、基本的なオブジェクトであるinodeの、1つの属性に過ぎません。 Chapter16.txt:情報を更新する必要があるため、通常、ファイルに関するすべてのI/Oアクティビティにはファイルのinodeも含まれます。 Chapter16.txt:ハード リンクとソフト リンク Chapter16.txt:ディレクトリ ファイルは、ファイル名とinodeを関連付けるために使用される特殊な種類のファイルです。ファイル名をinodeに関連付ける(またはリンクする)には、次の2つの方法があります。 Chapter16.txt:複数のハード リンクは単一のinodeを指します。ハード リンクされた複数のファイルはすべて同じファイルシステム上になければなりません。ハード リンクされたファイルのコンテンツを1つの場所で変更しても、他の場所では変更されていない場合があります。 Chapter16.txt:ソフト(またはシンボリック)リンクは、inodeが関連付けられているファイル名をポイントします。ソフト リンクされたファイルは、異なるファイルシステム上にある場合があります。対象のファイルがまだ存在していないかまだマウントされていない場合にも、相手先の無いリンクを作成できます。 Chapter16.txt:ディレクトリ ファイルの内容とinodeの関連付けは、リンクと呼ばれます。追加のリンクは、lnを使用して作成できます。 Chapter16.txt:2つ以上のディレクトリ エントリが同じinode(ハードリンク)を指す可能性があり(かなり一般的)、ファイルは複数の名前で認識され、それぞれがディレクトリ構造内に独自の場所を持っています。ただし、どの名前が使用されていても、inodeはただ1つだけです。 Chapter16.txt:プロセスがパス名を参照すると、カーネルはディレクトリを検索して、対応するinode番号を見つけます。名前がinode番号に変換された後、inodeはメモリにロードされ、後続のリクエストで使用されます。 Chapter16.txt:ハード リンクとソフト リンク Chapter16.txt:ファイルシステム ツリーの構成 Chapter16.txt:すべてのLinuxシステムは、ルート(/)ディレクトリから分岐する逆向きのツリー階層で表されます。ツリー全体が1つのパーティションの中の1つのローカル ファイルシステムを示す場合もありますが、通常は、複数のパーティション(またはネットワーク ファイルシステム)がマウント ポイントで結合されています。これらには、USBドライブ、光学ドライブなどのリムーバブル メディアも含まれます。 Chapter16.txt:さらに、特定の仮想擬似ファイルシステム(メモリ内にのみ存在する有用な抽象概念)がツリー内にマウントされます。これらには、/proc、/sys、/dev、/tmp、/runも含まれます。 Chapter16.txt:ツリー内にマウントされるものには、実際にはさまざまなファイルシステムがあります。しかし、アプリケーションとオペレーティング システムにとっては、すべてが1つの統一されたツリー構造に見えます。 Chapter16.txt:仮想ファイルシステム(VFS) Chapter16.txt:Linuxは、最新のすべてのオペレーティング システムと同じ様に、仮想ファイルシステム(VFS)を実装しています。アプリケーションがファイルにアクセスする必要がある場合、VFS抽象化レイヤーとやり取りし、すべてのI/Oシステムコール(読み取り、書き込みなど)を特定の実際のファイルシステムに関連した固有のコードに変換します。 Chapter16.txt:したがって、アプリケーションは、特定の実ファイルシステムやそれが存在する物理媒体およびハードウェアを考慮する必要はありません。さらに、ネットワーク ファイルシステム(NFSなど)は透過的に処理できます。 Chapter16.txt:これにより、Linuxは他のどのオペレーティング システムよりも多くのファイルシステムが動作します。この全てのファイルが同等の扱いを受ける属性は、成功の大きな要因でした。 Chapter16.txt:ほとんどのファイルシステムには完全な読み書きのアクセス権がありますが、一部のファイルシステムには読み取りのアクセス権と実験的な書き込みアクセス権しかありません。一部の種類のファイルシステム、特に非UNIXベースのものは、VFSを適用するためにより多くの操作が必要になる場合があります。 Chapter16.txt:vfatなどには、owner/group/world(もしくはother)フィールドに対して個別の読み取り/書き込み/実行のパーミッションがありません。VFSは、この3種類のユーザーに対して、個別にパーミッションを想定する必要があります。この想定は、マウント操作の影響を受ける可能性があります。また、ntfs-3gのような読み取り/書き込みをサポートするカーネル以外のファイルシステムの実装もあります。これは信頼性はありますが、カーネル内のファイルシステムよりもパフォーマンスが低くなります。 Chapter16.txt:利用可能なファイルシステム Chapter16.txt:Linuxは多くのファイルシステムの種類をサポートし、そのほとんどに完全な読み書きのアクセス権があります。 Chapter16.txt:ext4:Linux ネイティブ ファイルシステム(以前のext2とext3も同様) Chapter16.txt:XFS:元々SGIが作成した高性能ファイルシステム Chapter16.txt:JFS:元々IBMが作成した高性能ファイルシステム Chapter16.txt:Windowsネイティブ:FAT12、FAT16、FAT32、VFAT、NTFS Chapter16.txt:proc、sysfs、devfs、debugfsを含むメモリのみに常駐する擬似ファイルシステム Chapter16.txt:NFS、coda、afsなどのネットワーク ファイルシステム Chapter16.txt:などがあります。 Chapter16.txt:この多くのファイルシステムに対応するという柔軟性は、Linuxが成功する大きな要因でした。ほとんどのファイルシステムには完全な読み書きアクセス権があり、一部のファイルシステムには読み取り専用アクセス権があります。 Chapter16.txt:一般的に使用されるファイルシステムには、ext4、xfs、btrfs、squashfs、nfs、vfatがあります。現在サポートされているファイルシステムのリストは/proc/filesystemsにあります。 Chapter16.txt:ファイルシステムの種類 Chapter16.txt:実行中のLinuxカーネルが現在登録および認識しているファイルシステムの種類のリストを表示する方法は、次のとおりです。 Chapter16.txt:$ cat /proc/filesystems Chapter16.txt:​iso9660 Chapter16.txt:squashfs Chapter16.txt:ext3 Chapter16.txt:ext2 Chapter16.txt:ext4 Chapter16.txt:fuseblk Chapter16.txt:nodev sysfs Chapter16.txt:nodev proc Chapter16.txt:nodev tmpfs Chapter16.txt:nodev debugfs Chapter16.txt:nodev sockfs Chapter16.txt:nodev hugetlbfs Chapter16.txt:nodev fuse Chapter16.txt:nodev nfsd Chapter16.txt:.... Chapter16.txt:nodevになっているものは、ストレージ上に存在しないスペシャル ファイルシステムです。追加のファイルシステムは、システムがそれらを使用するパーティションにアクセスしようとした場合にのみ、コードをモジュールとしてロードします。 Chapter16.txt:デモ:ファイルシステム Chapter16.txt:このビデオでは、システムで利用可能なファイルシステムを確認する方法を示します。 Chapter16.txt:ジャーナリング ファイルシステム Chapter16.txt:ジャーナリング ファイルシステムは、システム クラッシュまたは異常なシャットダウンから、ほとんどまたはまったく破損することなく、非常に迅速に回復します。これにはさらに多くの操作を行うという代償が伴いますが、追加の機能強化は価値があります。 Chapter16.txt:ジャーナリング ファイルシステムでは、操作はトランザクションにグループ化されます。トランザクションは、アトミックに実行され、エラーなしで終了する必要があります。さもなければ、ファイルシステムは変更されません。トランザクションのログ ファイルは保持されます。エラーが発生した場合、通常は最後のトランザクションのみを調べます。 Chapter16.txt:各ボックスをクリックして展開し、Linuxで自由に利用できるジャーナリング ファイルシステムの詳細をご覧ください。 Chapter16.txt:ジャーナリング ファイルシステム Chapter16.txt:ext3 Chapter16.txt:ext3 は、以前の非ジャーナリングext2ファイルシステムの拡張です。 Chapter16.txt:ext4 Chapter16.txt:ext4 は、ext3を大幅に強化したものです。機能には、エクステントや48ビットのブロック番号を含み、対応できる最大サイズは16TBです。ほとんどのLinuxディストリビューションでは、かなり長い間、ext4をデフォルトのファイルシステムとして使用しています。 Chapter16.txt:reiserfs Chapter16.txt:reiserfsは Linuxで使用された最初のジャーナリング実装でしたが、リーダーシップを失い、開発は中止されました。 Chapter16.txt:JFS Chapter16.txt:JFSはもともとIBMの製品であり、IBMのAIXオペレーティング システムから移植されました。 Chapter16.txt:XFS Chapter16.txt:XFSはもともとSGIの製品であり、SGIのIRIXオペレーティング システムから移植されました。RHEL 7は、デフォルトのファイルシステムとしてXFSを採用しました。 Chapter16.txt:btrfs Chapter16.txt:btrfsは最新のジャーナリング ファイルシステムであり、今も急速に開発が進んでいます。SUSEとopenSUSEシステムのデフォルトのファイルシステムです。 Chapter16.txt:スペシャル ファイルシステム Chapter16.txt:Linuxは、特定のタスクのためにスペシャル ファイルシステムを幅広く採用しています。これらは、さまざまなカーネル データ構造へのアクセス、カーネルの動作調整、特定の機能の実装に非常に役に立ちます。これらのスペシャル ファイルシステムには、sockfsやpipefsなど、マウント ポイントがないものがあることに注意してください。つまり、ユーザー アプリケーションはそれらのファイルシステムとはやり取りしません。しかし、カーネルはVFSレイヤーとコードを利用してそれらを使用します。これらのスペシャル ファイルシステムは、実際には本当のファイルシステムではありません。それらは、ファイルシステムの構造的な抽象化がデータと機能を認識するための有効な手段であると考える、カーネル機能またはサブシステムです。 Chapter16.txt:表:スペシャル ファイルシステム Chapter16.txt:ファイルシステム マウント ポイント 目的 Chapter16.txt:rootfs  なし  カーネルのロード中に、空のルート ディレクトリを提供 Chapter16.txt:hugetlbfs   任意  拡張ページのアクセスを提供(X86では2または4MB) Chapter16.txt:bdev なし ブロック デバイスに使用 Chapter16.txt:proc   /proc  多くのカーネル構造とサブシステムへの疑似ファイルシステム アクセス Chapter16.txt:sockfs  なし  BSDソケットで使用 Chapter16.txt:tmpfs  任意   スワッピングとサイズ変更を伴うRAMディスク Chapter16.txt:shm  なし  System V IPCの共有メモリとして使用 Chapter16.txt:pipefs  なし  パイプに使用 Chapter16.txt:binfmt_misc   任意  さまざまな実行可能形式で使用 Chapter16.txt:devpts   /dev/pts  Unix98擬似端末で使用 Chapter16.txt:usbfs  /proc/bus/usb  動的デバイス用のUSBサブシステムで使用 Chapter16.txt:sysfs  /sys  デバイス ツリーとして使用 Chapter16.txt:debugfs   /sys/kernel/debug  簡単なデバッグ ファイル アクセスに使用 Chapter16.txt:演習 Chapter16.txt:課題 16.1: tmpfs特殊ファイルシステム Chapter16.txt:🚩 Chapter16.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter16.txt:Exercise 16.1: The tmpfs Special Filesystem Chapter16.txt:tmpfs is one of many special filesystems used underLinux. Some of these are not really used as filesystems, but just take advantage of the filesystem abstraction. However,tmpfs is a real filesystem that applications can do I/O on. Chapter16.txt:Essentially,tmpfs functions as a ramdisk; it resides purely in memory. But it has some nice properties that old-fashionedconventional ramdisk implementations did not have: Chapter16.txt:1. The filesystem adjusts its size (and thus the memory that is used) dynamically; it starts at zero and expands as necessary up to the maximum size it was mounted with. Chapter16.txt:2. If your RAM gets exhausted,tmpfs can utilize swap space. (You still can’t try to put more in the filesystem than its maximum capacity allows, however.) Chapter16.txt:3.tmpfs does not require having a normal filesystem placed in it, such as ext3 or vfat; it has its own methods for dealingwith files and I/O that are aware that it is really just space in memory (it is not actually a block device), and as such areoptimized for speed. Chapter16.txt:Thus there is no need to pre-format the filesystem with amkfscommand; you merely just have to mount it and use it. Chapter16.txt:Mount a new instance oftmpfsanywhere on your directory structure with a command like: Chapter16.txt:$ sudo mkdir /mnt/tmpfs Chapter16.txt:$ sudo mount -t tmpfs none /mnt/tmpfs Chapter16.txt:See how much space the filesystem has been given and how much it is using: Chapter16.txt:$ df -h /mnt/tmpfs Chapter16.txt:You should see it has been allotted a default value of half of your RAM; however, the usage is zero, and will only start to growas you place files on/mnt/tmpfs. Chapter16.txt:You could change the allotted size as a mount option as in: Chapter16.txt:$ sudo mount -t tmpfs -o size=1G none /mnt/tmpfs Chapter16.txt:You might try filling it up until you reach full capacity and see what happens. Do not forget to unmount when you are donewith: Chapter16.txt:$ sudo umount /mnt/tmpfs Chapter16.txt:Virtually all modern Linux distributions mount an instance of tmpfs at /dev/shm: Chapter16.txt:$ df -h /dev/shm Chapter16.txt:Filesystem Type Size Used Avail Use% Mounted on Chapter16.txt:tmpfs tmpfs 3.9G 24M 3.9G 1% /dev/shm Chapter16.txt:Many applications use this such as when they are using POSIX shared memory as an inter-process communication mecha-nism. Any user can create, read and write files in/dev/shm, so it is a good place to create temporary files in memory. Chapter16.txt:Create some files in/dev/shmand note how the filesystem is filling up with df. Chapter16.txt:In addition, many distributions mount multiple instances oftmpfs; for example, on a RHEL system: Chapter16.txt:$ df -h | grep'tmpfs' Chapter16.txt:tmpfs tmpfs 7.8G 38M 7.8G 1% /dev/shm Chapter16.txt:tmpfs tmpfs 7.8G 18M 7.8G 1% /run Chapter16.txt:tmpfs tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup Chapter16.txt:tmpfs tmpfs 1.6G 1.2M 1.6G 1% /run/user/42 Chapter16.txt:tmpfs tmpfs 1.6G 56K 1.6G 1% /run/user/1000 Chapter16.txt:Notice this was run on a system with 16 GB of ram, so clearly you cannot have all these tmpfs filesystems actually using thedefault ̃8GB they have each been allotted! Chapter16.txt:Please Note Chapter16.txt:Some distributions (such as Fedora) may (by default) mount/tmp as a tmpfs system; in such cases one has to avoid putting large files in/tmpto avoid running out of memory. Or one can disable this behavior as we discussed earlier when describing /tmp. Chapter16.txt:知識チェック Chapter16.txt:「第16章 - LinuxファイルシステムとVFS」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter16.txt:クイズ開始 Chapter16.txt:問題 16.1 Chapter16.txt:システムで現在サポートされているすべてのファイルシステムのリストを含む、スペシャル ファイルはどれですか? Chapter16.txt:A. /proc Chapter16.txt:B. /proc/filesystems Chapter16.txt:C. /proc/sys Chapter16.txt:問題 16.2 Chapter16.txt:従来のRAMディスクと比較した場合のtmpfsの利点は何ですか? 当てはまるものをすべて選択してください。 Chapter16.txt:A. 使用する前にフォーマットする必要はありません Chapter16.txt:B. 効率的な方法でメモリを消費します Chapter16.txt:C. ファイルシステムの最大サイズは4GBです Chapter16.txt:D. RAMとスワップの両方を使用できます Chapter16.txt:問題 16.3 Chapter16.txt:次のうち、ジャーナリング ファイルシステムではないものはどれですか? Chapter16.txt:A. xfs Chapter16.txt:B. jfs Chapter16.txt:C. ext4 Chapter16.txt:D. vfat Chapter17.txt:ディスクのパーティション分割 Chapter17.txt:はじめに Chapter17.txt:第17章はじめに Chapter17.txt:このビデオでは、この章で説明するトピックの概要を簡単に説明します。 Chapter17.txt:学習目標 Chapter17.txt:この章の終わりまでに、次のことができるようになります。 Chapter17.txt:最も一般的な種類のハードディスクとデータ バスについて説明し、対比できます。 Chapter17.txt:ディスク ジオメトリとその他のパーティション分割の概念を説明できます。 Chapter17.txt:ディスク デバイスの命名方法と、関連するデバイス ノードの識別方法を理解できます。 Chapter17.txt:パーティション方法の違いを識別して選択できます。 Chapter17.txt:fdisk、blkid、lsblkなどのユーティリティを使用できます。 Chapter17.txt:パーティション テーブルのバックアップと復元ができます。 Chapter17.txt:ディスクのパーティション分割 Chapter17.txt:一般的なディスクの種類 Chapter17.txt:さまざまな種類のハードディスクがあり、それぞれが、接続されているデータ バスの種類、速度、容量、複数のドライブが同時に動作する頻度やその他の要因によって特徴付けられます。 Chapter17.txt:クリックして各ボックスを展開し、さまざまな種類のハードディスクの詳細をご覧ください。 Chapter17.txt:ディスクの種類 Chapter17.txt:SATA(Serial Advanced Technology Attachment) Chapter17.txt:SATAディスクは、古いIDEドライブを置き換えるために設計されました。小さなケーブル サイズ(7ピン)、ネイティブ ホットスワップ、そしてより高速で効率的なデータ転送を提供します。SCSIデバイスと見なされます。 Chapter17.txt:SCSI(Small Computer Systems Interface) Chapter17.txt:SCSIディスクの範囲はnarrow(8ビット バス)から wide(16ビット バス)であり、転送速度は毎秒5MB(narrow、標準SCSI)から毎秒160MB(Ultra-Wide SCSI-3)です。ほとんどのPCは、シングルエンデッド(Single-Ended)またはディファレンシャル(Differential)のSCSIドライブを使用します。残念ながら、この2つの種類は互換性がありません。幸いなことに、2種類のデバイスは同じコントローラ上で共存できます。シングルエンデッド デバイスは最大7台のデバイスをホストでき、最大ケーブル長は約6メートルです。ディファレンシャル コントローラは最大15台のデバイスをホストでき、最大ケーブル長は約12メートルです。 Chapter17.txt:SAS (Serial Attached SCSI) Chapter17.txt:新しいポイントツーポイント(point-to-point)プロトコルを使用し、SATA ディスクよりも優れたパフォーマンスがあります。 Chapter17.txt:USB (Universal Serial Bus) Chapter17.txt:これらには、フラッシュ ドライブとフロッピーが含まれます。そして SCSIデバイスと見なされます。 Chapter17.txt:SSD (Solid State Drives) Chapter17.txt:最新のSSDドライブは価格が下がってきています。また、可動部品がなく、回転式のメディアを備えたドライブよりも消費電力が少なく、転送速度が高速です。内蔵SSDは、従来のドライブと同じ外形寸法で、同じ筐体に取り付けられます。SSDの価格はまだ少し高いですが、価格は下がってきています。同じマシンにSSDと回転式ドライブの両方を搭載するのが一般的です。SSDでは、頻繁にアクセスされパフォーマンスが重要とされるデータ転送が行われます。 Chapter17.txt:IDEとEIDE(Integrated Drive Electronics, Enhanced IDE) Chapter17.txt:これらは使われなくなりました。 Chapter17.txt:ディスク ジオメトリ Chapter17.txt:ディスク ジオメトリは、長い歴史を持つ回転式のメディアの概念です。ヘッド、シリンダ、トラック、セクタなどです。以下のスクリーンショットは、fdiskでジオメトリを表示する方法を示しています。 Chapter17.txt:$ sudo fdisk -l /dev/sda Chapter17.txt:-lオプションの使い方に注目してください。このオプションは、対話モードに入ることなく、単にパーティション テーブルをリストします。 Chapter17.txt:fdiskの使用例 Chapter17.txt:回転式のディスクは1つ以上のプラッタで構成され、それぞれが1つ以上のヘッドで読み取られます。ディスクが回転すると、ヘッドはプラッタから円形のトラックを読み取ります。 Chapter17.txt:これらの円形のトラックは、通常サイズが512バイトのセクタと呼ばれるデータ ブロックに分割されます。シリンダは、すべてのプラッタ上の同じトラックで構成されるグループです。 Chapter17.txt:ドライブの内部電子回路は、実際にはそのほとんどが覆い隠されているため、物理的な構造イメージの重要性はほとんどなくなりました。さらに、SSDには可動部品や上記の構成部品のようなものはありません。 Chapter17.txt:現在、ディスクのセクタ サイズは512バイトを超えています。4KBが使用可能になります。セクタ サイズを大きくすると転送速度が速くなる可能性がありますが、オペレーティング システムのサポートは、サイズを大きくすることに関してまだ十分に対応できていません。 Chapter17.txt:パーティション構成 Chapter17.txt:ディスクはパーティションに分割されます。配置的に言えば、これらは物理的に隣接するセクタまたはシリンダのグループで構成されています。パーティションは、ディスク上の物理的に連続した領域です。以下の2つのパーティション レイアウト標準規格があります。 Chapter17.txt:MBR (Master Boot Record) Chapter17.txt:GPT (GUID Partition Table). Chapter17.txt:MBRは、MSDOSの初期にまでさかのぼります。MBRを使用する場合、ディスクには最大4つのプライマリ パーティションがあります。プライマリ パーティションの1つを拡張パーティションとして指定できます。拡張パーティションは、さらに15個の論理パーティションに分割できます。 Chapter17.txt:MBRを使用する場合、たとえば/dev/sdaなどのSCSIの場合、/dev/sda1は最初のプライマリ パーティションで、/dev/sda2は2番目のプライマリ パーティションとなります。拡張パーティション/dev/sda3を作成した場合、それを論理パーティションに分割できます。4つ目以上のパーティションはすべて論理パーティションです(拡張パーティション内に含まれることを意味します)。拡張パーティションは1つしか存在できませんが、多数の論理パーティションに分割できます。 Chapter17.txt:💡 Chapter17.txt:Linuxでは、シリンダの境界でパーティションを開始または終了する必要はありませんが、他のオペレーティング システムでは必要あるかもしれません。このため、広く導入されているLinuxのパーティション分割ユーティリティも、うまく処理して境界で終了しようとします。もちろん、パーティションも重複してはいけません。 Chapter17.txt:GPTはすべての最新システムに搭載されており、UEFI(Unified Extensible Firmware Interface)に基づいています。デフォルトでは、最大128個のプライマリ パーティションを持つことができます。GPTを使用する場合、拡張パーティションは必要ありません。パーティションのサイズは最大233TBです(MBRの場合はわずか2TBです)。 Chapter17.txt://2の33乗です。 Chapter17.txt:パーティションを使う理由 Chapter17.txt:システム データを複数のパーティションに分割すると良い理由は、次のように複数あります。 Chapter17.txt:オペレーティング システム ファイルからのユーザー データとアプリケーション データを分離できます Chapter17.txt:オペレーティング システムやマシン間で共有できます Chapter17.txt:異なるシステム部分に、異なるクォータとパーミッションを課すことにより、セキュリティを強化できます Chapter17.txt:サイズの配慮; 可変ストレージと揮発性ストレージを不変部分から分離できます Chapter17.txt:最も頻繁に使用されるデータをより高速なストレージ メディアに保存することで、パフォーマンスを強化できます Chapter17.txt:スワップ領域はデータから分離でき、ハイバネーション ストレージにも使用できます。 Chapter17.txt:何を分割しパーティションをどのように分離するかは、よく考えて決定しなければなりません。個別のパーティションを持つ理由には、セキュリティ、クォータ、設定、サイズ制限の細分性の向上があります。データを保護するために個別のパーティションを持つことができます。 Chapter17.txt:一般的なパーティション レイアウトには、ブート パーティション、ルート ファイルシステム(/)のパーティション、スワップ パーティション、および/homeディレクトリ ツリーのパーティションが含まれます。 Chapter17.txt:インストール/作成 をした後にパーティションのサイズを変更することは難しいことを念頭に置いて計画しましょう。 Chapter17.txt:MBRパーティション テーブル Chapter17.txt:ディスク パーティション テーブルはディスクのマスター ブート レコード(MBR)に含まれており、446バイトのブート レコードに続く64バイトがそれにあたります。ディスク上の1つのパーティションがアクティブとしてマークされることがあります。システムが起動する時に、MBRはそのパーティションからロードするアイテムを探します。 Chapter17.txt:拡張パーティションは1つしか存在できないことに注意してください。ただし、そのパーティションにはいくつかの論理パーティションが含まれている場合があります。 Chapter17.txt:MBR構造は、オペレーティング システムに依存しない規則で定義されています。最初の446バイトは、プログラム コード用に予約されています。通常は、ブートローダー プログラムの一部を保持します。次の64バイトは、最大4エントリのパーティション テーブル用です。オペレーティング システムは、ハードディスクを処理するためにこのテーブルを使います。 Chapter17.txt:Linuxシステムでは、CHSの開始アドレスと終了アドレスは無視されます。 Chapter17.txt:興味深いことに、MBRの末尾には、マジック ナンバー、シグネチャ ワード、またはセクタ マーカーとして知られる2バイトがあり、常に0x55AAの値を持っています。 Chapter17.txt:MBRディスク パーティション テーブル Chapter17.txt:パーティション テーブルの各エントリは16バイト長で、それぞれ、4つの可能なプライマリ パーティションのうちの1つを記述します。それぞれの情報は次のとおりです。 Chapter17.txt:アクティブ ビット Chapter17.txt:パーティションの開始セクタのアドレス。シリンダ/ヘッド/セクタ(CHS)形式(Linuxでは無視されます) Chapter17.txt:パーティションの種類のコード:xfs、LVM、ntfs、ext4、swapなどを示します Chapter17.txt:CHS形式のパーティションの最後のセクタのアドレス(Linuxでは無視されます) Chapter17.txt:開始セクタのアドレス、0からの通し番号 Chapter17.txt:パーティション内のセクタの数 Chapter17.txt:Linuxは、リニア ブロック アドレス(LBA)方式を使用して、最後の2つのフィールドのみを使用してアドレス指定をします。 Chapter17.txt:GPTパーティション テーブル Chapter17.txt:最新のハードウェアにはGPTサポートが付いています。 MBRサポートは徐々に消えています。 Chapter17.txt:GPTにあるProtective MBRは後方互換性のためにあり、UEFIシステムを古い方法で起動できます。 Chapter17.txt:GPTヘッダーの2つのコピーがディスクの先頭と末尾にあり、以下のメタデータを記述しています。 Chapter17.txt:ディスク上の使用可能なブロックのリスト Chapter17.txt:パーティションの数 Chapter17.txt:パーティション エントリのサイズ。各パーティション エントリの最小サイズは128バイトです。 Chapter17.txt:MBRディスク パーティション テーブル Chapter17.txt:blkidユーティリティ(後で説明します)は、パーティションに関する情報を表示します。 Chapter17.txt:最新のUEFI/GPTシステムの場合: Chapter17.txt:ROOT@x7:/root>blkid /dev/sda6 Chapter17.txt:/dev/sda6: LABEL="CENTOS7" UUID="77461ee7-c34a-4c5f-b0bc-29f4feecc743" 種類="ext4" PARTUUID="1f361af4-81e6-4a81-82 Chapter17.txt:ROOT@x7:/root> Chapter17.txt:レガシーMBRシステムの場合: Chapter17.txt:c7:/teaching/LFCW/LFS301>sudo blkid /dev/sdb1 Chapter17.txt:/dev/sdb1: LABEL="RHEL7" UUID="471dfeba-3ec7-4529-8069-2afe50762c57" 種類="ext4" Chapter17.txt:どちらの例も、パーティション自体ではなく、パーティション上のファイルシステムを表す一意のUUIDを提供しています。ファイルシステムが再フォーマットされると、このUUIDは変更されます。 Chapter17.txt:GPTパーティションは、パーティションを識別するPARTUUIDも提供します。これはファイルシステムが再フォーマットされても同じ値のままです。ハードウェアがサポートしているのであればMBRシステムをGPTに移行することは可能ですが、その際にマシンが操作不能なることがあります。 Chapter17.txt:ディスク デバイスとデバイス ノードの命名 Chapter17.txt:Linuxカーネルは、/devディレクトリにあるデバイス ノードを介して低レベルでディスクとやり取りします。通常、デバイス ノードは、カーネルの仮想ファイルシステムのインフラを介してのみアクセスされます。デバイス ノードを介したrawアクセスは、ファイルシステムを破壊する非常に効率的な方法です。たとえば、パーティションをフォーマットするときに次のように行います。 Chapter17.txt:$ sudo mkfs.ext4 /dev/sda9 Chapter17.txt:SCSIとSATAディスクのデバイス ノードは、単純なxxy[z]命名規則に従います。xxはデバイスの種類(通常はsd)、yはドライブ番号(a、b、cなど)の文字、zはパーティション番号です。 Chapter17.txt:最初のハードディスクは/dev/sda Chapter17.txt:2番目のハードディスクは/dev/sdb Chapter17.txt:など。 Chapter17.txt:パーティションも次のように簡単に列挙できます。 Chapter17.txt:/dev/sdb1は、2番目のディスクの最初のパーティションです Chapter17.txt:/dev/sdc4は、3番目のディスク上の4番目のパーティションです。 Chapter17.txt:上記で、sdはSCSIまたはSATAディスクを意味します。IDEディスクがあった時代には、/dev/hda3、/dev/hdbなどと命名されていました。 Chapter17.txt:ls -l /devを実行すると、現在利用可能なディスク デバイス ノードが表示されます。 Chapter17.txt:SCSIデバイス名の詳細 Chapter17.txt:SCSIデバイスの場合、第一、第二のハードディスクなどの意味をもう少し詳しく説明する必要があります。これらは、コントローラ番号/ ID番号の組み合わせによって決まります。 Chapter17.txt:ドライブの指定(a、b、cなど)は、バス自体の位置ではなく、主にSCSIデバイスのID番号に基づいています。 Chapter17.txt:たとえば、コントローラ0にターゲットID番号1と3があり、コントローラ1にターゲットID番号2と5(最後のドライブとして ID 2を持つ)の2つのSCSIコントローラがある場合、以下のようになります。 Chapter17.txt:ID 1は/dev/sdaになります Chapter17.txt:ID 3は/dev/sdbになります Chapter17.txt:ID 2(コントローラ1上)は/dev/sdcになります Chapter17.txt:ID 5は/dev/sddになります Chapter17.txt:blkid Chapter17.txt:blkidは、ブロック デバイスを見つけてその属性についてレポートするユーティリティです。libblkidライブラリで動作します。特定デバイスまたはデバイスのリストを引数にできます。以下のスクリーンショットは、引数付きのblkidの使用例です。 Chapter17.txt:$ sudo blkid /dev/sda* Chapter17.txt:blkidの使用例 Chapter17.txt:blkidは、ブロック デバイスが保持するコンテンツの種類(ファイルシステム、スワップなど)、そしてコンテンツ メタデータ(LABELまたはUUIDフィールドなど)から属性(トークン、NAME=valueペア)を見つけます。 Chapter17.txt:blkidは、フィンガー プリント可能なデータを含むデバイスでのみ動作します。たとえば、空のパーティションではブロックを識別するUUIDは生成しません。blkidには、2種類の操作形式があります。特定のNAME=valueペアを持つデバイスを検索することと、複数のデバイスのNAME=valueペアを表示することです。引数がなければ、すべてのデバイスについてレポートします。デバイスの指定方法とレポートする属性を指定するオプションはかなりの数あります。その他のコマンド例として以下があります。 Chapter17.txt:$ sudo blkid Chapter17.txt:$ sudo blkid -L root Chapter17.txt:lsblk Chapter17.txt:ツリー形式でブロック デバイス情報を表示するユーティリティとしてlsblkがあります。例を次のスクリーンショットに示します。 Chapter17.txt:lsblkの使用例 Chapter17.txt:パーティションのサイズ変更 Chapter17.txt:ほとんどのLinuxシステムでは、少なくとも2つのパーティションを使用する必要があります。 Chapter17.txt:クリックして各ボックスを展開し、ルート パーティションとスワップ パーティションの詳細をご覧ください。 Chapter17.txt:パーティション Chapter17.txt:/(ルート) Chapter17.txt:これは論理ファイルシステム全体に対して使用されます。 Chapter17.txt:実際、ほとんどのインストールでは、複数のパーティションに複数のファイルシステムがあり、マウント ポイントで結ばれています。 Chapter17.txt:ほとんどのファイルシステムでは、ルート パーティションのサイズを変更することは困難です。後で説明するLVMを使用すると、これが簡単にできます。 Chapter17.txt:ルート パーティションだけでLinuxを実行することは確かに可能ですが、ほとんどのシステムはより多くのパーティションを使用して、バックアップの容易化、ディスク ドライブのより効率的な使用、セキュリティの強化を図っています。 Chapter17.txt:スワップ Chapter17.txt:スワップは、物理メモリの拡張として使用されます。ファイルに書き戻されていないメモリのページは、再び必要になるまでディスクに移動できます。 Chapter17.txt:スワップ サイズは物理メモリのサイズと同じにすることが推奨されています。場合によっては、2倍にすることが推奨されます。ただし、正しい選択はシステムの使い方とハードウェア機能によって異なります。このテーマに関する考え方の例は、SwapFaqウェブ ページ、および「Is a swap partition required for SLES?」の資料で見つけることができます。 Chapter17.txt:システムには、複数のスワップ パーティションやスワップ ファイルが存在する場合があります。 Chapter17.txt:単一ディスク システムでは、スワップ パーティションを中央に配置してください。複数のディスク システムでは、スワップをディスクに分散してみてください。 Chapter17.txt:スワップを追加しても、特定の時点で役に立たなくなるため、必ずしも効果があるとは限りません。メモリを追加するか、システムのセットアップを見直す必要があるでしょう。 Chapter17.txt:スワップは仮想メモリとして使用されます。プロセスからのページが物理メモリから移動されるたびに、それらは通常はスワップ デバイスに格納されます。最近のUbuntuディストリビューションでは、デフォルトではパーティションではなくファイルにスワップを配置しています。 Chapter17.txt:パーティション テーブルのバックアップと復元 Chapter17.txt:ディスクのパーティションと再パーティションは危険な操作です。何か問題が発生した場合に状況を復元できるようにするには、パーティション テーブルのバックアップと復元の方法を知っておく必要があります。 Chapter17.txt:次のように、ddを使用して簡単にバックアップできます。 Chapter17.txt:$ sudo dd if=/dev/sda of=mbrbackup bs=512 count=1 Chapter17.txt:最初のディスクのMBRをバックアップします。これには、その一部である64ビット パーティション テーブルも含まれます。 Chapter17.txt:以下を実行することで、必要に応じてMBRを復元できます。 Chapter17.txt:$ sudo dd if=mbrbackup of=/dev/sda bs=512 count=1 Chapter17.txt:上記のコマンドはプライマリ パーティション テーブルのみをコピーすることに注意してください。他のパーティションに保存されているパーティション テーブルはコピーしません(拡張パーティションなど)。 Chapter17.txt:🚩 Chapter17.txt:ディスク パーティション テーブルを変更すると、ディスク上のすべてのファイルシステムのすべてのデータが削除される可能性があると、常に想定する必要があります(削除されるべきではありませんが、注意は必要です!)したがって、変更などの作業を行う前に、(まだバックアップされていない)すべてのデータのバックアップを行うことは賢明なことです。 Chapter17.txt: Chapter17.txt:特に、ddの使用には注意する必要があります。単純な入力ミスやオプションの誤用はディスク全体を破壊する可能性があります。したがって、バックアップを必ず行ってください! Chapter17.txt:GPTシステムの場合、次のようにsgdiskツールを使用するのが最適です。 Chapter17.txt:x7:/tmp>sudo sgdisk --backup=/tmp/sda_backup /dev/sda Chapter17.txt:The operation has completed successfully. Chapter17.txt:x7:/tmp>sudo file sda_backup Chapter17.txt:sda_backup: x86 boot sector; partition 1: ID=0xee, starthead 0, startsector 1, 1000215215 sectors, extended partition table (last)\011, code offset 0x63 Chapter17.txt:純粋なMBRシステムで実行する場合は以下のようになります。 Chapter17.txt:c7:/tmp>sudo sgdisk --backup=/tmp/sda_backup /dev/sda Chapter17.txt:*************************************************************** Chapter17.txt:Found invalid GPT and valid MBR; converting MBR to GPT format in memory. Chapter17.txt:*************************************************************** Chapter17.txt:The operation has completed successfully. Chapter17.txt:c7:/tmp>file /tmp/sda_backup Chapter17.txt:/tmp/sda_backup: x86 boot sector; partition 1: ID=0xee, starthead 0, startsector 1, 3907029167 sectors, code offset 0xb8 Chapter17.txt:パーティション テーブル エディタ Chapter17.txt:パーティション テーブルの管理に使用できるユーティリティは多数あります。 Chapter17.txt:クリックして各カードを反転し、これらのユーティリティについて学習します。 Chapter17.txt:fdisk Chapter17.txt:fdisk は、メニュー方式のパーティション テーブル エディタです。これは最も一般的で、最も柔軟なパーティション テーブル エディタの1つです。他のパーティション テーブル エディタと同様に、変更を行う前に、現在のパーティション テーブル設定を書き留めるか、現在の設定のコピーを作成してください。 Chapter17.txt:sfdisk Chapter17.txt:sfdiskは非対話型のLinuxベースのパーティション エディタ プログラムであり、スクリプト作成に役立ちます。sfdiskツールは注意して使用してください! Chapter17.txt:parted Chapter17.txt:partedはGNUパーティション操作プログラムです。パーティション(特定のファイルシステムを含む)の作成、削除、サイズ変更、移動ができます。partedコマンドのGUIインターフェイスはgpartedです。 Chapter17.txt:gparted Chapter17.txt:gpartedは、広く使用されているpartedのグラフィカル インターフェイスです。 Chapter17.txt:gdisk Chapter17.txt:gdiskはGPTシステムに使用されますが、MBRシステムでも操作できます。 Chapter17.txt:sgdisk Chapter17.txt:gdiskは、スクリプトまたはコマンド ライン インターフェイスです。 Chapter17.txt:多くのLinuxディストリビューションには、CDROMまたはUSBスティックから実行できるライブ/インストール バージョンがあります。通常、これらのメディアにはgpartedのコピーが含まれています。パーティション プログラムの実行中には実際には使用されませんが、ディスク上のグラフィカル パーティション ツールとして簡単に使用できます。 Chapter17.txt:fdiskの使用例 Chapter17.txt:fdiskはどのLinuxインストールにも常に含まれるので、使用方法を学ぶことをお勧めします。fdiskを実行するには、root権限が必要です。処理は少し複雑になる可能性があり、注意が必要です。 Chapter17.txt:fdiskインターフェイスはシンプルなテキスト メニュー方式です。次のように、まず特定のディスクで起動します。 Chapter17.txt:$ sudo fdisk /dev/sdb Chapter17.txt:その後コマンドを入力します。主な(1文字の)コマンドは次のとおりです。 Chapter17.txt:m:メニューを表示します。 Chapter17.txt:p:パーティション テーブルの一覧を表示します。 Chapter17.txt:n:新しいパーティションを作成します。 Chapter17.txt:d:パーティションを削除します。 Chapter17.txt:t:パーティションの種類を変更します。 Chapter17.txt:w:新しいパーティション テーブル情報を書き込んで終了します。 Chapter17.txt:q:変更せずに終了します。 Chapter17.txt:幸いなことに、wを入力してパーティション テーブルをディスクに書き込むまで、実際の変更は行われません。したがって、wを使用してディスクに書き込む前に、(p を使用して)パーティション テーブルが正しいことを確認することが重要です。何かが間違っている場合は、qを使用して安全に終了できます。 Chapter17.txt:システムは、再起動するまで新しいパーティション テーブルを使用しません。ただし、次のコマンドで再読み込みできます。 Chapter17.txt:$ sudo partprobe -s Chapter17.txt:修正されたパーティション テーブルを試してみてください。ただし、これは常に確実に機能するとは限りません。パーティションの混在は壊滅的なものになる可能性があるため、新しいパーティションのフォーマットなどを行う前に再起動することをお勧めします。 Chapter17.txt:いつでもできることとして、以下があります。 Chapter17.txt:$ cat /proc/partitions Chapter17.txt:これでオペレーティング システムが現在認識しているパーティションを調べることができます。 Chapter17.txt:デモ:ディスクのパーティション分割 Chapter17.txt:このビデオは、fdiskの操作の簡単なデモを提供します。 Chapter17.txt:演習 Chapter17.txt:演習の要件 Chapter17.txt:このセクションの演習では、mkfsを使ってファイルシステムのフォーマットを行い、mountを使ってルート ファイル ツリーにファイルシステムのマウントを行います。これらのコマンドについては、次のセッションで詳しく説明します。 Chapter17.txt:このセクションの最初の3つの演習では、partedプログラムの有無にかかわらず、ループ デバイスの機能を使用します。 Chapter17.txt:🚩 Chapter17.txt:このコースの後半の演習では、パーティション分割されていないディスク領域が必要になります。大きな領域は必要はありません。1~2GBで十分です。自分のマシンを使用している場合は、その領域があるかどうか確認してください。もし、無ければ、gpartedを使うか、今まで説明した方法、もしくはこれから説明する方法で、パーティションとファイルシステム (こちらを先に!) を縮小して、空き領域を用意してください。 Chapter17.txt:パーティション分割されていない実際の物理ディスク領域がある場合は、次の手順を実行する必要はありませんが、実習しておくことは有用です。 Chapter17.txt:課題 17.1:ファイルをディスク パーティション イメージとして使う Chapter17.txt:🚩 Chapter17.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter17.txt:Exercise 17.1: Using a File as a Disk Partition Image Chapter17.txt:In this first exercise, we are going to create a file that will be used as a container for a full hard disk partition image, andfor all intents and purposes can be used like a real hard partition. In the following exercise, we will show how to putmore than one partition on it and have it behave as an entire disk. Chapter17.txt:1. Create a file full of zeros 1 GB in length: Chapter17.txt:$ dd if=/dev/zero of=imagefile bs=1M count=1024 Chapter17.txt:You can make a much smaller file if you like or do not have that much available space in the partition you are creatingthe file on. Chapter17.txt:2. Put a filesystem on it: Chapter17.txt:$ mkfs.ext4 imagefile Chapter17.txt:mke2fs 1.42.9 (28-Dec-2013) Chapter17.txt:imagefile is not a block special device. Chapter17.txt:Proceed anyway?(y,n) y Chapter17.txt:Discarding device blocks: done Chapter17.txt:..... Chapter17.txt:Of course you can format with a different filesystem, doing mkfs.ext3,mkfs.vfat,mkfs.xfsetc. Chapter17.txt:3. Mount it somewhere: Chapter17.txt:$ mkdir mntpoint Chapter17.txt:$ sudo mount -o loop imagefile mntpoint Chapter17.txt:You can now use this to your heart’s content, putting files etc. on it. Chapter17.txt:4. When you are done unmount it with: Chapter17.txt:$ sudo umount mntpoint Chapter17.txt:An alternative method to using theloopoption to mount would be: Chapter17.txt:$ sudo losetup /dev/loop2 imagefile Chapter17.txt:$ sudo mount /dev/loop2 mntpoint Chapter17.txt:.... Chapter17.txt:$ sudo umount mntpoint Chapter17.txt:$ sudo losetup -d /dev/loop2 Chapter17.txt:We will discuss losetup in a subsequent exercise, and you can use /dev/loop[0-7]b ut you have to be careful they are notalready in use, as we will explain. Chapter17.txt:You should note that using a loop device file instead of a real partition can be useful, but it is pretty worthless for doing anykind of measurements or benchmarking. This is because you are placing one filesystem layer on top of another, which can only have a negative effect on performance, and mostly you just use the behavior of the underlying filesystem the image file iscreated on. Chapter17.txt:課題 17.2: ディスク イメージ ファイルをパーティション分割する Chapter17.txt:🚩 Chapter17.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter17.txt:Exercise 17.2: Partitioning a Disk Image File Chapter17.txt:The next level of complication is to divide the container file into multiple partitions, each of which can be used to hold a filesystem, or a swap area. Chapter17.txt:You can reuse the image file created in the previous exercise or create a new one. Chapter17.txt:1. Runfdiskon your imagefile: Chapter17.txt:$ sudo fdisk -C 130 imagefile Chapter17.txt:Device does not contain a recognized partition table Chapter17.txt:Building a new DOS disk label with disk identifier 0x6280ced3. Chapter17.txt:Welcome to fdisk (util-linux 2.23.2). Chapter17.txt:Changes will remain in memory only, until you decide to write them. Chapter17.txt:Be careful before using the write command. Chapter17.txt:Command (m for help): Chapter17.txt:The-C 130 sets the number of phony cylinders in the drive, and is only necessary in old versions offdisk, which unfortunately you will find on RHEL 6. However, it will do no harm on other distributions. Chapter17.txt:2. Typemto get a list of commands: Chapter17.txt:m Chapter17.txt:Command (m for help): m Chapter17.txt:Command action Chapter17.txt:a toggle a bootable flag Chapter17.txt:b edit bsd disklabel Chapter17.txt:c toggle the dos compatibility flag Chapter17.txt:d delete a partition Chapter17.txt:g create a new empty GPT partition table Chapter17.txt:G create an IRIX (SGI) partition table Chapter17.txt:l list known partition types Chapter17.txt:m print this menu Chapter17.txt:n add a new partition Chapter17.txt:o create a new empty DOS partition table Chapter17.txt:p print the partition table Chapter17.txt:q quit without saving changes Chapter17.txt:s create a new empty Sun disklabel Chapter17.txt:t change a partition's system id Chapter17.txt:u change display/entry units Chapter17.txt:v verify the partition table Chapter17.txt:w write table to disk and exit Chapter17.txt:x extra functionality (experts only) Chapter17.txt:Command (m for help): Chapter17.txt:3. Create a new primary partition and make it 256 MB (or whatever size you would like: Chapter17.txt:Command (m for help): n Chapter17.txt:Partition type: Chapter17.txt:p primary (0 primary, 0 extended, 4 free) Chapter17.txt:e extended Chapter17.txt:Select (default p): p Chapter17.txt:Partition number (1-4, default 1): 1 Chapter17.txt:First sector (2048-2097151, default 2048): Chapter17.txt:Using default value 2048 Chapter17.txt:Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +256M Chapter17.txt:Partition 1 of type Linux and of size 256 MiB is set Chapter17.txt:4. Add a second primary partition also of 256 MB in size: Chapter17.txt:Command (m for help): n Chapter17.txt:Partition type: Chapter17.txt:p primary (1 primary, 0 extended, 3 free) Chapter17.txt:e extended Chapter17.txt:Select (default p): p Chapter17.txt:Partition number (2-4, default 2): 2 Chapter17.txt:First sector (526336-2097151, default 526336): Chapter17.txt:Using default value 526336 Chapter17.txt:Last sector, +sectors or +size{K,M,G} (526336-2097151, default 2097151): +256M Chapter17.txt:Partition 2 of type Linux and of size 256 MiB is set Chapter17.txt:Command (m for help): p Chapter17.txt:Disk imagefile: 1073 MB, 1073741824 bytes, 2097152 sectors Chapter17.txt:Units = sectors of 1 * 512 = 512 bytes Chapter17.txt:Sector size (logical/physical): 512 bytes / 512 bytes Chapter17.txt:I/O size (minimum/optimal): 512 bytes / 512 bytes Chapter17.txt:Disk label type: dos Chapter17.txt:Disk identifier: 0x6280ced3 Chapter17.txt:Device Boot StartEnd Blocks Id System Chapter17.txt:imagefile1 2048 526335 262144 83 Linux Chapter17.txt:imagefile2 526336 1050623 262144 83 Linux Chapter17.txt:5. Write the partition table to disk and exit: Chapter17.txt:Command (m for help): w Chapter17.txt:The partition table has been altered! Chapter17.txt:Syncing disks. Chapter17.txt:While this has given us some good practice, we haven’t yet seen a way to use the two partitions we just created. We’ll startover in the next exercise with a method that lets us do so. Chapter17.txt:課題 17.3: losetupとpartedを使う Chapter17.txt:🚩 Chapter17.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter17.txt:Exercise 17.3: Using losetup and parted Chapter17.txt:We are going to experiment more with: Chapter17.txt:• Loop devices andlosetup Chapter17.txt:• parted to partition at the command line non-interactively. Chapter17.txt:We expect that you should read the man pages for losetup and parted before doing the following procedures. Chapter17.txt:Once again, you can reuse the image file or, better still, zero it out and start freshly or with another file. Chapter17.txt:1. Associate the image file with aloopdevice: Chapter17.txt:$ sudo losetup -f Chapter17.txt:/dev/loop1 Chapter17.txt:$ sudo losetup /dev/loop1 imagefile Chapter17.txt:where the first command finds the firstfreeloop device. The reason to do this is you may already be using one or moreloop devices. For example, on the system that this is being written on, before the above command is executed: Chapter17.txt:$ losetup -a Chapter17.txt:/dev/loop0: []: (/usr/src/KERNELS.sqfs) Chapter17.txt:a squashfs compressed, read-only filesystem is already mounted using /dev/loop0. (The output of this command willvary with distribution.) If we were to ignore this and use losetup on /dev/loop0 we would almost definitely corrupt the file. Chapter17.txt:2. Create a disk partition label on the loop device (image file): Chapter17.txt:$ sudo parted -s /dev/loop1 mklabel msdos Chapter17.txt:3. Create three primary partitions on the loop device: Chapter17.txt:$ sudo parted -s /dev/loop1 unit MB mkpart primary ext4 0 256 Chapter17.txt:$ sudo parted -s /dev/loop1 unit MB mkpart primary ext4 256 512 Chapter17.txt:$ sudo parted -s /dev/loop1 unit MB mkpart primary ext4 512 1024 Chapter17.txt:4. Check the partition table: Chapter17.txt:$ fdisk -l /dev/loop1 Chapter17.txt:Disk /dev/loop1: 1073 MB, 1073741824 bytes, 2097152 sectors Chapter17.txt:Units = sectors of 1 * 512 = 512 bytes Chapter17.txt:Sector size (logical/physical): 512 bytes / 512 bytes Chapter17.txt:I/O size (minimum/optimal): 512 bytes / 512 bytes Chapter17.txt:Disk label type: dos Chapter17.txt:Disk identifier: 0x00050c11 Chapter17.txt:Device Boot Start End Blocks Id System Chapter17.txt:/dev/loop1p1 1 500000 250000 83 Linux Chapter17.txt:/dev/loop1p2 500001 1000000 250000 83 Linux Chapter17.txt:/dev/loop1p3 1000001 2000000 500000 83 Linux Chapter17.txt:5. What happens next depends on what distribution you are on. For example, on RHEL and Ubuntu you will find new device nodes have been created: Chapter17.txt:$ ls -l /dev/loop1* Chapter17.txt:brw-rw---- 1 root disk 7, 1 Oct 7 14:54 /dev/loop1 Chapter17.txt:brw-rw---- 1 root disk 259, 0 Oct 7 14:54 /dev/loop1p1 Chapter17.txt:brw-rw---- 1 root disk 259, 3 Oct 7 14:54 /dev/loop1p2 Chapter17.txt:brw-rw---- 1 root disk 259, 4 Oct 7 14:54 /dev/loop1p3 Chapter17.txt:and we will use them in the following. Chapter17.txt:6. Put filesystems on the partitions: Chapter17.txt:$ sudo mkfs.ext3 /dev/loop1p1 Chapter17.txt:$ sudo mkfs.ext4 /dev/loop1p2 Chapter17.txt:$ sudo mkfs.vfat /dev/loop1p3 Chapter17.txt:7. Mount all three filesystems and show they are available: Chapter17.txt:$ mkdir mnt1 mnt2 mnt3 Chapter17.txt:$ sudo mount /dev/loop1p1 mnt1 Chapter17.txt:$ sudo mount /dev/loop1p2 mnt2 Chapter17.txt:$ sudo mount /dev/loop1p3 mnt3 Chapter17.txt:$ df -Th Chapter17.txt:Filesystem Type Size Used Avail Use% Mounted on Chapter17.txt:/dev/sda1 ext4 29G 8.5G 19G 32% / Chapter17.txt:.... Chapter17.txt:/dev/loop1p1 ext3 233M 2.1M 219M 1% mnt1 Chapter17.txt:/dev/loop1p2 ext4 233M 2.1M 215M 1% mnt2 Chapter17.txt:/dev/loop1p3 vfat 489M 0 489M 0% mnt3 Chapter17.txt:8. After using the filesystems to your heart’s content you can unwind it all: Chapter17.txt:$ sudo umount mnt1 mnt2 mnt3 Chapter17.txt:$ rmdir mnt1 mnt2 mnt3 Chapter17.txt:$ sudo losetup -d /dev/loop1 Chapter17.txt:課題 17.4: 実ハードディスクをパーティション分割する Chapter17.txt:🚩 Chapter17.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter17.txt:Exercise 17.4: Partitioning a Real Hard Disk Chapter17.txt:If you have real hard disk un-partitioned space available, experiment with fdisk to create new partitions, either primary orlogical within an extended partition. Write the new partition table to disk and then format and mount the new partitions. Chapter17.txt:知識チェック Chapter17.txt:「第17章 - ディスクのパーティション分割」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter17.txt:クイズ開始 Chapter17.txt:問題 17.1 Chapter17.txt:新しい内部ディスクを既存のサーバーに追加する場合、システムを再起動した後に、ディスクを恒久的にマウントするためには、次の手順を実行する必要があります。最適な実行順序はどれですか。 Chapter17.txt:ファイルシステムでフォーマットします Chapter17.txt:新しいパーティションを作成します Chapter17.txt:システムを再起動します Chapter17.txt:/etc/fstabを編集します Chapter17.txt:A. 1, 2, 3, 4 Chapter17.txt:B. 2, 1, 3, 4 Chapter17.txt:C. 2, 1, 4, 3 Chapter17.txt:D. 2, 4, 1, 3 Chapter17.txt:問題 17.2 Chapter17.txt:/dev/sdaなどのストレージ デバイスの従来の名前は、ディスクが接続されているポートを変更したり、ディスクを別のサーバーに接続したりすると別の名前になる可能性があるため、識別の意味では信頼できません。Linuxでは、ストレージ デバイスの命名にラベルとUUIDを使用します。現在システムに接続されているブロック デバイスの、UUIDを表示するツールは次のうちどれですか。 Chapter17.txt:A. fdisk Chapter17.txt:B. parted Chapter17.txt:C. blkid Chapter17.txt:D. lsblk Chapter18.txt:ファイルシステムの機能:属性、作成、検査、マウント Chapter18.txt:はじめに Chapter18.txt:第18章はじめに Chapter18.txt:このビデオでは、この章で説明するトピックの概要を簡単に説明します。 Chapter18.txt:学習目標 Chapter18.txt:この章の終わりまでに、次のことができるようになります。 Chapter18.txt:ディレクトリ ファイルや拡張属性などの概念を説明できます。 Chapter18.txt:ファイルシステムを作成してフォーマットできます。 Chapter18.txt:ファイルシステムのエラーを確認して修正できます。 Chapter18.txt:ファイルシステムをマウントおよびアンマウントできます。 Chapter18.txt:ネットワーク ファイルシステムを使用できます。 Chapter18.txt:ファイルシステムを自動的にマウントする方法を理解し、それらがブート時に確実にマウントされるようにできます。 Chapter18.txt:ファイルシステムの機能:属性、作成、検査、マウント Chapter18.txt:lsattrとchattr Chapter18.txt:拡張属性は、ファイルシステムが直接解釈しないメタデータをファイルに結びつけるものです。この拡張属性の管理に4種類の名前空間を使っています。それは、user, trusted, security, systemです。system名前空間はアクセス制御リスト(ACL)に使用され、security名前空間はSELinuxによって使用されます。 Chapter18.txt:属性フラグの値はファイルのinodeに保存され、rootユーザーのみが変更および設定できます。それらはlsattrで表示され、chattrで設定されます。属性フラグは、ファイルに設定できます。 Chapter18.txt:クリックして各ボックスを展開し、ファイルに設定できるフラグの詳細をご覧ください。 Chapter18.txt:属性フラグ Chapter18.txt:i:Immutable(変更不可) Chapter18.txt:Immutable属性を持つファイルは変更できません(rootユーザでも変更できません)。削除や名前の変更はできません。ハードリンクを作成できず、ファイルにデータを書き込むこともできません。この属性を設定または削除できるのは、スーパーユーザーのみです。 Chapter18.txt:a: Append-only(追加のみ許可) Chapter18.txt:Append-only属性が設定されたファイルは、書き込みする場合は追加モードでのみ開くことができます。この属性を設定または削除できるのは、スーパーユーザーのみです。 Chapter18.txt:d:No-dump(ダンプなし) Chapter18.txt:No-dump属性が設定されたファイルは、ダンプ プログラムが実行されても無視します。これは、スワップ ファイルとキャッシュ ファイルにおいて、バックアップに時間を費やしたくない時に役立ちます。 Chapter18.txt:A:No atime update(atimeの更新なし) Chapter18.txt:No-atime-update属性が設定されたファイルは、ファイルがアクセスされても変更されなかったときは、atime(アクセス時間)レコードを変更しません。これによりシステム上のディスクI/Oの量が減少するため、一部のシステムのパフォーマンスが向上します。 Chapter18.txt:設定できるフラグは他にもあります。 man chattrと入力すると、リスト全体が表示されます。chattrの書式は次のとおりです。 Chapter18.txt:$ chattr [+|-|=mode] filename Chapter18.txt:lsattrは、ファイルの属性を表示します。 Chapter18.txt:$ lsattr filename Chapter18.txt:mkfs Chapter18.txt:すべての種類のファイルシステムには、パーティション上のファイルシステムをフォーマットするためのユーティリティがあります。一般的なユーティリティはmkfsです。ただし、これはファイルシステム固有のプログラムの単なるフロントエンドであり、それぞれ特定のオプションがあります。 Chapter18.txt:mkfs Chapter18.txt:mkfsの一般的な形式は次のとおりです。 Chapter18.txt:mkfs [-t fstype] [options] [device-file] Chapter18.txt:[device-file]は、/dev/sda3や/dev/vg/lvm1などのデバイス名です。 Chapter18.txt:次の2つのコマンドは同じです。 Chapter18.txt:$ sudo mkfs -t ext4 /dev/sda10 Chapter18.txt:$ sudo mkfs.ext4 /dev/sda10 Chapter18.txt:ファイルシステムの各種類には、それぞれフォーマット時に設定できる独自の特定オプションがあります。たとえば、ext4ファイルシステムを作成する際に意識すべきオプションの1つに、ジャーナリング設定があります。このオプションには、ジャーナル ファイルのサイズ定義や、外部ジャーナル ファイルを使用するかどうかの定義が含まれます。 Chapter18.txt:詳細を確認するには、各mkfs.*プログラムのmanページをご覧ください。 Chapter18.txt:fsck Chapter18.txt:すべての種類のファイルシステムには、エラーをチェックするように(そしてできれば検出されたものを修復するように)設計されたユーティリティがあります。これらのユーティリティの一般名はfsckです。ただし、これはファイルシステム固有のプログラムの単なるフロントエンドです。 Chapter18.txt:fsckの一般的な形式は次のとおりです。 Chapter18.txt:fsck [-t fstype] [options] [device-file] Chapter18.txt:[device-file]は、/dev/sda3や/dev/vg/lvm1などのデバイス名です。通常はファイルシステムの種類を指定する必要はありません。fsckはパーティションの開始時にスーパーブロックを調べて把握するからです。 Chapter18.txt:-rオプションを使用して、見つかったエラーを1つずつ手動で修正するか、-aオプションなどを使用して、可能な限り自動で修正するかを選択できます。さらに、ファイルシステムの各種類には、それぞれチェック時に設定できる特定のオプションがある場合があります。 Chapter18.txt:ジャーナリング ファイルシステムは、次の2つの理由により、古い世代のファイルシステムよりもチェックがはるかに高速になっています。 Chapter18.txt:最後のトランザクション以外のすべてのログが記録され確認されているため、パーティション全体をスキャンしてエラーを検出する必要はほとんどありません。そのため、チェックする時間はほとんどかかりません。 Chapter18.txt:ファイルシステム全体をチェックするにしても、新しいファイルシステムは高速fsckを念頭に置いて設計されています。古いファイルシステムは、サイズがはるかに小さいため、これについてあまり考えていませんでした。 Chapter18.txt:次の2つのコマンドは同じです。 Chapter18.txt:$ sudo fsck -t ext4 /dev/sda10 Chapter18.txt:$ sudo fsck.ext4 /dev/sda10 Chapter18.txt:ファイルシステムがオペレーティング システムによって認識されていれば、次の方法でできます。 Chapter18.txt:$ sudo fsck /dev/sda10 Chapter18.txt:そして、システムはパーティションの最初の数バイトを調べることでその種類を判別します。 Chapter18.txt:fsckは、設定された回数のマウントを行った後に、または最後に実行されてから設定された間隔が過ぎた後に、自動的に実行されます。マウントされていないファイルシステムでのみ実行する必要があります。ブート時にマウントされた、すべてのファイルシステムのチェックを強制的に行うことができます。 Chapter18.txt:$ sudo touch /forcefsck Chapter18.txt:$ sudo reboot Chapter18.txt:ファイル/forcefsckは、正常にチェックが終了すると消えます。これが貴重な技である理由の1つは、ルート ファイルシステムでfsckを実行できることです。実行中のシステムではその実行は難しいからです。 Chapter18.txt:詳細を確認するには、各 fsck.*プログラムのmanページをご覧ください。 Chapter18.txt:ファイルシステムのマウント Chapter18.txt:Linuxでアクセス可能なすべてのファイルは、ツリーの先頭がルート ディレクトリ(/)である1つの大きな階層的なツリー構造になっています。ただし、複数のパーティション(それぞれに独自のファイルシステムの種類を持つことができる)を同じファイルシステム ツリーに結合することも普通にできます。これらのパーティションは、異なる物理デバイス上に、もっと言えばネットワーク上にも存在する場合があります。 Chapter18.txt:mountプログラムを使用すると、ツリー構造の任意の場所にマウントできます。umountはそれらのマウントを解除(アンマウント)できます。 Chapter18.txt:マウント ポイントとは、ファイルシステムが接続されているディレクトリを指します。mountを実行する前にそのディレクトリが存在している必要があります。mkdirを使用して、空のディレクトリを作成できます。既存のディレクトリが使用され、マウント ポイントとして使用される前にすでそのディレクトリにファイルがある場合、そのファイルはマウント後には非表示になります。これらのファイルは削除されず、ファイルシステムがアンマウントされると再び表示されます。 Chapter18.txt:デフォルトでは、ファイルシステムのマウントとアンマウントができるのはスーパーユーザーのみです。 Chapter18.txt:各ファイルシステムは、次のように特定のディレクトリの下にマウントされます。 Chapter18.txt:$ sudo mount -t ext /dev/sdb4 /home Chapter18.txt:これはext4ファイルシステムをマウントすることを意味しています。 Chapter18.txt:通常、-t オプションでファイルシステムの種類を指定する必要はありません。 Chapter18.txt:ファイルシステムはハード ドライブの特定のパーティション(/dev/sdb4)に作られます。 Chapter18.txt:そして、ファイルシステムは、現在のディレクトリ ツリーの/homeにマウントされます Chapter18.txt:この/homeディレクトリに元々あるファイルは、パーティションがアンマウントされるまで非表示になります。 Chapter18.txt:mount Chapter18.txt:mountの一般的な形式は次のとおりです。 Chapter18.txt:mount [options] Chapter18.txt:この例では、ファイルシステムが存在するデバイス ノードを使用してマウントしています。ただし、ラベルまたはUUIDを使用してマウントすることもできます。したがって、以下はすべて同じ結果になります。 Chapter18.txt:$ sudo mount /dev/sda2 /home Chapter18.txt:$ sudo mount LABEL=home /home Chapter18.txt:$ sudo mount -L home /home Chapter18.txt:$ sudo mount UUID=26d58ee2-9d20-4dc7-b6ab-aa87c3cfb69a /home Chapter18.txt:$ sudo mount -U 26d58ee2-9d20-4dc7-b6ab-aa87c3cfb69a /home Chapter18.txt:ラベルはe2labelなどのファイルシステムの種類に固有のユーティリティによって割り当てられます。UUIDはパーティションがファイルシステムのコンテナとして作成され、mkfsでフォーマットされる時に割り当てられます。 Chapter18.txt:これら3つのデバイス指定方法はいずれも使用できますが、最新のシステムでは、デバイス ノード形式の使用は推奨していません。その理由は、システムの起動方法によって、どのハード ドライブが最初に見つかるかは異なり、名前が変わる可能性があるためです。ラベルは改善されていますが、まれに、2つのパーティションが同じラベルで作成される場合があります。しかし、UUIDは常に一意である必要があり、パーティションの作成時に作成されます。 Chapter18.txt:mountには、-a(/etc/fstabに記載されているすべてのファイルシステムをマウント)のような一般的なものだけでなく、多くのファイルシステム固有のオプションがあります。これについては非常に長いmanページがあります。一般的な例は次のとおりです。 Chapter18.txt:$ sudo mount -o remount,ro /myfs Chapter18.txt:これは、読み取り専用(read-only)属性で、ファイルシステムを再マウントします。 Chapter18.txt:次の方法でmountのオプションの情報を取得することができます。 Chapter18.txt:$ mount --help Chapter18.txt:mount のオプション Chapter18.txt:現在マウントされているファイルシステム Chapter18.txt:現在マウントされているファイルシステムのリストは、次のように入力すると表示できます。 Chapter18.txt:mount Chapter18.txt:現在マウントされているファイルシステム Chapter18.txt:umount Chapter18.txt:次の方法で、ファイルシステムをアンマウント(マウント解除)できます。 Chapter18.txt:$ umount [device-file | mount-point] Chapter18.txt:以下は、ファイルシステムをアンマウントする方法の例です。 Chapter18.txt:/homeファイルシステムをアンマウントする場合: Chapter18.txt:$ sudo umount /home Chapter18.txt:/dev/sda3デバイスをアンマウントする場合: Chapter18.txt:$ sudo umount /dev/sda3 Chapter18.txt:ファイルシステムをアンマウントするコマンドはumount(unmountではありません!)であることに注意してください。 Chapter18.txt:mountと同様に、umountにも多くのオプションがあり、その多くはファイルシステムの種類に固有のものです。繰り返しになりますが、manページは特定のオプションに関する最適な情報源です。 Chapter18.txt:ファイルシステムをアンマウントするときに発生する最も一般的なエラーは、現在使用中のファイルシステムに対して行おうとすることです。つまり、ファイルシステム内のファイルまたは他のエントリを使用しているアプリケーションが現在ある場合です。 Chapter18.txt:これは、マウントされたファイルシステムのディレクトリでターミナル ウィンドウを開くのと同じくらい簡単に解決できます。そのウィンドウでcdを使用するか、アプリケーションを強制終了するだけで、デバイスがビジー状態であるというエラーが解消され、アンマウントが可能になります。 Chapter18.txt:ただし、このエラーを引き起こすプロセスが他にある場合、ファイルシステムをアンマウントする前にそれらを強制終了する必要があります。fuserを使用すれば、どのユーザーがファイルシステムを使用しているかを確認し、それらを強制終了できます(確認をして、あなたが最初にユーザーに警告することもできます)。lsof(「開いているファイルを一覧表示する」)を使用して、どのファイルが使用中でアンマウントをブロックしているかを確認してください。 Chapter18.txt:ネットワークの共有(NFS) Chapter18.txt:ネットワーク共有を介してリモート ファイルシステムをマウントすることは一般的であり、ローカル マシン上にあるかのように見えます。おそらく今までに使用されている最も一般的な方法はNFS(ネットワーク ファイルシステム:Network File System)です。 Chapter18.txt:NFSは、1989年にSun Microsystemsによって最初に開発され、更新が継続されています。最新のシステムでは、NFSv4を使用しています。NFSv4は2000年以降、継続的に更新されています。 Chapter18.txt:他のネットワーク ファイルシステムには、AFS(Andrew File System)とSMB(Server Message Book)があります。SMBはCIFS(Common Internet File System)とも呼ばれます。 Chapter18.txt:ネットワーク ファイルシステムは、ネットワーク共有上にそれが存在しない、もしくはネットワーク自体が利用できないなどが要因で利用できない可能性があるため、そのことを考えてシステムを準備する必要があります。 Chapter18.txt:すなわち、このような状況では、システムは、指定された時間より長く待っている間にハングアップまたはブロックしないように指示する必要があります。これらは、mountコマンドで指定できます。 Chapter18.txt:$ sudo mount -t nfs myserver.com:/shdir /mnt/shdir​ Chapter18.txt:または/etc/fstabを使います。/etc/fstabに次の行を入れて、ブート時もしくはmount -aを使用してマウントします。 Chapter18.txt:myserver.com:/shdir /mnt/shdir nfs rsize=8192,wsize=8192,timeo=14,intr 0 0 Chapter18.txt:システムは、ネットワークが起動する前にNFSファイルシステムをマウントしようとする場合があります。これを回避するためにはnetdevとnoautoオプションを使用します。詳細については、man nfsを見て、マウントのオプションを調べてください。 Chapter18.txt:autofsまたはautomountを使用しても解決できます。 Chapter18.txt:マウントには、nfsに固有のオプションが多数あります。詳細については、nfsとmountの両方のマニュアル ページを参照してください。 Chapter18.txt:ブート時のマウントと/etc/fstab Chapter18.txt:システムの初期化中に、次のコマンドを実行します。 Chapter18.txt:mount -a Chapter18.txt:これにより、/etc/fstab構成ファイルにリストされているすべてのファイルシステムがマウントされます。/etc/fstab内のエントリは、ローカルとリモートの両方のネットワークマウントされるファイルシステムが記述されています。スクリーンショットは、システム起動中に/etc/fstab構成ファイルにリストされている、すべてのファイルシステムをマウントする方法の例です。 Chapter18.txt:このファイルは、ブート時にどのファイルシステムを自動的にマウントするかと、それらがローカル マシンまたはネットワーク上のどこにあるかを示しています。このファイルで、誰がそれらをマウントできるか、どのようなパーミッションが必要かを指定することもできます。さらに、その他の関連オプションも指定できます。いくつかの行は、proc、sys、devptsなどの特別な擬似ファイルシステムを参照しています。 Chapter18.txt:/etc/fstabの例 Chapter18.txt:/etc/fstabファイルの各レコードには、空白で区切られた、マウントされるファイルシステムに関する情報が含まれています。 Chapter18.txt:デバイス ファイル名、ラベル、またはUUID Chapter18.txt:tmpfs、proc、sysfsなどのデバイス ノードを持たないファイルシステムの場合、このフィールドは単なるプレースホルダです。そのコラムにnoneという単語を使用したり、コマンド ラインで使用されることがあります。 Chapter18.txt:マウント ポイント Chapter18.txt:これは、スワップのように、どこにもマウントされていないプレースホルダにすることもできます。 Chapter18.txt:ファイルシステムの種類(すなわち、ext4、xfs、btrfs、vfat) Chapter18.txt:コンマで区切りったオプション リスト Chapter18.txt:ダンプ頻度(または0) Chapter18.txt:これはdump -wコマンドで使用されますが、dump -wコマンドはめったに使用されません。 Chapter18.txt:fsckパス番号(または0、これはブート時に状態をチェックしないことを意味します)。 Chapter18.txt:mountとumount ユーティリティは、/etc/fstabの情報を使用できます。このような場合、次のように入力できます。 Chapter18.txt:$ sudo mount /usr/src Chapter18.txt:これは以下の代わりに使われます。 Chapter18.txt:$ sudo mount LABEL=src /usr/src Chapter18.txt:    Chapter18.txt:ファイルシステムの自動マウント Chapter18.txt:Linuxシステムには、必要なときにのみファイルシステムをマウントできる機能が長い間存在しています。これはautofsを使用して行われていました。このユーティリティでは、適切なパッケージ マネージャを使用してautofsパッケージをインストールし、/etc内にファイルを構成する必要があります。 Chapter18.txt:autofsは非常に柔軟でよく知られていますが、一方でsystemdベースのシステムには、フレームワークに組み込まれた自動マウント機能が備わっています。この設定は、次のような適切なデバイス、マウント ポイント、マウント オプションを指定する行を/etc/fstabに追加するだけです。 Chapter18.txt:LABEL=Sam128 /SAM ext4 noauto,x-systemd.automount,x-systemd.device-timeout=10,x-systemd.idle-timeout=30 0 0 Chapter18.txt:そして、リブートするか以下のコマンドを実行します。 Chapter18.txt:$ sudo systemctl daemon-reload Chapter18.txt:$ sudo systemctl restart local-fs.target Chapter18.txt:次に、例を挙げてオプションを説明します。 Chapter18.txt:自動マウントの例 Chapter18.txt:次の例では、USBペン ドライブをマウントします。USBペン ドライブは、使用時にのみシステムに接続されます。/etc/fstabのオプションは以下のとおりです。 Chapter18.txt:noauto Chapter18.txt:起動時にマウントしません。このautoはautomountの意味ではありません。 Chapter18.txt:x-systemd.automount Chapter18.txt:systemdの自動マウント機能を使用します。 Chapter18.txt:x-systemd.automount.device-timeout=10 Chapter18.txt:このデバイスが使用できない場合、すなわちNFSを介してアクセス可能なネットワーク デバイスの場合は、ハングアップする代わりに10秒後にタイムアウトします。 Chapter18.txt:x-systemd.automount.idle-timeout=30 Chapter18.txt:デバイスが30秒間使用されない場合は、アンマウントします。 Chapter18.txt:💡 Chapter18.txt:デバイスはブート中にマウントされる場合がありますが、アンマウントは指定されたタイムアウト後に行う必要があることに注意してください。スクリーンショットは、デバイスが使用された後にのみ利用できる方法を示しています。 Chapter18.txt:自動マウントの例 Chapter18.txt:デモ:ファイルシステム機能 Chapter18.txt:このビデオでは、パーティションの作成、ファイルシステムの配置、ファイルシステムの確認、マウント、およびその他の詳細情報の取得方法を示します。 Chapter18.txt:演習 Chapter18.txt:演習 18.1: ファイルの属性について Chapter18.txt:🚩 Chapter18.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter18.txt:【【これ以降は橋本さんの訳を挿入】】 Chapter18.txt:1. With your normal user account use touch to create an empty file named /tmp/appendit. Chapter18.txt:2. Use cat to append the contents of /etc/hoststo/tmp/appendit. Chapter18.txt:3. Compare the contents of /tmp/appendit with /etc/hosts; there should not be any differences. Chapter18.txt:4. Try to add the append-only attribute to /tmp/appendit by using chattr. You should see an error here. Why? Chapter18.txt:5. As root, retry adding the append-only attribute; this time it should work. Look at the file’s extended attributes by usinglsattr. Chapter18.txt:6. As a normal user, try and usecatto copy over the contents of /etc/passwd to /tmp/appendit. You should get anerror. Why? Chapter18.txt:7. Try the same thing again as root. You should also get an error. Why? Chapter18.txt:8. As the normal user, again use the append redirection operator (>>) and try appending the /etc/passwd file to /tmp/ appendit. This should work. Examine the resulting file to confirm. Chapter18.txt:9. As root, set the immutable attribute on /tmp/ appendit, and look at the extended attributes again. Chapter18.txt:10. Try appending output to /tmp/appendit, try renaming the file, creating a hard link to the file, and deleting the file as both the normal user and as root. Chapter18.txt:11. We can remove this file by removing the extended attributes. Do so. Chapter18.txt:Solution 18.1 Chapter18.txt:1.$ cd /tmp Chapter18.txt:$ touch appendit Chapter18.txt:$ ls -l appendit-rw-rw-r-- 1 coop coop 0 Oct 23 19:04 appendit Chapter18.txt:2.$ cat /etc/hosts > appendit Chapter18.txt:3.$ diff /etc/hosts appendit Chapter18.txt:4.$ chattr +a appendit Chapter18.txt:chattr: Operation not permitted while setting flags on appendit Chapter18.txt:5.$ sudo chattr +a appendit Chapter18.txt:$ lsattr appendit Chapter18.txt:-----a-------e-- appendit Chapter18.txt:6.$ cat /etc/passwd > appendit Chapter18.txt:bash: appendit: Operation not permitted Chapter18.txt:7.$ sudo su Chapter18.txt:$ cat /etc/passwd > appendit Chapter18.txt:bash: appendit: Operation not permitted Chapter18.txt:$ exit Chapter18.txt:8.$ cat /etc/passwd >> /tmp/appendit Chapter18.txt:$ cat appendit Chapter18.txt:9.$ sudo chattr +i appendit Chapter18.txt:$ lsattr appendit Chapter18.txt:----ia-------e- appendit Chapter18.txt:10.$ echo hello >> appendit Chapter18.txt:-bash: appendit: Permission denied Chapter18.txt:$ mv appendit appendit.rename Chapter18.txt:mv: cannot move`appendit'to`appendit.rename': Operation not permitted Chapter18.txt:$ ln appendit appendit.hardlink Chapter18.txt:ln: creating hard link`appendit.hardlink'=>`appendit': Operation not permitted Chapter18.txt:$ rm -f appendit Chapter18.txt:rm: cannot remove`appendit': Operation not permitted Chapter18.txt:$ sudo su Chapter18.txt:$ echo hello >> appendit Chapter18.txt:-bash: appendit: Permission denied Chapter18.txt:$ mv appendit appendit.rename Chapter18.txt:mv: cannot move`appendit'to`appendit.rename': Operation not permitted Chapter18.txt:$ ln appendit appendit.hardlink Chapter18.txt:ln: creating hard link`appendit.hardlink'=>`appendit': Operation not permitted Chapter18.txt:$ rm -f appendit Chapter18.txt:rm: cannot remove`appendit': Operation not permitted Chapter18.txt:$ exit Chapter18.txt:11.$ sudo su Chapter18.txt:$ lsattr appendit Chapter18.txt:----ia-------e- appendit Chapter18.txt:$ chattr -ia appendit Chapter18.txt:$ rm appendit Chapter18.txt:rm: remove regular file`appendit'? y Chapter18.txt:$ ls appendit Chapter18.txt:ls: cannot access appendit: No such file or directory Chapter18.txt:演習 18.2. マウントのオプション Chapter18.txt:🚩 Chapter18.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter18.txt:Exercise 18.2: Mounting Options Chapter18.txt:Fresh Partition or Loopback File Chapter18.txt:In this exercise you will need to either create a fresh partition, or use a loopback file. The solution will differ slightly andwe will provide details of both methods. Chapter18.txt:1. Use fdisk to create a new 250 MB partition on your system, probably on/dev/sda. Or create a file full of zeros to useas a loopback file to simulate a new partition. Chapter18.txt:2. Use mkfs to format a new filesystem on the partition or loopback file just created. Do this three times, changing the blocksize each time. Note the locations of the superblocks, the number of block groups and any other pertinent information,for each case. Chapter18.txt:3. Create a new subdirectory (say /mnt/tempdir) and mount the new filesystem at this location. Verify it has beenmounted. Chapter18.txt:4. Unmount the new filesystem, and then remount it as read-only. Chapter18.txt:5. Try to create a file in the mounted directory. You should get an error here, why? Chapter18.txt:6. Unmount the filesystem again. Chapter18.txt:7. Add a line to your /etc/fstab file so that the filesystem will be mounted at boot time. Chapter18.txt:8. Mount the filesystem. Chapter18.txt:9. Modify the configuration for the new filesystem so that binary files may not be executed from the filesystem (change defaults to noexec in the /mnt/tempdir entry). Then remount the filesystem and copy an executable file (such as /bin/ls) to /mnt/tempdir and try to run it. You should get an error: why? Chapter18.txt:When you are done you will probably want to clean up by removing the entry from/etc/fstab. Chapter18.txt:Solution 18.2 Chapter18.txt:Physical Partition Solution Chapter18.txt:1. We won’t show the detailed steps infdisk, as it is all ground covered earlier. We will assume the partition created is /dev/sda11, just to have something to show. Chapter18.txt:$ sudo fdisk /dev/sda Chapter18.txt:..... Chapter18.txt:w Chapter18.txt:$ partprobe -s Chapter18.txt:Sometimes the partprobe won’t work, and to be sure the system knows about the new partition you have to reboot. Chapter18.txt:2.$ sudo mkfs -t ext4 -v /dev/sda11 Chapter18.txt:$ sudo mkfs -t ext4 -b 2048 -v /dev/sda11 Chapter18.txt:$ sudo mkfs -t ext4 -b 4096 -v /dev/sda11 Chapter18.txt:Note the-vflag (verbose) will give the requested information; you will see that for a small partition like this the default is1024 byte blocks. Chapter18.txt:3.$ sudo mkdir /mnt/tempdir Chapter18.txt:$ sudo mount /dev/sda11 /mnt/tempdir Chapter18.txt:$ mount | grep tempdir Chapter18.txt:4.$ sudo umount /mnt/tempdir Chapter18.txt:$ sudo mount -o ro /dev/sda11 /mnt/tempdir Chapter18.txt:If you get an error while unmounting, make sure you are not currently in the directory. Chapter18.txt:5.$ sudo touch /mnt/tempdir/afile Chapter18.txt:6.$ sudo umount /mnt/tempdir Chapter18.txt:7. Put this line in /etc/fstab: Chapter18.txt:/dev/sda11 /mnt/tempdir ext4 defaults 1 2 Chapter18.txt:8.$ sudo mount /mnt/tempdir Chapter18.txt:$ sudo mount | grep tempdir Chapter18.txt:9. Change the line in /etc/fstab to: Chapter18.txt:/dev/sda11 /mnt/tempdir ext4 noexec 1 2 Chapter18.txt:Then do: Chapter18.txt:$ sudo mount -o remount /mnt/tempdir Chapter18.txt:$ sudo cp /bin/ls /mnt/tempdir Chapter18.txt:$ /mnt/tempdir/ls Chapter18.txt:You should get an error here, why? Chapter18.txt:Loopback File Solution Chapter18.txt:1.$ sudo dd if=/dev/zero of=/imagefile bs=1M count=250 Chapter18.txt:2.$ sudo mkfs -t ext4 -v Chapter18.txt:$ sudo mkfs -t ext4 -b 2048 -v /imagefile Chapter18.txt:[$ sudo mkfs -t ext4 -b 4096 -v /imagefile Chapter18.txt:You will get warned that this is a file and not a partition, just proceed. Chapter18.txt:Note the-vflag (verbose) will give the requested information; you will see that for a small partition like this the default is 1024 byte blocks. Chapter18.txt:3.$ sudo mkdir /mnt/tempdir Chapter18.txt:$ sudo mount -o loop /imagefile /mnt/tempdir Chapter18.txt:$ mount | grep tempdir Chapter18.txt:4.$ sudo umount /mnt/tempdir Chapter18.txt:$ sudo mount -o ro,loop /imagefile /mnt/tempdir Chapter18.txt:If you get an error while unmounting, make sure you are not currently in the directory. Chapter18.txt:5.$ sudo touch /mnt/tempdir/afile Chapter18.txt:6.$ sudo umount /mnt/tempdir Chapter18.txt:7. Put this line in/etc/fstab: Chapter18.txt:in /etc/fstab Chapter18.txt:/imagefile /mnt/tempdir ext4 loop1 2 Chapter18.txt:8.$ sudo mount /mnt/tempdir Chapter18.txt:$ sudo mount | grep tempdir Chapter18.txt:9. Change the line in /etc/fstab to: Chapter18.txt:in /etc/fstab Chapter18.txt:/imagefile /mnt/tempdir ext4 loop,noexec1 2 Chapter18.txt:Then do: Chapter18.txt:$ sudo mount -o remount /mnt/tempdir Chapter18.txt:$ sudo cp /bin/ls /mnt/tempdir Chapter18.txt:$ /mnt/tempdir/ls Chapter18.txt:You should get an error here, why? Chapter18.txt:知識チェック Chapter18.txt:「第18章 - ファイルシステムの機能:属性、作成、検査、マウント」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter18.txt:クイズ開始 Chapter18.txt:問題18.1 Chapter18.txt:inodeに保存されない情報はどれですか? Chapter18.txt:A. パーミッション Chapter18.txt:B. ユーザーとグループの所有権 Chapter18.txt:C. ファイル名 Chapter18.txt:D. タイム スタンプ Chapter18.txt:E. サイズ Chapter18.txt:問題18.2 Chapter18.txt:ファイルシステムをフォーマットするための一般的なツールは、次のうちどれですか。 Chapter18.txt:A. automount Chapter18.txt:B. ls Chapter18.txt:C. mkfs Chapter18.txt:D. mount Chapter18.txt:問題18.3 Chapter18.txt:ファイルシステムをチェックして修正するための一般的なツールは、次のうちどれですか? Chapter18.txt:A. fsck Chapter18.txt:B. mkfs Chapter18.txt:C. mount Chapter18.txt:問題18.4 Chapter18.txt:ファイルの拡張属性を一覧表示するツールは次のうちどれですか。 Chapter18.txt:A. lsattr Chapter18.txt:B. fsck Chapter18.txt:C. mkfs Chapter18.txt:D. chattr Chapter18.txt:問題18.5 Chapter18.txt:ファイルの拡張属性を変更するツールは次のうちどれですか。 Chapter18.txt:A. lsattr Chapter18.txt:B. fsck Chapter18.txt:C. mkfs Chapter18.txt:D. chattr Chapter19.txt:ファイルシステム機能:スワップ、クォータ、 使用量 Chapter19.txt:はじめに Chapter19.txt:第19章はじめに Chapter19.txt:Linuxは堅牢なスワップ空間を実装しており、仮想メモリ システムを介して、物理的に利用可能なメモリよりも多くのメモリを使用できます。ファイルシステムのクォータを使用して、ユーザー アカウントごとのディスク領域を管理できます。dfやduなどのユーティリティを使用すると、ファイルシステムの使用状況と容量を簡単に監視できます。 Chapter19.txt:学習目標 Chapter19.txt:この章の終わりまでに、次のことができるようになります。 Chapter19.txt:スワップとクォータの概念を説明できます。 Chapter19.txt:クォータの管理に役立つユーティリティ、quotacheck、quotaon、quotaoff、edquota、quotaを使用できます。 Chapter19.txt:ユーティリティdfとduを使用できます。 Chapter19.txt:ファイルシステム機能:スワップ、クォータ、 使用量 Chapter19.txt:スワップの使用 Chapter19.txt:Linuxは仮想メモリ システムを採用しており、オペレーティング システムは実際よりも多くのメモリがあるかのように機能します。この種のメモリ オーバーコミッションは、2つの方法で機能します。 Chapter19.txt:多くのプログラムは、使用できるメモリすべてを実際に使用するわけではありません。それは、子プロセスがCOW(Copy On Write)手法を使用して親のメモリ領域のコピーを継承するためです。子プロセスは、変更があった場合にのみ(ページごとに)固有のコピーを取得します。 Chapter19.txt:メモリの負荷が重くなってくると、アクティブでないメモリ領域はディスクにスワップアウトされ、再び必要になったときにのみ読み戻されます。 Chapter19.txt:このようなスワッピングは、通常、1つ以上の専用パーティションまたはファイルに対して行われます。Linuxでは複数のスワップ領域が認められているため、スワップの要求を動的に調整できます。各スワップ領域には優先順位があり、優先順位の高い領域がいっぱいになるまで、優先順位の低い領域は使用されません。 Chapter19.txt:多くの場合、推奨されるスワップ サイズはシステム上のRAMの合計サイズです。freeコマンドで/proc/swapsを見て基本的なメモリ統計情報を取得すれば、システムが現在使用しているスワップの量を確認できます。 Chapter19.txt:$ cat /proc/swaps Chapter19.txt:Filename 種類 Size Used Priority Chapter19.txt:/dev/sda6 partition 8290300 0 -1 Chapter19.txt:/tmp/swpfile file 102396 0 -2 Chapter19.txt:$ free -m Chapter19.txt:スワップに関係するコマンドは次のとおりです。 Chapter19.txt:mkswap:スワップ パーティションまたはファイルをフォーマットします。 Chapter19.txt:swapon:パーティションまたはファイルへのスワップを有効にします。 Chapter19.txt:swapoff:パーティションまたはファイルへのスワップを無効にします。 Chapter19.txt:いつでも、ほとんどのメモリはファイルの内容をキャッシュするために使用され、必要以上に実際にディスクへアクセスするのを防いでいます。もしくは最適な順序やタイミングでディスクにアクセスします。そのようなメモリのページはバッキングストアがファイルそのものであることから、決してスワップアウトされず、スワップへ書き出すことは無意味ということになります。その代わり、ダーティ ページ(格納データに反映することがもはや無いファイルの内容を含むメモリ)がディスクにフラッシュされます。 Chapter19.txt:Linuxでは、アプリケーション メモリとは対照的に、カーネル自体が使用するメモリは決してスワップアウトされません。これは他のオペレーティング システムとは違います。 Chapter19.txt:ファイルシステム クォータ Chapter19.txt:Linuxでは、ファイルシステムにおいて、クォータを使用したり強制したりすることができます。ディスク クォータの機能により、管理者は特定のユーザー(またはグループ)に許可する最大領域を制御できます。かなりの柔軟性が許されており、クォータはファイルシステムごとに割り当てることができます。共有リソースを使い果たす一部のユーザーに対して、保護が提供されます。 Chapter19.txt:クリックしてカードを裏返し、クォータの管理に役立つユーティリティについて学習します。 Chapter19.txt:quotacheck Chapter19.txt:quotacheck は、クォータ アカウンティング ファイルを生成および更新します。 Chapter19.txt:quotaon Chapter19.txt:quotaon は、クォータ アカウンティングを有効にします。 Chapter19.txt:quotaoff Chapter19.txt:quotaoff は、クォータ アカウンティングを無効にします。 Chapter19.txt:edquota Chapter19.txt:edquota は、ユーザーまたはグループのクォータの編集を行います。 Chapter19.txt:quota Chapter19.txt:quota は、使用量と使用限度を表示するユーティリティです。 Chapter19.txt:クォータの操作には、クォータを使用するファイルシステムのルート ディレクトリに、aquota.userとaquota.groupのファイルが必要です。 Chapter19.txt:クォータは、ファイルシステムごとに有効または無効にできます。さらに、LinuxはユーザーIDとグループIDに基づくクォータの使用をサポートしています。 Chapter19.txt:別の種類のファイルシステムには、xfs_quotaなどの追加のクォータ関連ユーティリティが含まれている場合があります。 Chapter19.txt:クォータの設定 Chapter19.txt:ファイルシステムのクォータを作成するには、まずユーザー、グループ、またはその両方のクォータ マウント オプションで、ファイルシステムをマウントしたことを確認する必要があります。これらができていなければ、何も機能しません。基本的な手順は次のとおりです。 Chapter19.txt:ユーザー、グループ、またはその両方のクォータ オプションでファイルシステムをマウントします。 Chapter19.txt:- usrquota 、grpquota、またはその両方のオプションを/etc/fstabのファイルシステム エントリに追加します。 Chapter19.txt:- ファイルシステムを再マウントします(または、新しい場合はマウントします)。 Chapter19.txt:ファイルシステムでquotacheckを実行して、クォータを設定します。 Chapter19.txt:ファイルシステムでクォータを有効にします。 Chapter19.txt:edquotaプログラムでクォータを設定します。 Chapter19.txt:最初に、次のように/etc/fstabに正しいオプションを設定する必要があります。 Chapter19.txt:/dev/sda5 /home ext4 defaults,usrquota 1 2 Chapter19.txt:上記では、/homeは専用パーティション上にあると想定しています。 Chapter19.txt:次に、次のコマンドでテストします。 Chapter19.txt:$ sudo mount -o remount /home Chapter19.txt:$ sudo quotacheck -vu /home Chapter19.txt:$ sudo quotaon -vu /home Chapter19.txt:$ sudo edquota someusername Chapter19.txt:edquotaを使用してソフト リミットの猶予期間を設定することもできます。/etc/fstabファイルで使用するマウント オプションは、ユーザー クォータの場合はusrquota、グループ クォータの場合はgrpquotaです。 Chapter19.txt:quotacheck Chapter19.txt:quotacheckユーティリティは、ファイルシステムのクォータ アカウンティング ファイル(aquota.userとaquota.group)を作成および更新します。 Chapter19.txt:/etc/fstab内のすべてのファイルシステムのユーザー ファイルを、ユーザー クォータ オプションで更新する場合: Chapter19.txt:$ sudo quotacheck -ua Chapter19.txt:/etc/fstab内のすべてのファイルシステムのグループ ファイルを、グループ クォータ オプションで更新する場合: Chapter19.txt:$ sudo quotacheck -ga Chapter19.txt:特定のファイルシステムのユーザー ファイルを更新する場合: Chapter19.txt:$ sudo quotacheck -u [somefilesystem] Chapter19.txt:特定のファイルシステムのグループ ファイルを更新する場合: Chapter19.txt:$ sudo quotacheck -g [somefilesystem] Chapter19.txt:-vオプションを使用して、より詳細な出力を取得します。 Chapter19.txt:quotacheckは通常、クォータが最初にオン(有効)になった(または更新する必要がある)場合にのみ実行されます。このプログラムは、システムの起動時にfsckがファイルシステムのエラーを報告したときにも実行されることがあります。 Chapter19.txt:クォータのオン(有効化)とオフ(無効化) Chapter19.txt:quotaonは、ファイルシステムのクォータをオンにします。quotaoffはそれらをオフにします。次のように使用されます。 Chapter19.txt:$ sudo quotaon [flags] [filesystem] Chapter19.txt:$ sudo quotaoff [flags] [filesystem] Chapter19.txt:flagsは次のとおりです。 Chapter19.txt:-a、--all   すべてのファイルシステムのクォータをオフにします Chapter19.txt:-f、--off   クォータをオフにします Chapter19.txt:-u、--user  ユーザー クォータを操作します Chapter19.txt:-g、--group  グループ クォータを操作します Chapter19.txt:-p、--print-state  クォータがオンかオフかを表示します Chapter19.txt:-x、--xfs-command = cmd  XFSクォータ コマンドを実行します Chapter19.txt:-F、--format = formatname  特定のクォータ フォーマットで動作します Chapter19.txt:-v、--verbose   より詳細なメッセージを出力します Chapter19.txt:-h、--help  ヘルプ テキストを表示して終了します Chapter19.txt:-V、--version  バージョン情報を表示して終了します Chapter19.txt:💡 Chapter19.txt:quotaonプログラムとquotaoffプログラムは実際にはまったく同じであり、それらが呼び出される名前に従って動作することに注意してください。 Chapter19.txt:例えば、 Chapter19.txt:$ sudo quotaon -av Chapter19.txt:/dev/sda6 [/]: group quotas turned on Chapter19.txt:/dev/sda5 [/home]: user quotas turned on Chapter19.txt:$ sudo quotaoff -av Chapter19.txt:/dev/sda6 [/]: group quotas turned off Chapter19.txt:/dev/sda5 [/home]: user quotas turned off Chapter19.txt:$ sudo quotaon -avu Chapter19.txt:/dev/sda5 [/home]: user quotas turned on Chapter19.txt:$ sudo quotaoff -avu Chapter19.txt:/dev/sda5 [/home]: user quotas turned off Chapter19.txt:$ sudo quotaon -avg Chapter19.txt:/dev/sda6 [/]: group quotas turned on Chapter19.txt:$ sudo quotaoff -avg Chapter19.txt:/dev/sda6 [/]: group quotas turned off Chapter19.txt:🚩 Chapter19.txt:ファイルaquota.userまたはaquota.groupが存在しない場合、クォータ操作は失敗します。 Chapter19.txt:クォータの調査 Chapter19.txt:quotaユーティリティは、クォータに関する情報を表示するために使用されます。 Chapter19.txt:quota(またはquota -u)は、現在のユーザー クォータの情報が表示されます。 Chapter19.txt:quota -gは、現在のグループ クォータの情報を表示します。 Chapter19.txt:スーパーユーザーは、ユーザー名またはグループ名を指定することにより、任意のユーザーまたはグループのquotaを調べることができます。 Chapter19.txt:例えば、 Chapter19.txt:$ sudo quota george Chapter19.txt:Disk quotas for user george (uid 1000): Chapter19.txt: Filesystem blocks quota limit grace files quota limit grace Chapter19.txt: /dev/sda5 837572 500 1000 5804 0 0 Chapter19.txt:$ sudo quota gracie Chapter19.txt:Disk quotas for user gracie (uid 1001): Chapter19.txt: Filesystem blocks quota limit grace files quota limit grace Chapter19.txt: /dev/sda5 83757 5000 10000 5804 0 0 Chapter19.txt:クォータの設定 Chapter19.txt:edquotaと入力すると、クォータ エディタが表示されます。指定されたユーザーまたはグループに対して、そのユーザーまたはグループの現在のディスク クォータの一時ファイルがテキスト形式で作成されます。 Chapter19.txt:次に、エディタがそのファイルを開き、その中でクォータを変更します。エディタを終了すると、一時ファイルが読み取られ、バイナリ クォータ ファイルに変更が反映されます。 Chapter19.txt:quotaで編集できるフィールドは、ソフトとハードの制限のみです。他のフィールドは情報提供のみです。 Chapter19.txt:以下は、edquotaの使用方法の例です。 Chapter19.txt:edquota -u [username]は、指定されたusernameのユーザーの制限を編集します。 Chapter19.txt:$ sudo edquota -u [username] Chapter19.txt:edquota -g [groupname]は、指定されたgroupnameのグループの制限を編集します。 Chapter19.txt:$ sudo edquota -g [groupname] Chapter19.txt:edquota -u -p [userproto] [username]は、userprotoのユーザー クォータ値を、指定されたusernameのクォータ値にコピーします。 Chapter19.txt:$ sudo edquota -u -p [userproto] [username] Chapter19.txt:edquota -g -p [groupproto] [groupname]は、groupprotoのグループ クォータ値を、指定されたgroupnameのクォータ値にコピーします。 Chapter19.txt:$ sudo edquota -g -p [groupproto] [groupname] Chapter19.txt:edquota -tは、猶予期間を設定します。 Chapter19.txt:$ sudo edquota -t Chapter19.txt:3番目と4番目のコマンドは、新しいアカウントを作成してそれらのクォータを設定するスクリプトに含めると便利です。 Chapter19.txt:ユーザーとグループのクォータは、ディスク ブロック、inode、またはその両方に設定できます。さらに、猶予期間と同様に、ソフト制限とハード制限を設定できます。猶予期間中、ソフト制限を超えることがあります。しかし、ハード制限を超えることはできません。 Chapter19.txt:猶予期間はファイルシステムごとに設定されます。 Chapter19.txt:$ sudo edquota gracie Chapter19.txt:$ sudo edquota -t Chapter19.txt:df:ファイルシステムの使用量 Chapter19.txt:df(disk free)ユーティリティは、ファイルシステムの容量と使用状況を調べます。以下の例では、-hオプションは「人が読みやすい単位」で表すことを意味し(すなわち、バイト単位ではなくKB、MB、GB単位)、-Tはファイルシステムの種類を示します。-iオプションを使用すると、バイト単位での使用量ではなく inode情報が表示されます。 Chapter19.txt:dfの使用 Chapter19.txt:du:ディスクの使用量 Chapter19.txt:du(disk usage)は、ディスク容量と使用量の両方を調べるために使用します。 Chapter19.txt:現在のディレクトリのディスク使用量を表示する場合: Chapter19.txt:$ du Chapter19.txt:ディレクトリだけでなく、すべてのファイルをリストする場合: Chapter19.txt:$ du -a Chapter19.txt:人が読みやすい単位でリストする場合: Chapter19.txt:$ du -h Chapter19.txt:特定のディレクトリのディスク使用量を表示する場合: Chapter19.txt:$ du -h somedir Chapter19.txt:duの使用例 Chapter19.txt:デモ:swap(スワップ)とOOM killer Chapter19.txt:このビデオは、システムがスワップを使用する方法と、どのようにOOM-killer が呼び出されるかを示しています。 Chapter19.txt:演習 Chapter19.txt:演習 19.1: スワップ領域の管理 Chapter19.txt:🚩 Chapter19.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter19.txt:Exercise 19.1: Managing Swap Space Chapter19.txt:Examine your current swap 領域 by doing: Chapter19.txt:$ cat /proc/swaps Chapter19.txt:Filename Type Size Used Priority Chapter19.txt:/dev/sda11 partition 4193776 0 -1 Chapter19.txt:We will now add more swap space by adding either a new partition or a file. To use a file we can do: Chapter19.txt:$ dd if=/dev/zero of=swpfile bs=1M count=1024 Chapter19.txt:1024+0 records in Chapter19.txt:1024+0 records out Chapter19.txt:1073741824 bytes (1.1 GB) copied, 1.30576 s, 822 MB/s Chapter19.txt:$ mkswap swpfile Chapter19.txt:Setting up swapspace version 1, size = 1048572 KiB Chapter19.txt:no label, UUID=85bb62e5-84b0-4fdd-848b-4f8a289f0c4c Chapter19.txt:(For a real partition just feed mkswap the partition name, but be aware all data on it will be erased!) Chapter19.txt:Activate the new swap space: Chapter19.txt:$ sudo swapon swpfiles Chapter19.txt:wapon: /tmp/swpfile: insecure permissions 0664, 0600 suggested.s Chapter19.txt:wapon: /tmp/swpfile: insecure file owner 500, 0 (root) suggested. Chapter19.txt:On RedHat, Centos, or Fedora Chapter19.txt:Notice RHEL warns us we are being insecure, we really should fix with: Chapter19.txt:$ sudo chown root:root swpfile Chapter19.txt:$ sudo chmod 600 swpfile Chapter19.txt:We ensure swpfile is being used: Chapter19.txt:$ cat /proc/swaps Chapter19.txt:Filename Type Size Used Priority Chapter19.txt:/dev/sda11 partition 4193776 0 -1 Chapter19.txt:/tmp/swpfile file 1048572 0 -2 Chapter19.txt:Note the Priority field; swap partitions or files of lower priority will not be used until higher priority ones are filled.Remove the swap file from use and delete it to save space: Chapter19.txt:$ sudo swapoff swpfile Chapter19.txt:$ sudo rm swpfile Chapter19.txt:演習 19.2: ファイルシステム クォータ Chapter19.txt:🚩 Chapter19.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter19.txt:Exercise 19.2: Filesystem Quotas Chapter19.txt:Please Note Chapter19.txt:The subsection describing this material was marked as optional, so you may not have covered the material necessaryto do this exercise. Chapter19.txt:1. Change the entry in /etc/fstab for your new filesystem to use user quotas (change noexec to usrquota in the entry for /mnt/tempdir). Then remount the filesystem. Chapter19.txt:2. Initialize quotas on the new filesystem, and then turn the quota checking system on. Chapter19.txt:3. Now set some quota limits for the normal user account: a soft limit of 500 blocks and a hard limit of 1000 blocks. Chapter19.txt:4. As the normal user, attempt to use dd to create some files to exceed the quota limits. Create bigfile1(200 blocks) and bigfile2(400 blocks). Chapter19.txt:You should get a warning. Why? Chapter19.txt:5. Create bigfile3(600 blocks). Chapter19.txt:You should get an error message. Why?Look closely at the file sizes. Chapter19.txt:6. Eliminate the persistent mount line you inserted in /etc/fstab. Chapter19.txt:Solution 19.2 Chapter19.txt:1. Change /etc/fstab to have one of the following two lines according to whether you are using a real partition or a loopback file: Chapter19.txt:in /etc/fstab Chapter19.txt:/dev/sda11 /mnt/tempdir ext4 usrquota1 2 Chapter19.txt:/imagefile /mnt/tempdir ext4 loop,usrquota1 2 Chapter19.txt:Then remount: Chapter19.txt:$ sudo mount -o remount /mnt/tempdir Chapter19.txt:2.$ sudo quotacheck -u /mnt/tempdir Chapter19.txt:$ sudo quotaon -u /mnt/tempdir Chapter19.txt:$ sudo chown student.student /mnt/tempdir Chapter19.txt:(You won’t normally do the line above, but we are doing it to make the next part easier). Chapter19.txt:3. Substitute your user name for the student user account. Chapter19.txt:4.$ sudo edquota -u student Chapter19.txt:5.$ cd /mnt/tempdir Chapter19.txt:$ dd if=/dev/zero of=bigfile1 bs=1024 count=200 Chapter19.txt:200+0 records in Chapter19.txt:200+0 records out Chapter19.txt:204800 bytes (205 kB) copied, 0.000349604 s, 586 MB/s Chapter19.txt:$ quota Chapter19.txt:Disk quotas for user student (uid 500): Chapter19.txt:Filesystem blocks quota lim grace files qu lim gr Chapter19.txt:/dev/sda11 200 500 1000 1 0 0 Chapter19.txt:$ dd if=/dev/zero of=bigfile2 bs=1024 count=400 Chapter19.txt:sda11: warning, user block quota exceeded. Chapter19.txt:400+0 records in Chapter19.txt:400+0 records out Chapter19.txt:4096600 bytes (410 kB) copied, 0.000654847 s, 625 MB/s Chapter19.txt:Create bigfile3(600 blocks). Chapter19.txt:6.$ quota Chapter19.txt:Disk quotas for user student (uid 500): Chapter19.txt:Filesystem blocks quota limit grace files qu lim gr Chapter19.txt:/dev/sda11 600* 500 1000 6days 2 0 0 Chapter19.txt:$ dd if=/dev/zero of=bigfile3 bs=1024 count=600 Chapter19.txt:sda11: write failed, user block limit reached. Chapter19.txt:dd: writing`bigfile3': Disk quota exceeded Chapter19.txt:401+0 records in Chapter19.txt:400+0 records out409600 bytes (410 kB) copied, 0.00177744 s, 230 MB/s Chapter19.txt:$ quota Chapter19.txt:Disk quotas for user student (uid 500): Chapter19.txt:Filesystem blocks quota limit grace files quota limit grace Chapter19.txt:/dev/sda11 1000* 500 1000 6days 3 0 0 Chapter19.txt:$ ls -l Chapter19.txt:total 1068 Chapter19.txt:-rw------- 1 root root 7168 Dec 10 18:56 aquota.user Chapter19.txt:-rw-rw-r-- 1 student student 204800 Dec 10 18:58 bigfile1 Chapter19.txt:-rw-rw-r-- 1 student student 409600 Dec 10 18:58 bigfile2 Chapter19.txt:-rw-rw-r-- 1 student student 409600 Dec 10 19:01 bigfile3 Chapter19.txt:drwx------ 2 root root 16384 Dec 10 18:47 lost+found Chapter19.txt:-rwxr-xr-x 1 root root 41216 Dec 10 18:52 more Chapter19.txt:Look closely at the file sizes. Chapter19.txt:7. Get rid of the line in/etc/fstab. Chapter19.txt:知識チェック Chapter19.txt:「第19章 - ファイルシステムの機能:スワップ、クォータ、使用量」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter19.txt:クイズ開始 Chapter19.txt:問題 19.1 Chapter19.txt:dfプログラムで人が読める(human-readable)形式でリストするよう指定するオプションはどれですか? Chapter19.txt:A. -hr Chapter19.txt:B. -h Chapter19.txt:C. -o Chapter19.txt:D. -T Chapter19.txt:問題 19.2 Chapter19.txt:dfプログラムでブロック使用量の代わりに inode情報をリストするために指定するオプションはどれですか? Chapter19.txt:A. -i Chapter19.txt:B. -b Chapter19.txt:C. -h Chapter19.txt:D. -T Chapter19.txt:問題 19.3 Chapter19.txt:既存のファイルシステムでクォータを有効にする手順について、以下を正しい順序で並べてください。 Chapter19.txt:i. quotaonを実行してクォータを有効にします Chapter19.txt:ii. /etc/fstabを編集して、usrquotaマウントのオプションを追加します Chapter19.txt:iii. edquotaを使用して個々のユーザーまたはグループのクォータを編集します Chapter19.txt:iv. ファイルシステムを再マウントします Chapter19.txt:A. i, iv, ii, iii Chapter19.txt:B. ii, i, iv, iii Chapter19.txt:C. iii, iv, i, ii Chapter19.txt:D. ii, iv, i, iii Chapter19.txt:問題 19.4 Chapter19.txt:この章では、スワップ パーティションを管理するための基本的なツールについて説明しました。スワップ パーティションをフォーマットするために使用されるツールはどれですか? Chapter19.txt:A. free Chapter19.txt:B. mkswap Chapter19.txt:C. swapon Chapter19.txt:D. swapoff Chapter2.txt:Linuxファイルシステム ツリー(階層)構造 Chapter2.txt:はじめに Chapter2.txt:第2章 はじめに Chapter2.txt:このビデオでは、この章で扱う内容の概要を説明しています。 Chapter2.txt:学習目標 Chapter2.txt:この章の終わりまでに、次のことができるようになります。 Chapter2.txt:Linuxが1つの大きなファイルシステム ツリー(階層)構造を必要とする理由と、その実行方法に関して考慮すべき事柄について説明できます。 Chapter2.txt:Filesystem Hierarchy Standardが果たす役割を説明できます。 Chapter2.txt:起動時にルート(/)ディレクトリで利用可能になっているべきものと、システム起動後にのみ利用可能になるものを列挙できます。 Chapter2.txt:主なサブディレクトリ ツリーをそれぞれ検索し、その目的を説明でき、その内容を調べることができます。 Chapter2.txt:Linuxファイルシステム ツリー(階層)構造 Chapter2.txt:1つの大きなファイルシステム Chapter2.txt:Linuxは、すべてのUNIXベースのオペレーティング システムと同様に、1つの大きなファイルシステム ツリー(階層)で構成されています。実際には、ルート ディレクトリ「/」がツリー(階層)の最上位にある、逆ツリーの形で図示されることが一般的です。 Chapter2.txt:この 1つの大きな論理ファイルシステム内には、複数の異なるファイルシステムが複数のポイントでマウントされ、サブディレクトリとして表示される場合があります。これらの個別のファイルシステムは、通常は異なるパーティションにあり、ネットワーク上のデバイスを含む任意の数のデバイスに存在します。 Chapter2.txt:どのように結合されているかに関わらず、すべてが1つの大きなファイルシステムのように見えます。アプリケーションは、実際にどの物理デバイス ファイルが存在するかについてまったく気にしません。 Chapter2.txt:昔は、さまざまなUNIX系のオペレーティング システムは、この1つの大きなツリー(階層)をさまざまな方法で編成しました。さまざまなLinuxディストリビューションの間でも、多くの違いがありました。このため、アプリケーションの作成と、複数の種類のシステムでのシステム管理タスクの実行の両方が困難になり、イライラすることが多くありました。 Chapter2.txt:結果として、Linuxエコシステムは、そのような苦労を最小限に抑えるための標準化手順の確立に努めてきました。 Chapter2.txt:データの分類 Chapter2.txt:1つの大きなディレクトリ ツリーでファイルとデータをどのように整理するかにおいては、どの種類の情報を読み書きする必要があるかという分類が重要になります。 特に、2種類の違いがあります。 Chapter2.txt:各ボックスをクリックして展開し、2種類のデータの違いについて学習します。 Chapter2.txt:データの分類 Chapter2.txt:共有可能 vs. 非共有 Chapter2.txt:共有可能なデータとは、異なるホスト間で共有できるデータです。共有できないデータとは、特定のホストに固有なデータです。たとえば、ユーザーのホーム ディレクトリは共有可能ですが、デバイス ロック ファイルは共有できません。 Chapter2.txt:可変 vs. 静的 Chapter2.txt:静的データには、バイナリ、ライブラリ、ドキュメント、そしてシステム管理者のみが変更できるデータが含まれます。可変データは、システム管理者以外でも変更できるデータです。 Chapter2.txt:これらの論理的な違いは、いろいろなディレクトリ、パーティション、ファイルシステムに存在する、さまざまな種類の情報で表わされます。 Chapter2.txt:FHS Linux標準ディレクトリ ツリー Chapter2.txt:Filesystem Hierarchy Standard(FHS)は、当初Free Standards Groupが管理していましたが、現在はThe Linux Foundationが管理しています。FHSは主なディレクトリとその内容を定義しています。Filesystem Hierarchy Standardのドキュメントはオンラインで取得できます。 Chapter2.txt:FHSは標準レイアウトを定義することにより、ファイルの場所を予測し易くしています。ほとんどのLinuxディストリビューションはFHSを尊重しますが、正確には従っていません。最後の公式バージョンはとても古く、いくつかの新しい開発を考慮していないためです。 Chapter2.txt:ディストリビューションは実験を好み、最終的には実験の一部を受け入れています。 Chapter2.txt:Linuxディストリビュータは、ファイルシステムのレイアウトが一貫していて正しく進化していることを確認するために、多くの時間を費やしています。以下は通常、 / の下にある主なディレクトリのリストです。 Chapter2.txt:表:主なディレクトリ Chapter2.txt:ディレクトリ名 FHSにあるか否か? 目的 Chapter2.txt:/ Yes ファイルシステムの階層全体の最上位ディレクトリ。 Chapter2.txt:/bin Yes シングル ユーザー モードで使用できる必要がある必須の実行可能プログラム。 Chapter2.txt:/boot Yes カーネル、initrd、initramfsイメージなどのシステムのブートに必要なファイル、ブート構成ファイルおよびブートローダー プログラム。 Chapter2.txt:/dev Yes ハードウェアおよびソフトウェア デバイスと対話するために使用されるデバイス ノード。 Chapter2.txt:/etc Yes システム全体の構成ファイル。 Chapter2.txt:/home Yes 個人の設定、ファイルなどを含むユーザーのホーム ディレクトリ。 Chapter2.txt:/lib Yes /binと/sbinの実行可能バイナリに必要なライブラリ。 Chapter2.txt:/lib64 No 32ビット プログラムと64ビット プログラムの両方を実行できるシステムの場合の、/binと/sbinの実行可能バイナリに必要な64ビット ライブラリ。 Chapter2.txt:/media Yes CD、DVD、USBスティックなどのリムーバブル メディアのマウント ポイント。 Chapter2.txt:/mnt Yes 一時的にマウントされたファイルシステム。 Chapter2.txt:/opt Yes オプションのアプリケーション ソフトウェア パッケージ。 Chapter2.txt:/proc Yes システムおよびその上で実行されているプロセスに関する情報を提供する仮想擬似ファイルシステム。システム パラメータの変更に使用できます。 Chapter2.txt:/sys No システムおよびそこで実行されているプロセスに関する情報を提供する仮想擬似ファイルシステム。システム パラメータの変更に使用できます。デバイス ツリーに似ており、統合デバイス モデルの一部です。 Chapter2.txt:/root Yes root ユーザーのホーム ディレクトリ。 Chapter2.txt:/sbin Yes 必須のシステム バイナリ。 Chapter2.txt:/srv Yes システムが提供するサイト固有のデータ。めったに使用されません。 Chapter2.txt:/tmp Yes 一時ファイル。多くのディストリビューションでは、再起動すると失われます。メモリ内のRAMディスクである可能性があります。 Chapter2.txt:/usr Yes マルチ ユーザー アプリケーション、ユーティリティ、およびデータ。読み取り専用。 Chapter2.txt:/var Yes システム操作中に変化する可変データ。 Chapter2.txt:ルート ディレクトリの下にディストリビューション固有のディレクトリが追加されている場合があります。これらには、その他のデータに使用できる/miscや、tftpを使用した起動に使用される/tftpbootが含まれる場合があります。ディレクトリにファイルがある場合、それらはディスクレス ワークステーションの起動に関連しています。他のディレクトリを持つことはFHSには違反しません。ただし、標準で規定されているディレクトリ以外にコンポーネントを配置することには違反します。 Chapter2.txt:ルート(/)ディレクトリ Chapter2.txt:先ほど述べたように、ファイルシステム全体を1つの大きなツリー(階層)と見なすことができますが、複数のパーティションとファイルシステムが結合されている場合があります。 Chapter2.txt:ルート ディレクトリ自体が含まれるパーティションとファイルシステムはかなり特別です。多くの場合、後でマウントされる /home、/var、/optなどのディレクトリを持つ他のコンポーネントとともに、特別な専用パーティションにあります。 Chapter2.txt:ルート パーティションには、システムの起動後に他のすべてのファイルシステムをマウントするために必要な、すべての重要なファイルが含まれている必要があります。したがって、ユーティリティ、構成ファイル、ブートローダー情報、およびその他の重要なスタートアップ データが含まれている必要があります。それは次のことを適切に行うためです。 Chapter2.txt:システムを起動します。 Chapter2.txt:テープやその他のリムーバブル メディア、NASなどの外部メディアのシステム バックアップからシステムを復元します。 Chapter2.txt:システムの回復か修復、またはその両方を行います。経験豊富なメンテナは、損傷したシステムを診断および再構築するツールを持っている必要があります。 Chapter2.txt:FHSでは、アプリケーションまたはパッケージがルート ディレクトリの新しいサブディレクトリを作成することを禁止しています。 Chapter2.txt:/bin Chapter2.txt:/binディレクトリは非常に重要です、その理由は以下のとおりです。 Chapter2.txt:/binディレクトリには、システム管理者と非特権ユーザーの両方が必要とする実行可能プログラムとスクリプトが含まれています。これらは、他のファイルシステムがまだマウントされていない場合、たとえばシングル ユーザーまたはリカバリ モードで起動する場合に必要です。 Chapter2.txt:また、スクリプトによって間接的に使用される、実行可能ファイルが含まれる場合もあります。 Chapter2.txt:サブディレクトリを含めることはできません。 Chapter2.txt:/bin/に存在する必要があるプログラムには、次のものがあります。 Chapter2.txt:cat,chgrp,chmod,chown,cp,date,dd,df,dmesg,echo,false,hostname,kill,ln,login,ls,mkdir,mknod,more,mount,mv,ps,pwd,rm,rmdir, sed,sh,stty,su,sync,true,umount および uname Chapter2.txt:[ と testもここに置かれることがあります。オプションで、csh, ed, tar, cpio, gunzip, zcat, netstat, pingも含まれることがあります。 Chapter2.txt:/binの場所に値するほど重要ではないとみなされるコマンド バイナリは、/usr/binに置きます。非rootユーザーだけが必要とするプログラムは、この/usr/binに置きます。 Chapter2.txt:💡 Chapter2.txt:最新の一部のディストリビューションでは、/binと/usr/bin(および/sbinと/usr/sbin)を区別せず、シンボリックリンクを使って1つのディレクトリで2つのディレクトリ ビューを持ちます。そのディストリビューションでは、ブート後にマウントされる別のパーティションに/usrを配置するのは、時代遅れとみなしています。 Chapter2.txt:RHEL、CentOS、Fedoraなどの最近のディストリビューションでは、/binと/usr/binは実際には同じディレクトリです。 Chapter2.txt:ls -F / binコマンドとその出力のスクリーンショット Chapter2.txt:/boot Chapter2.txt:システムの起動に必要なファイルは、/bootディレクトリとそのサブディレクトリに置く必要があります。 Chapter2.txt:下のカードをクリックして裏返し、絶対に必要な2つのファイルについて学びます。 Chapter2.txt:vmlinuz Chapter2.txt:圧縮されたLinuxカーネル。 Chapter2.txt:initramfs Chapter2.txt:実際のルート ファイルシステムが使用可能になる前にマウントされる初期RAMファイルシステム。 Chapter2.txt:これらのファイルには、カーネルのバージョンに依存する長い名前があり、正確な形式はLinuxディストリビューションによって異なります。さらに、initramfsの代わりにinitrdと呼ぶ場合があります。これは古い方法で初期RAMディスク(Initial RAM disk)を表したものですが、名前は残っています。 Chapter2.txt:/bootは、カーネルがユーザー モード プログラムの実行を開始する前に使用されるデータを格納します。また、情報とデバッグに使用される2つのファイルも含まれています。 Chapter2.txt:config Chapter2.txt:カーネルのコンパイルを構成するために使用されます。 Chapter2.txt:System.map Chapter2.txt:デバッグに使用されるカーネル シンボル テーブルです。 Chapter2.txt:保存されたマスター ブート セクタ、セクタ マップ ファイル、および手動で直接編集できないその他のデータが含まれる場合があります。/bootの正確な内容は、ディストリビューションと時代によって異なります。以下に、Fedoraシステムの一例を示します。 Chapter2.txt:ls -l /boot コマンドとその出力のスクリーンショット Chapter2.txt:以前、これらの重要なファイルは、従来のUNIX方式に従って、/bootディレクトリではなく、/に直接配置されていました。今日、これは時代遅れであると考えられています。 Chapter2.txt:/dev Chapter2.txt:このディレクトリには、システムに組み込まれた、またはシステムに接続されたデバイスを表す特別なデバイス ファイル(デバイス ノードとも呼ばれます)が含まれています。これらの特殊ファイルは、システムが正しく機能するために不可欠です。 Chapter2.txt:このようなデバイス ファイルには、キャラクタ デバイス(バイトストリーム)とブロックI/Oデバイスがあります。Linuxのネットワーク デバイスにはデバイス ノードがなく、代わりにeth1やwlan0などの名前で参照されます。 Chapter2.txt:最新のLinuxディストリビューションはすべてudevシステムを使用し、デバイスが見つかったときのみ必要に応じて/devにノードを作成します。マウントされていないファイルシステムの/devディレクトリを見ると、空であることがわかります。 Chapter2.txt:古いシステム(または組み込みデバイス)では、インストール時に、またはそれ以外の時でも必要に応じて、 MAKEDEVかmknodによって作成されます。 Chapter2.txt:図 デバイス ノード Chapter2.txt:ls -l /dev コマンドとその出力のスクリーンショット Chapter2.txt:/etc Chapter2.txt:このディレクトリには、マシン ローカルの構成ファイルといくつかの起動スクリプトが含まれています。実行可能なバイナリ プログラムはありません。このディレクトリにあるファイルとディレクトリは、次のとおりです。 Chapter2.txt:csh.login, exports, fstab, ftpusers, gateways, gettydefs, group, host.conf, hosts.allow, hosts.deny, hosts,equiv, hosts.lpd, inetd.conf, inittab, issue, ld.so.conf, motd, mtab, mtools.conf, networks, passwd, printcap, profile, protocols, resolv.conf, rpc, securetty, services, shells, syslog.conf. Chapter2.txt:フロッピー ディスクで使用されるmtools.confなど、この中の一部のファイルは、現在重要ではなくなっています。FHSが定義していても、ソフトウェアが陳腐化したためもう見つからないものもあります。 Chapter2.txt:ディストリビューションは、/etcに構成ファイルとディレクトリを追加することがよくあります。たとえば、Red Hatは、/etc/sysconfigを含むいくつかのディレクトリを追加しています。そのディレクトリには、いくつかのシステム構成ファイルとディレクトリが存在します。 Chapter2.txt:各ボックスをクリックして展開し、他の重要なサブディレクトリについて学習します。 Chapter2.txt:その他のサブディレクトリ Chapter2.txt:/etc/skel Chapter2.txt:スケルトン ファイルが置かれています。このファイルは新しく作成したホーム ディレクトリの追加に使用されます。 Chapter2.txt:/etc/systemd Chapter2.txt:systemdを使用する時にシステム サービスの開始と停止をするための、構成スクリプトが置かれているかそれをポイントしています。 Chapter2.txt:/etc/init.d Chapter2.txt:System Vの初期化を行う場合の、起動スクリプトとシャットダウン スクリプトが置かれています。 Chapter2.txt:/home Chapter2.txt:Linuxシステムでは、通常、ユーザー ディレクトリは/home/coop,/home/studentなどのように/homeの下に置かれます。すべての個人設定、データ、および実行可能プログラムは、このディレクトリの階層に置かれます。/homeには、/home/students,/home/staff,/home/aliensなど、ユーザーのさまざまなグループや関連付けされたサブディレクトリが置かれる場合もあります。 Chapter2.txt:他のUNIX系のオペレーティング システムでも/homeディレクトリ ツリーの概念は存在しますが、微妙に異なる場合があります。たとえば、Solarisでは、ユーザー ディレクトリは/export/homeに作成され、最終的には自動マウント機能によって/homeにマウントされます。これは、一般的にはホーム ディレクトリが企業ネットワーク上のどこか、おそらく NFSサーバー上にあり、使用時にホーム ディレクトリが自動的にマウントされるためです。 Chapter2.txt:Linuxにも同じ自動マウント機能がありますが、多くのユーザーはそれらを意識していません。また、自己完結型システムでは、おそらく NFSマウントの概念は使われないでしょう。 Chapter2.txt:特定のユーザーは、環境変数$HOMEをルート ディレクトリの代わりに使用することも、略記〜を使用することもできます。つまり、以下は同等です。 Chapter2.txt:$ ls -l $HOME/public_html Chapter2.txt:$ ls -l ~/public_html Chapter2.txt:例外が1つあります。Linuxシステムのrootユーザーのホーム ディレクトリは、常に/rootの下にあります。古いUNIXシステムの中には/を代わりに使用するものがあり、混乱するかもしれません。 Chapter2.txt:ls -la /home/student コマンドとその出力のスクリーンショット Chapter2.txt:/libと/lib64 Chapter2.txt:これらのディレクトリには、/binと/sbin内のバイナリを実行するために必要なライブラリのみが置かれています。これらのライブラリは、システムを起動しルート ファイルシステム内でコマンドを実行するために、特に重要です。 Chapter2.txt:カーネル モジュール(多くの場合、デバイスまたはファイルシステムのドライバ)は/lib/modules/にあります。 Chapter2.txt:PAM(Pluggable Authentication Modules)ファイルは/lib/securityに置かれます。 Chapter2.txt:32ビットと64ビットの両方のバイナリをサポートするシステムでは、システムに両方の種類のライブラリを保持する必要があります。Red Hatベースのシステムでは、32ビット ライブラリ(/lib)と 64ビット ライブラリ(/lib64)のディレクトリがあります。 Chapter2.txt:🚩 Chapter2.txt:最近のディストリビューションの中には、/libと/usr/lib(および/lib64と/usr/lib64)を区別せずに、ディレクトリを1つだけ用意してシンボリックリンクを使うことで、あたかも2つのディレクトリが存在するかのように見せるものがあります。そのディストリビューションでは、ブート後にマウントされる別のパーティションに/usrを置くのは、時代遅れと考えています。 Chapter2.txt:/media Chapter2.txt:このディレクトリは、ファイルシステムをリムーバブル メディアにマウントするために使用されていました。これらには、CD、DVD、USBドライブ、さらには旧石器時代のフロッピーが含まれます。 Chapter2.txt:Linuxシステムは、そのようなメディアを挿入時に動的にマウントし、構成ファイルにあるudevルールで設定した名前でudevがディレクトリを作成して、そこにリムーバブル ファイルシステムをマウントします。アンマウントもしくは削除をすると、マウント ポイントとして使用されていたディレクトリが消えます。 Chapter2.txt:メディアに複数のパーティションとファイルシステムがある場合、複数のエントリが表示されます。多くのLinuxディストリビューションでは、メディアがマウントされると、ファイル マネージャ(Nautilusなど)が表示されます。 Chapter2.txt:🚩 Chapter2.txt:現在のLinuxディストリビューションでは、リムーバブル メディアは、/mediaではなく/run/media/[username]/...の下に表示されます。 /runについては後で説明します。 Chapter2.txt:/mnt Chapter2.txt:このディレクトリは、システム管理者が必要に応じて一時的にファイルシステムをマウントできるようにするために提供されています。一般的な用途は、次のようなネットワーク ファイルシステムです。 Chapter2.txt:NFS Chapter2.txt:Samba Chapter2.txt:CIFS Chapter2.txt:AFS. Chapter2.txt:歴史的に見て、/mntは現在のシステムの/media(または/run/media)にマウントされているファイル類にも使用されていました。 Chapter2.txt:このディレクトリはインストール プログラムでは使用しないでください。現在使用していない別の一時ディレクトリの方が適切です。 Chapter2.txt:/opt Chapter2.txt:このディレクトリは、他のソフトウェアと共有するディレクトリを使ってシステム全体に分散させるのではなく、ファイルのすべてまたはほとんどを1つの専有場所に保持したいソフトウェア パッケージ用に設計されています。たとえば、dolphy_appが/optに存在するパッケージの名前である場合、そのすべてのファイルは/opt/dolphy_appの下のディレクトリに存在する必要があります。バイナリの場合は/opt/dolphy_app/bin、manページの場合は/opt/dolphy_app/manなどです。 Chapter2.txt:このようにファイルをまとめることで、ソフトウェアのインストールとアンインストールの両方を比較的簡単に行うことができます。すべてのファイルが、予測可能かつ構造化された1つの分離された場所にあるからです。また、システム管理者がパッケージ内の各ファイルの性質を簡単に判断できるようになります。 Chapter2.txt:ただし、RPMやAPTなどのパッケージ システムを使用している場合は、このようなことを意識しなくても、ファイルの管理情報と配置が明確なので、簡単にインストールおよびアンインストールすることができます。このことは後で説明します。 Chapter2.txt:Linuxでは、多くの場合、/optディレクトリは、プロプライエタリなソフトウェアを使用するアプリケーション プロバイダ、またはディストリビューションの違いによる複雑さを回避したいアプリケーション プロバイダによって使用されます。たとえば、RHELシステムでは、パッケージは/opt/skypeと/opt/googleにあり、後者にはchrome,earth,talkpluginのサブディレクトリがあります。 Chapter2.txt:また、ローカル システム管理者が使用するためのディレクトリとして、/opt/bin、/opt/doc、/opt/include、/opt/info、/opt/lib、/opt/manが用意されています。パッケージは、これら予約されたディレクトリにリンクまたはコピーされたファイルを提供する場合がありますが、一方で、これらの特別なディレクトリにプログラムが存在しなくても機能する必要があります。 Chapter2.txt:/proc Chapter2.txt:このディレクトリは、すべての情報がディスクではなくメモリにのみ存在する疑似ファイルシステム(pseudo-filesystem)のマウント ポイントです。/devと同様に、実行されていないシステムでは/procディレクトリは空です。 Chapter2.txt:カーネルは、/procエントリを介していくつかの重要なデータ構造を提示します。さらに、システム上のアクティブな各プロセスには、プロセスの状態、使用しているリソース、およびその履歴に関する詳細情報を提供する独自のサブディレクトリがあります。 Chapter2.txt:/proc下に存在するエントリは通常仮想ファイル(virtual file)と呼ばれ、興味深い性質を持っています。ほとんどがサイズが0バイトとして表示されますが、表示すると大量の情報を含んでいることがわかります。 Chapter2.txt:さらに、仮想ファイルのほとんどの日時設定は現在の日時を反映しており、常に変化していることを示しています。実際、これらのファイルの情報は、表示するときにのみ取得され、常時もしくは定期的に更新されるわけではありません。 Chapter2.txt:/proc/interrupts,/proc/meminfo,/proc/mounts,/proc/partitionsを含む重要な疑似ファイルは、システムのハードウェアの最新情報を提供します。 Chapter2.txt:/proc/filesystemsや/proc/sys/ディレクトリなどは、システム構成情報とインターフェイスを提供します。 Chapter2.txt:組織化する目的で、類似のトピックに関する情報を含むファイルは、仮想ディレクトリとサブディレクトリにグループ化されています。たとえば、/proc/scsi/にはすべての物理SCSIデバイスの情報が含まれます。同様に、プロセス ディレクトリには、システムで実行中の各プロセスに関する情報が含まれています。 Chapter2.txt:このコースでは /proc のエントリを広範囲に見て行きます。カーネルの構成とシステムの監視に関する内容は、今後の章でさらに詳しく見ていきます。 Chapter2.txt:Ubuntuにおける ls -F /proc コマンドと出力のスクリーンショット Chapter2.txt:以下のスクリーンショットでは、特定のプロセスに属する/procディレクトリの内容を確認できます。 Chapter2.txt:ls -F /proc/3589 コマンドと出力のスクリーンショット Chapter2.txt:以下のスクリーンショットでは、重要なシステム情報を示す多くのファイルの1つである/proc/interruptsを確認できます。 Chapter2.txt:cat /proc/interrupts コマンドと出力のスクリーンショット Chapter2.txt:/sys Chapter2.txt:このディレクトリは、すべての情報がディスクではなくメモリにのみ存在するsysfs疑似ファイルシステムのマウント ポイントです。/devや/procと同様に、/sysディレクトリは実行されていないシステムでは空です。デバイス、ドライバ、カーネル モジュール、システム構成構造などに関する情報が含まれています。 Chapter2.txt:sysfsは、システムに関する情報を収集し、実行中にその動作を変更するために使用されます。その意味では/procに似ていますが、それよりも歴史は新しく、どのような種類のエントリを含めることができるかの厳しい基準に準拠しています。たとえば、/sys内のほとんどすべての疑似ファイルには、1行または値しか含まれていません。/procにあるような長いエントリはありません。 Chapter2.txt:/procの場合と同様に、このコースでは/sysのエントリを見て行きます。カーネルの構成とシステム監視に関してはこの後の章で見て行きます。 Chapter2.txt:ls -lF /sys コマンドとその出力のスクリーンショット Chapter2.txt:/root Chapter2.txt:このディレクトリ(「スラッシュルート」と発音)は、rootユーザーのホーム ディレクトリです。 Chapter2.txt:このディレクトリを所有するrootアカウントは、スーパーユーザー権限が必要な作業の時にのみ使用してください。一般ユーザーが実行する作業には、別のアカウントを使用します。 Chapter2.txt:ls -saF /root コマンドとその出力のスクリーンショット Chapter2.txt:/sbin Chapter2.txt:このディレクトリには、/binディレクトリ内のバイナリに加えて、起動、復元、回復、または修復、もしくはそのすべてに必須のバイナリが含まれています。ブート中にルート ファイルシステムが正常であると確認したら、必要に応じて、/usr、/home、およびその他の場所に他のファイルシステムをマウントします。 Chapter2.txt:次のプログラムはこのディレクトリにあります(サブシステムがインストールされている場合)。 Chapter2.txt:fdisk, fsck, getty, halt, ifconfig, init, mkfs, mkswap, reboot, route, swapon, swapoff, update. Chapter2.txt:💡 Chapter2.txt:前述したように、最近の一部のディストリビューションでは、(/binと/usr/binと同じように)/sbinと/usr/sbinを分離するという戦略を放棄し、1つのディレクトリにシンボリックリンクを配置し、2つのディレクトリ ビューを持つものがあります。 Chapter2.txt:ls /sbin コマンドとその出力のスクリーンショット Chapter2.txt:/srv Chapter2.txt:FHSは以下のように定義しています。 Chapter2.txt:「/srvには、このシステムによって提供されるサイト固有のデータが含まれています。 Chapter2.txt:これを指定する主な目的は、ユーザーが特定のサービスのデータ ファイルの場所を見つけることができるようにすることです。そして、読み取り専用データ、書き込み可能なデータ、およびスクリプト(cgiスクリプトなど)に対して単一のツリーを必要とするサービスを、合理的に配置できるようにすることです。 Chapter2.txt:/srvのサブディレクトリに名前を付ける方法は、現時点ではこれがどのように行われるべきかのコンセンサスが得られていないため、特定されていません。/srvの下でデータを構造化する1つの方法として、プロトコル(ftp、rsync、www、cvsなど)があります。」 Chapter2.txt:システム管理者(およびディストリビューション)は/srvを使用するものと無視するものとに分かれます。/srvとは対照的に、/varに何を置くのが最善かについては、しばしば混乱が生じます。 Chapter2.txt:/tmp Chapter2.txt:このディレクトリは一時ファイルを保存するために使用され、任意のユーザーまたはアプリケーションがアクセスできます。ただし、/tmpにあるファイルを長期間使用することはできません。 Chapter2.txt:一部のディストリビューションでは、パージ スクリプトが変更されない限り、10日以前のファイルを削除する自動cronジョブが実行されます。 Chapter2.txt:一部のディストリビューションでは、リブートするたびに/tmpの内容が削除されます。これはUbuntuのポリシーです。 Chapter2.txt:最近の一部のディストリビューションは仮想ファイルシステムを利用しており、/tmpディレクトリを、tmpfsファイルシステムを使用するRAMディスクのマウント ポイントとしてのみ使用します。これはFedoraシステムのデフォルト ポリシーです。システムが再起動すると、すべての情報が失われます。 /tmpはまさに一時的なものです! Chapter2.txt:最後に注意ですが、/tmpに大きなファイルを作成しないようにする必要があります。これらのファイルは実際にはディスクではなくメモリ内の領域を占有するので、メモリの枯渇によってシステムに損害を加えたりクラッシュしたりしやすくなります。ガイドラインでは、アプリケーションが/tmpに大きなファイルを置かないようにしていますが、このポリシーに違反し、/tmpに大きな一時ファイルを作成するアプリケーションはたくさんあります。(おそらく環境変数を指定することによって)それらを別の場所に配置することが可能であっても、多くのユーザーはその方法を認識しておらず、すべてのユーザーが/tmp にアクセスしています。 Chapter2.txt:Feodraのsystemdを使用するシステムでは、次のコマンドを発行することによりこのポリシーをキャンセルできます。 Chapter2.txt:$ sudo systemctl mask tmp.mount Chapter2.txt:その後、システムを再起動します。 Chapter2.txt:/usr Chapter2.txt:/usrディレクトリは、 二次的な階層と考えることができます。システムの起動に必要ではないファイルのために使用します。実際、/usrはルート ディレクトリと同じパーティションに存在する必要はありません。ネットワーク越しに同じシステム アーキテクチャを使用するホスト間で共有できます。 Chapter2.txt:ソフトウェア パッケージは、/usrの直下にサブディレクトリを作成しないようにしてください。互換性のために、他の場所へのシンボリックリンクが存在する場合があります。 Chapter2.txt:通常、このディレクトリは読み取り専用データです。シングル ユーザー モードには必要のないバイナリが含まれています。/usr/localディレクトリが含まれ、ローカル バイナリなどが保存されます。manページは/usr/share/manに保存されます。 Chapter2.txt:💡 Chapter2.txt:最近の一部のディストリビューションは、(/sbinと/usr/sbinと同様に)/binと/usr/binを分離する戦略を放棄しており、シンボリックリンクを使って1つのディレクトリで 2つのディレクトリ ビューを持つものがあります。そのディストリビューションでは、ブート後にマウントされる別のパーティションに/usrを配置するのは、時代遅れとみなしています。 Chapter2.txt:表:/usrの下のディレクトリ Chapter2.txt:ディレクトリ 目的 Chapter2.txt:/usr/bin 必須でなはいコマンド バイナリ Chapter2.txt:/usr/etc 必須ではない構成ファイル(通常は空) Chapter2.txt:/usr/games ゲーム データ Chapter2.txt:/usr/include アプリケーションのコンパイルに使用されるヘッダー ファイル Chapter2.txt:/usr/lib ライブラリ ファイル Chapter2.txt:/usr/lib64 64ビット用のライブラリ ファイル Chapter2.txt:/usr/local 第三レベルの階層(マシン ローカル ファイル用) Chapter2.txt:/usr/sbin 必須ではないシステム バイナリ Chapter2.txt:/usr/share 読み取り専用のアーキテクチャ非依存のファイル Chapter2.txt:/usr/src Linux カーネルのソースコードとヘッダー Chapter2.txt:/usr/tmp 第二の一時的なディレクトリ Chapter2.txt:/var Chapter2.txt:このディレクトリには、システム操作中に頻繁に変更される変数(または揮発性)データ ファイルが含まれます。このディレクトリには以下が含まれます。 Chapter2.txt:ログ ファイル Chapter2.txt:スプール ディレクトリとファイル Chapter2.txt:管理データ ファイル Chapter2.txt:キャッシュ コンテンツなどの短期の一時的なファイル。 Chapter2.txt:言うまでもなく、/varを読み取り専用ファイルシステムとしてマウントすることはできません。 Chapter2.txt:セキュリティ上の理由から、/varを別のファイルシステムとしてマウントすることは良い考えだと思います。さらに、ディレクトリがいっぱいになっても、システムはロックされるべきではありません。 Chapter2.txt:/var/logはほとんどのログ ファイルが置かれている場所であり、/var/spoolはメール、印刷、cronジョブなどのプロセス用のローカル ファイルがアクションを待っている間保存される場所です。 Chapter2.txt:表:/varの下のサブディレクトリ Chapter2.txt:サブディレクトリ 目的 Chapter2.txt:/var/ftp ftpサーバー ベースに使用 Chapter2.txt:/var/lib 実行時にプログラムによって変更される恒久的なデータ Chapter2.txt:/var/lock リソースへの同時アクセスを制御するために使用されるロック ファイル Chapter2.txt:/var/log ログ ファイル Chapter2.txt:/var/mail ユーザー メール ボックス Chapter2.txt:/var/run ブート以降の実行中のシステムに関する情報 Chapter2.txt:/var/spool 印刷キューなど、スプールされた、または処理を待機しているタスク Chapter2.txt:/var/tmp システムを再起動しても保持される一時的なファイル。時々/tmpにリンクされます。 Chapter2.txt:/var/www ウェブサイトの階層のルート Chapter2.txt:ls -lF /var コマンドとその出力のスクリーンショット Chapter2.txt:/run Chapter2.txt:/runにマウントされた新しいディレクトリ ツリーは、主要なLinuxディストリビューションで数年間使用されておりFHSに提案されていますが、まだ正式には受け入れられていません。ただし、利用する可能性が非常に高いため知っておくと便利です。 Chapter2.txt:/run の目的は、一時的なファイル保存です。これらは、システムの起動の早い段階で書き込まれ、再起動時に保持する必要がないランタイム情報が含まれます。 Chapter2.txt:通常、/runは空のマウント ポイントとして実装され、実行時にtmpfs RAMディスク(/dev/shmなど)がマウントされます。これはメモリにのみ存在する疑似ファイルシステムです。 Chapter2.txt:/var/runや/var/lockなどは、/runの下のディレクトリへの単なるシンボリックリンクになります。ディストリビューションによっては、他のディレクトリも/runの下の場所を指しているだけの場合があります。 Chapter2.txt:ls -rF /run コマンドとその出力のスクリーンショット Chapter2.txt:デモ:CentOSのストレージの主な使用対象 Chapter2.txt:このビデオでは、CentOSでのストレージの主な使用対象を調べます。 Chapter2.txt:演習 Chapter2.txt:課題 2.1: Linux の標準的なディレクトリのサイズ Chapter2.txt:🚩 Chapter2.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter2.txt: 【【これ以降は橋本さんの訳を参照】】 Chapter2.txt:Use the du utility to calculate the overall size of each of your system’s top-level directories. Type the command:$ du --helpfor hints on how to obtain and display this result efficiently. Chapter2.txt:Solution 2.1 Chapter2.txt:To obtain a full list of directories under / along with their size:$ sudo du --max-depth=1 -hx /4.3M /home16K /lost+found39M /etc4.0K /srv3.6M /root178M /opt138M /boot6.1G /usr1.1G /var16K /mnt4.0K /media869M /tmp8.4G /Where we have used the options:•--maxdepth=1: Just go down one level from/and sum up everything recursively underneath in the tree.•-h: Give human-readable numbers (KB, MB, GB).•-xStay on one filesystem; don’t look at directories that are not on the/partition. In this case that means ignore:/dev /proc /run /sys because these are pseudo-filesystems which exist in memory only; they are just empty mount points when the system is not running. Because this was done on a RHEL system, the following mount points are also not followed:/bin /sbin /lib /lib64since they are just symbolically linked to their counterparts under/usr. Chapter2.txt:課題 2.2: /proc ファイルシステムを探索する Chapter2.txt:🚩 Chapter2.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter2.txt:Exercise 2.2: Touring the /proc Filesystem Chapter2.txt:Please Note Chapter2.txt:Exactly what you see in this exercise will depend on your kernel version, so you may not match the output shown precisely. Chapter2.txt:1. As root,cdinto/procand do a directory listing. This should display a number of files and directories:$ cd /proc$ ls -F1/ 128/ 1510/ 20/ 2411/ 30895/ 53/ 6925/ 802/ 951/ kmsg10/ 129/ 1511/ 2015/ 2425/ 31/ 54/ 7/ 81/ 952/ kpagecgroup1002/ 13/ 1512/ 2022/ 2436/ 31449/ 55/ 70/ 813/ 957/ kpagecount1007/ 130/ 1513/ 2023/ 2444/ 32/ 56/ 702/ 814/ 97/ kpageflags10540/ 131/ 1514/ 20300/ 2451/ 33/ 58/ 709/ 816/ 9742/ loadavg10590/ 13172/ 152/ 20354/ 2457/ 34/ 585/ 71/ 817/ 98/ locks10798/ 132/ 15552/ 20380/ 2489/ 35/ 59/ 718/ 82/ 99/ meminfo10805/ 133/ 15663/ 20388/ 25/ 36/ 60/ 719/ 83/ 9923/ misc10806/ 134/ 15737/ 20392/ 2503/ 37/ 61/ 72/ 834/ acpi/ modules10809/ 135/ 159/ 20396/ 2504/ 374/ 6193/ 721/ 835/ asound/ mounts@10810/ 136/ 15981/ 2086/ 2531/ 379/ 62/ 723/ 84/ buddyinfo mtrr10813/ 137/ 16/ 2090/ 2546/ 38/ 63/ 725/ 841/ bus/ net@10894/ 138/ 162/ 211/ 2549/ 380/ 634/ 727/ 842/ cgroups pagetypeinfo10925/ 1384/ 1632/ 22/ 2562/ 40/ 64/ 73/ 85/ cmdline partitions10932/ 1385/ 1636/ 2205/ 25794/ 41/ 65/ 7300/ 857/ config.gz sched_debug10934/ 1387/ 166/ 2209/ 26/ 42/ 662/ 74/ 86/ consoles scsi/10935/ 139/ 1670/ 2212/ 2610/ 43/ 663/ 757/ 864/ cpuinfo self@10941/ 1390/ 17/ 2232/ 26108/ 44/ 665/ 758/ 867/ crypto slabinfo10983/ 1393/ 17271/ 2238/ 2619/ 4435/ 666/ 76/ 87/ devices softirqs10998/ 14/ 17361/ 2296/ 2624/ 45/ 67/ 761/ 88/ diskstats stat11/ 140/ 1793/ 2298/ 2627/ 46/ 670/ 762/ 881/ dma swaps11047/ 1410/ 18/ 23/ 2644/ 468/ 671/ 765/ 886/ driver/ sys/1105/ 1415/ 1831/ 23042/ 2645/ 47/ 673/ 766/ 887/ execdomains sysrq-trigger1121/ 1429/ 18880/ 2344/ 2679/ 470/ 674/ 768/ 888/ fb sysvipc/1123/ 1437/ 18903/ 2348/ 27/ 484/ 678/ 769/ 889/ filesystems thread-self@1135/ 1445/ 19/ 2353/ 2706/ 49/ 679/ 77/ 89/ fs/ timer_list11420/ 146/ 19392/ 2354/ 2762/ 492/ 68/ 771/ 9/ interrupts timer_stats11499/ 1463/ 19488/ 2365/ 28/ 493/ 682/ 78/ 90/ iomem tty/11515/ 147/ 1954/ 23683/ 2858/ 5/ 683/ 79/ 92/ ioports uptime11530/ 1476/ 1963/ 2370/ 28730/ 50/ 686/ 793/ 921/ irq/ version1163/ 148/ 19727/ 2372/ 28734/ 51/ 687/ 794/ 928/ kallsyms vmallocinfo1164/ 1485/ 19734/ 2374/ 29/ 510/ 69/ 8/ 930/ kcore vmstat12/ 149/ 19984/ 24/ 2973/ 514/ 690/ 80/ 931/ keys zoneinfo127/ 15/ 2/ 2406/ 3/ 52/ 691/ 801/ 944/ key-users Chapter2.txt:Notice many of the directory names are numbers; each corresponds to a running process and the name is the process ID. An important subdirectory we will discuss later is/proc/sys, under which many system parameters can be examined or modified. Chapter2.txt:2. View the following files: Chapter2.txt:•/proc/cpuinfo: Chapter2.txt:•/proc/meminfo: Chapter2.txt:•/proc/mounts: Chapter2.txt:•/proc/swaps: Chapter2.txt:•/proc/version: Chapter2.txt:•/proc/partitions: Chapter2.txt:•/proc/interrupts: Chapter2.txt:The names give a pretty good idea about what information they reveal. Chapter2.txt:Note that this information is not being constantly updated; it is obtained only when one wants to look at it. Chapter2.txt:3. Take a peek at any random process directory (if it is not a process you own some of the information might be limited unless you use sudo): Chapter2.txt:$ ls -F 4435 Chapter2.txt:attr/ coredump_filter gid_map mountinfo oom_score_adj sessionid syscall Chapter2.txt:autogroup cpuset io mounts pagemap setgroups task/ Chapter2.txt:auxv cwd@ limits mountstats personality smaps timerslack_ns Chapter2.txt:cgroup environ loginuid net/ projid_map stack uid_map Chapter2.txt:clear_refs exe@ map_files/ ns/ root@ stat wchan Chapter2.txt:cmdline fd/ maps oom_adj sched statm Chapter2.txt:comm fdinfo/ mem oom_score schedstat status Chapter2.txt:Take a look at some of the fields in here such as:cmdline, cwd, environ, mem,and status Chapter2.txt:知識チェック Chapter2.txt:「第2章 - Linuxファイルシステム ツリー(階層)構造」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter2.txt:クイズ開始 Chapter2.txt:問題 2.1 Chapter2.txt:Filesystem Hierarchy Standard(FHS)によれば、全ユーザーに対するシステム全体の構成ファイルを置く場所として、どの最上位ディレクトリ(/の下にある/tmpなど。/tmp/otherではありません)を使うべきでしょうか? Chapter2.txt:A. /var Chapter2.txt:B. /etc Chapter2.txt:C. /opt Chapter2.txt:D. /proc Chapter2.txt:問題 2.2 Chapter2.txt:Filesystem Hierarchy Standard(FHS)によれば、データを保存したり設定を保存する個々のユーザー ファイルは、どの最上位ディレクトリ(/の下にある/tmpなど。/tmp/otherではありません)に置く必要がありますか? Chapter2.txt:A. /home Chapter2.txt:B. /var Chapter2.txt:C. /proc Chapter2.txt:D. /tmp Chapter2.txt:問題 2.3 Chapter2.txt:Filesystem Hierarchy Standard(FHS)によれば、システム サービス メッセージやウェブ サーバーのログなどのシステム ログ ファイルが含まれている最上位ディレクトリ(/の下にある/tmpなど。/tmp/otherではありません)はどれですか? Chapter2.txt:A. /home Chapter2.txt:B. /var Chapter2.txt:C. /proc Chapter2.txt:D. /sys Chapter2.txt:問題 2.4 Chapter2.txt:Filesystem Hierarchy Standard(FHS)によれば、圧縮されたLinuxカーネル(vmlinuz)や初期RAMファイルシステム(initramfs)など、システム起動の初期段階でのみ使用されるファイルが含まれる最上位ディレクトリ(/の下にある/tmpなど。/tmp/otherではありません)はどれですか? Chapter2.txt:A. /bin Chapter2.txt:B. /lib Chapter2.txt:C. /tmp Chapter2.txt:D. /boot Chapter2.txt:問題 2.5 Chapter2.txt:Filesystem Hierarchy Standard(FHS)によれば、Linuxカーネル モジュール(カーネルに対して動的にロードおよびアンロードされる拡張機能)が含まれる最上位ディレクトリ(/の下にある/tmpなど。/tmp/otherではありません)はどれですか? Chapter2.txt:A. /proc Chapter2.txt:B. /run Chapter2.txt:C. /lib Chapter2.txt:D. /boot Chapter2.txt:問題 2.6 Chapter2.txt:ディスクに格納されたデータの代わりに、システム情報を抽象化した特別なエントリを含むディレクトリがいくつかあります。これらの疑似ファイルは、システムが適切に機能するために非常に重要です。次のどのディレクトリにこれらが含まれていますか? 該当するものをすべて選択してください。 Chapter2.txt:A. /ブート Chapter2.txt:B. /dev Chapter2.txt:C. /etc Chapter2.txt:D. /lib Chapter2.txt:E. /mnt Chapter2.txt:F. /opt Chapter2.txt:G. /proc Chapter2.txt:H. /sys Chapter2.txt:I. /srv Chapter20.txt:Ext/Ext3/Ext4ファイルシステム Chapter20.txt:はじめに Chapter20.txt:第20章はじめに Chapter20.txt:ファイルシステムのextファミリーは、初期の頃からLinux固有であり、利用可能な選択肢の中で最も広く使用されています。ごく最近まで、ext4は、パフォーマンス、整合性、安定性の優れた組み合わせにより、Linuxディストリビューションで最も頻繁に使用されるデフォルトの選択肢でした。 Chapter20.txt:学習目標 Chapter20.txt:この章の終わりまでに、次のことができるようになります。 Chapter20.txt:ext4ファイルシステムの主な機能と、それがディスク上にどのように配置されるかを説明できます。 Chapter20.txt:ブロック グループ、スーパーブロック、データ ブロック、inodeの概念を説明できます。 Chapter20.txt:dumpe2fsとtune2fsのユーティリティを使用できます。 Chapter20.txt:ext4ファイルシステムの拡張機能をリストアップできます。 Chapter20.txt:Ext/Ext3/Ext4ファイルシステム Chapter20.txt:ext4ファイルシステムの機能 Chapter20.txt:ext2ファイルシステム はLinuxに元々あるファイルシステムであり、すべてのLinuxシステムで使用できますが、今日ではほとんど使用されていません。ext3ファイルシステムは、最初にext2のジャーナリング機能を拡張したものです。ジャーナル ファイルの存在を除いて、ext2とディスク レイアウトが同じでした。 Chapter20.txt:ext4ファイルシステムはカーネルのバージョン2.6.19で初めて登場し、バージョン2.6.28より安定版のファイルシステムとなりました。ファイル ブロックのリストの代わりに、大きなファイルに対してエクステントを使用するなど、重要な拡張機能が含まれています。エクステントは、連続した任意の数のブロックです。これらを使用すると、大容量ファイルのパフォーマンスが向上し断片化(フラグメンテーション)が減少します。ext4は、ほとんどのエンタープライズLinuxディストリビューションのデフォルトのファイルシステムですが、RHEL 7はXFSをデフォルトとして採用しています。 Chapter20.txt:VFSとext2/ext3/ext4ファイルシステムは、お互いを考慮して設計されているため、機能は密接に対応しています。 Chapter20.txt:ファイルシステムの構築時にはブロック サイズが選択されます。 512、1024、2048、または4096バイトにすることができます。デフォルトでは、パーティションが非常に小さい場合を除き、ハードディスク システムには4096バイトが使用されます。小さいファイルが非常に多い場合を除き、ハードディスク アクセスを最小限に抑えるという点で、ブロック サイズを大きくする方が効率的です。 Chapter20.txt:Linuxカーネル メモリ管理システムでは、メモリのページに収まるのは整数個のブロックのみです。したがって、メモリのページが4KBのサイズのx86プラットフォームでは、8KBブロックを使用することはできません。 Chapter20.txt:ファイルシステム上のinodeの数も調整でき、ディスク容量を節約できます。 Chapter20.txt:inode予約と呼ばれる機能は、将来使用されることを期待して、ディレクトリの作成時にいくつかのinodeを予約して作成します。これにより、新しいファイルが作成されたときにディレクトリにすでにinodeが割り当てられているため、パフォーマンスが向上します。 Chapter20.txt:シンボリックリンクのパス名が60文字未満の場合、いわゆる高速シンボリック リンクが作成されます。inodeに直接保存され、データ ブロックを読み取る必要がなくなります。 Chapter20.txt:要約すると、ext4ファイルシステムは次のとおりです。 Chapter20.txt:ext3とext2に対して後方互換性があります。 Chapter20.txt:最大ファイルシステム サイズを(16TBから)1EB に、最大ファイル サイズを(2TBから)16TB に増やしています。これらの制限は、使用されている48ビット アドレッシングに起因しています。将来的には完全な64ビット アドレッシングが行われる可能性がありますが、現時点では実際には必要ありません。 Chapter20.txt:ext3で32Kに制限されていたサブディレクトリの最大数を無制限に増やしています。 Chapter20.txt:間接ブロック マッピングを使用する代わりに、大きなファイルを可能な限り大きなエクステントに分割します。これにより、大容量ファイルのパフォーマンスが向上し、断片化が減少します。 Chapter20.txt:一度に1つのブロックではなく、一度にすべてのスペースを割り当てることができるマルチ ブロック割り当てを使用します。さらに、遅延確保でパフォーマンスを向上させることもできます。 Chapter20.txt:ファイルのディスク領域を事前確保することもできます。その領域の確保は保証されており、かつその領域は連続しています。 Chapter20.txt:データがディスクに書き込まれるまでブロックの割り当てを遅らせるパフォーマンス テクニックであるallocate-on-flush(遅延確保)を使用できます。 Chapter20.txt:高速なfsckを使用します。これにより、ファイルシステム チェックの速度を1桁以上上げることができます。 Chapter20.txt:ジャーナルのチェックサムを使用して、信頼性を向上させます。これにより、ジャーナリング中のディスクI/O待機を安全に回避できるため、パフォーマンスがわずかですが向上します。 Chapter20.txt:ナノ秒単位で測定される、改良されたタイム スタンプを使用します。 Chapter20.txt:ext4レイアウト Chapter20.txt:ジャーナルを除くすべてのフィールドは、リトルエンディアンの順序でディスクに書き込まれます。 Chapter20.txt:ディスク ブロックはブロック グループに分割され、各グループにはinodeとデータ ブロックが隣接して格納されているため、アクセス時間が短縮されます。 Chapter20.txt:データ ブロックは、実際に使用される前にファイルに事前に割り当てられます。したがって、ファイルのサイズが大きくなっても、隣接する領域はすでに予約しているため、ファイルの断片化が軽減されます。 Chapter20.txt:ファイルシステムのスーパーブロックには、システムの初期化中にファイルシステムが最初にマウントされたときにチェックが必要かどうかを確認するビットフィールドが含まれています。ビットフィールドが表す状態は次のとおりです。 Chapter20.txt:Clean:ファイルシステムは以前に正常にアンマウントされました。 Chapter20.txt:Dirty:通常、マウントされていることを意味します。 Chapter20.txt:Unknown:システムがクラッシュした場合など、正常にアンマウントされていません。 Chapter20.txt:後半2つのケースでは、fsckを実行してファイルシステムをチェックし、マウントする前に問題を修正します。 Chapter20.txt:スーパーブロックの他のフィールドには、ファイルシステムが最後にチェックされた日付とマウント数に関する情報が含まれ、これらの数量が調整可能な制限を超えると自動チェックが実行されます。 Chapter20.txt:ファイルシステムの最初のブロックはいわゆるブート ブロックであり、パーティション ブート セクタ用に予約されています。 Chapter20.txt:ext4スーパーブロックとブロック グループ Chapter20.txt:スーパーブロックには、次のようなファイルシステムに関するグローバル情報が含まれています。 Chapter20.txt:マウント数と最大マウント数(マウント数は、ディスクが正常にマウントされるたびに増えます。値は最後のfsck以降に行われた回数です。)また、デフォルトで180日後にファイルシステムのチェックを強制することも、tune2fsユーティリティによって別の時間に変更することもできます。 Chapter20.txt:ブロック サイズ(mkfsによって設定されるメモリのページより大きくすることはできません。) Chapter20.txt:グループごとのブロック数 Chapter20.txt:未使用のブロック数 Chapter20.txt:未使用のinode数 Chapter20.txt:オペレーティング システムID。 Chapter20.txt:図で示すように、スーパーブロックは複数のブロック グループに冗長的に保存されます。 Chapter20.txt:ブート ブロックの後に、それぞれ同じサイズの一連のブロック グループがあります。各ブロック グループのレイアウトを次の図に示します。 Chapter20.txt:ext3とext4ファイルシステムのレイアウト Chapter20.txt:標準のブロック グループのレイアウトはシンプルです。ブロック グループ0の場合、最初の1024バイトは未使用です(ブート セクタなどが使うため)。スーパーブロックは、ブロック グループ0を除き、最初のブロックから始まります。そして、グループ識別子といくつかのGDT(Group Descriptor Table)ブロックが続きます。これらの後に、データ ブロック ビットマップ、inodeビットマップ、inodeテーブル、データ ブロックが続きます。 Chapter20.txt:最初と2番目のブロックはすべてのブロック グループで同じであり、スーパーブロックとグループ識別子で構成されています。通常の状況では、最初のブロック グループのブロックのみがカーネルによって使用されます。重複しているコピーは、ファイルシステムがチェックされているときにのみ参照されます。すべてが正常であれば、カーネルはそれらを最初のブロック グループから単にコピーします。マスター コピーに問題がある場合、正常なものが見つかるまで次へと移動し、ファイルシステム構成を再構築します。この冗長性により、ファイルシステム チェックが定期的に実行されている限り、ext2/ext3/ext4ファイルシステムが完全に壊されることはありません。 Chapter20.txt:extファイルシステム ファミリーの初期のものは、各ブロック グループには、すべてのブロック グループのグループ識別子とスーパーブロックのコピーが含まれていました。しかし、現在は最適化され、すべてのブロック グループにスーパーブロックとグループ識別子のコピーがあるわけではありません。自分の環境がどうなっているかを確認するには、添付のスクリーンショットのように調べて、(適切なデバイス ノードの中の)正確な配置を確認します。コピーの制限は、sparse_super オプションを使用してファイルシステムを作成したときに起きます。このオプションはデフォルトでオンになります。 Chapter20.txt:dump2fsの使用 Chapter20.txt:ブロック グループの数は、グループ内の使用済みブロックと空きブロックを識別するブロック ビットマップが単一のブロックに収まる必要があるので、その範囲で表せる数に制約されます。そのため、ブロックのサイズが4096バイトの場合、ブロック グループに含めることができるブロック数は最大32K個(128MB)です。したがって、可能な限り最大のブロック グループ サイズを使用するならば、10GBのパーティションには少なくとも80のブロック グループが必要になります。 Chapter20.txt:ブロック アロケータは、各ファイルのブロックを同じブロック グループ内に保持して、シーク時間を短縮しようとします。 Chapter20.txt:データ ブロックとinode Chapter20.txt:データ ブロック ビットマップとinodeビットマップは、ブロックやinodeが未使用ならば0、使用中であれば1となるビットを持つブロックです。ブロック グループごとにこれらのビットマップはそれぞれ1つ存在します。 Chapter20.txt:inodeテーブルには、ブロック グループ内のinodeの数を対処するために必要な多くの連続したブロックが含まれています。各inodeには128バイトが必要です。このため、4KBブロックは32個のinodeに対応できます。 Chapter20.txt:オペレーティング システムに依存した情報のために予約されている領域があります。Linuxが多くの種類の非ネイティブ ファイルシステムをマウントできるのと同じように、異なるオペレーティング システムが ext2/ext3/ext4ファイルシステムをマウントする可能性があります。 Chapter20.txt:💡 Chapter20.txt:この構造では、inode番号自体はディスクに保存されません。その値は、ブロック グループ番号とinodeテーブル内のオフセットからすばやく計算できます。 Chapter20.txt: Chapter20.txt:ext2とext3ファイルシステムには、エクステントを使用して大きなファイルを構成する機能がまだ組み込まれていません。代わりに、inodeは、長さEXT2_N_BLOCKS=15のデータ ブロックへのポインタi_block []配列に記述されます。これを処理する方法は少し複雑です。 Chapter20.txt:この配列の最初の12要素は、ファイルの最初の12個のデータ ブロックを指しています Chapter20.txt:13番目の要素は、ブロック番号の1段間接ブロックの参照に使われます。14 番目は2段間接ブロック参照、15 番目は3段間接ブロック参照に使われます。 Chapter20.txt:このアルゴリズムにより、小さいファイルのアドレス指定が最速になります。たとえば、ブロック サイズが4KB の場合、48KBファイルを直接アドレス指定できます。2MBファイルには2段階参照、1GBには3段階参照、4GBファイルには4段階参照次が必要です。 Chapter20.txt:dump2fs Chapter20.txt:既に説明したように、ユーティリティdumpe2fsを使用して、ファイルシステム情報(制限、機能、フラグ、その他の属性)を調べることができます。パーティションで実行すると、以下のような情報が得られます。 Chapter20.txt:$ sudo dumpe2fs /dev/sda1 Chapter20.txt:Filesystem volume name: RHEL7 Chapter20.txt:Last mounted on: / Chapter20.txt:Filesystem UUID: 9d6b5801-9c7e-4c17-9068-49923952338e Chapter20.txt:Filesystem magic number: 0xEF53 Chapter20.txt:Filesystem revision #: 1 (dynamic) Chapter20.txt:Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super Chapter20.txt:Filesystem flags: signed_directory_hash Chapter20.txt:Default mount options: user_xattr acl Chapter20.txt:Filesystem state: clean Chapter20.txt:Errors behavior: Continue Chapter20.txt:Filesystem OS type: Linux Chapter20.txt:Inode count: 1908736 Chapter20.txt:Block count: 7630592 Chapter20.txt:Reserved block count: 381529 Chapter20.txt:Free blocks: 5353383 Chapter20.txt:Free inodes: 1682479 Chapter20.txt:First block: 0 Chapter20.txt:Block size: 4096 Chapter20.txt:Fragment size: 4096 Chapter20.txt:Group descriptor size: 64 Chapter20.txt:Reserved GDT blocks: 1024 Chapter20.txt:Blocks per group: 32768 Chapter20.txt:Fragments per group: 32768 Chapter20.txt:Inodes per group: 8192 Chapter20.txt:Inode blocks per group: 512 Chapter20.txt:Flex block group size: 16 Chapter20.txt:Filesystem created: Wed Sep 3 03:52:55 2014 Chapter20.txt:Last mount time: Fri Oct 24 09:18:58 2014 Chapter20.txt:Last write time: Fri Oct 24 09:18:58 2014 Chapter20.txt:Mount count: 89 Chapter20.txt:Maximum mount count: -1 Chapter20.txt:Last checked: Wed Sep 3 03:52:55 2014 Chapter20.txt:Check interval: 0 () Chapter20.txt:Lifetime writes: 103 GB Chapter20.txt:Reserved blocks uid: 0 (user root) Chapter20.txt:Reserved blocks gid: 0 (group root) Chapter20.txt:First inode: 11 Chapter20.txt:Inode size: 256 Chapter20.txt:Required extra isize: 28 Chapter20.txt:Desired extra isize: 28 Chapter20.txt:Journal inode: 8 Chapter20.txt:First orphan inode: 396118 Chapter20.txt:Default directory hash: half_md4 Chapter20.txt:Directory Hash Seed: e488c43e-241c-4014-91d8-6a9d3d6c7784 Chapter20.txt:Journal backup: inode blocks Chapter20.txt:Journal features: journal_incompat_revoke journal_64bit Chapter20.txt:Journal size: 128M Chapter20.txt:Journal length: 32768 Chapter20.txt:Journal sequence: 0x00023592 Chapter20.txt:Journal start: 16394 Chapter20.txt:Group 0: (Blocks 0-32767) [ITABLE_ZEROED] Chapter20.txt: Checksum 0x2921, unused inodes 7738 Chapter20.txt: Primary superblock at 0, Group descriptors at 1-4 Chapter20.txt: Reserved GDT blocks at 5-1028 Chapter20.txt: Block bitmap at 1029 (+1029), Inode bitmap at 1045 (+1045) Chapter20.txt: Inode table at 1061-1572 (+1061) Chapter20.txt: 22880 free blocks, 8174 free inodes, 2 directories, 7738 unused inodes Chapter20.txt: Free blocks: 9381-9672, 10180-32767 Chapter20.txt: Free inodes: 19-8192 Chapter20.txt:Group 1: (Blocks 32768-65535) [INODE_UNINIT, ITABLE_ZEROED] Chapter20.txt: Checksum 0x473e, unused inodes 8192 Chapter20.txt: Backup superblock at 32768, Group descriptors at 32769-32772 Chapter20.txt: Reserved GDT blocks at 32773-33796 Chapter20.txt: Block bitmap at 1030 (bg #0 + 1030), Inode bitmap at 1046 (bg #0 + 1046) Chapter20.txt: Inode table at 1573-2084 (bg #0 + 1573) Chapter20.txt: 14918 free blocks, 8192 free inodes, 0 directories, 8192 unused inodes Chapter20.txt: Free blocks: 33797, 33800-33919, 34108-34511, 34521-34559, 34784-34815, 37053-38015, 38039- 38040, 38080-38527, 38529-38911, Free inodes: 8193-16384 Chapter20.txt:..... Chapter20.txt:Group 196: (Blocks 6422528-6455295) [INODE_UNINIT, ITABLE_ZEROED] Chapter20.txt: Checksum 0x946d, unused inodes 8192 Chapter20.txt: Block bitmap at 6291460 (bg #192 + 4), Inode bitmap at 6291476 (bg #192 + 20) Chapter20.txt: Inode table at 6293536-6294047 (bg #192 + 2080) Chapter20.txt: 32768 free blocks, 8192 free inodes, 0 directories, 8192 unused inodes Chapter20.txt: Free blocks: 6422528-6455295 Chapter20.txt: Free inodes: 1605633-1613824 Chapter20.txt:.... Chapter20.txt:Group 232: (Blocks 7602176-7630591) [INODE_UNINIT, ITABLE_ZEROED] Chapter20.txt: Checksum 0xa174, unused inodes 8192 Chapter20.txt: Block bitmap at 7340040 (bg #224 + 8), Inode bitmap at 7340056 (bg #224 + 24) Chapter20.txt: Inode table at 7344160-7344671 (bg #224 + 4128) Chapter20.txt: 28416 free blocks, 8192 free inodes, 0 directories, 8192 unused inodes Chapter20.txt: Free blocks: 7602176-7630591 Chapter20.txt: Free inodes: 1900545-1908736 Chapter20.txt:tune2fs Chapter20.txt:tune2fsを使用して、ファイルシステムのパラメータを変更できます。 Chapter20.txt:ファイルシステムのチェックを自動で行うタイミングとなるマウント数の、最大回数(max-mount-count)を変更する場合: Chapter20.txt:$ sudo tune2fs -c 25 /dev/sda1 Chapter20.txt:チェックの間隔(interval-between-checks)を変更する場合: Chapter20.txt:$ sudo tune2fs -i 10 /dev/sda1 Chapter20.txt:変更可能なパラメータの現在の値を含む、スーパーブロックの内容を一覧表示する場合: Chapter20.txt:$ sudo tune2fs -l /dev/sda1 Chapter20.txt:以下は実行例です。 Chapter20.txt:$ sudo tune2fs -l /dev/sdb1 Chapter20.txt:tune2fs 1.42.9 (28-Dec-2013) Chapter20.txt:Filesystem volume name: RHEL7 Chapter20.txt:Last mounted on: / Chapter20.txt:Filesystem UUID: 471dfeba-3ec7-4529-8069-2afe50762c57 Chapter20.txt:Filesystem magic number: 0xEF53 Chapter20.txt:Filesystem revision #: 1 (dynamic) Chapter20.txt:Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize Chapter20.txt:Filesystem flags: signed_directory_hash Chapter20.txt:Default mount options: user_xattr acl Chapter20.txt:Filesystem state: clean Chapter20.txt:Errors behavior: Continue Chapter20.txt:Filesystem OS type: Linux Chapter20.txt:Inode count: 1281120 Chapter20.txt:Block count: 5120000 Chapter20.txt:Reserved block count: 256000 Chapter20.txt:Free blocks: 2700371 Chapter20.txt:Free inodes: 1004272 Chapter20.txt:First block: 0 Chapter20.txt:Block size: 4096 Chapter20.txt:Fragment size: 4096 Chapter20.txt:Group descriptor size: 64 Chapter20.txt:Reserved GDT blocks: 1024 Chapter20.txt:Blocks per group: 32768 Chapter20.txt:Fragments per group: 32768 Chapter20.txt:Inodes per group: 8160 Chapter20.txt:Inode blocks per group: 510 Chapter20.txt:Flex block group size: 16 Chapter20.txt:Filesystem created: Thu Jan 15 13:24:59 2015 Chapter20.txt:Last mount time: Fri Sep 9 07:00:26 2016 Chapter20.txt:Last write time: Fri Sep 9 07:00:25 2016 Chapter20.txt:Mount count: 55 Chapter20.txt:Maximum mount count: 100 Chapter20.txt:Last checked: Wed Jul 20 13:53:02 2016 Chapter20.txt:Check interval: 0 () Chapter20.txt:Lifetime writes: 624 GB Chapter20.txt:Reserved blocks uid: 0 (user root) Chapter20.txt:Reserved blocks gid: 0 (group root) Chapter20.txt:First inode: 11 Chapter20.txt:Inode size: 256 Chapter20.txt:Required extra isize: 28 Chapter20.txt:Desired extra isize: 28 Chapter20.txt:Journal inode: 8 Chapter20.txt:First orphan inode: 1057172 Chapter20.txt:Default directory hash: half_md4 Chapter20.txt:Directory Hash Seed: f78ac45c-42d4-492b-bbf7-7e987d84bb87 Chapter20.txt:Journal backup: inode blocks Chapter20.txt:演習 Chapter20.txt:課題 20.1: Defragmentation(デフラグ) Chapter20.txt:🚩 Chapter20.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter20.txt:【【これ以降は橋本さんの訳を挿入】】 Chapter20.txt:Newcomers toLinuxare often surprised at the lack of mention of filesystem defragmentation tools, since such programs areroutinely used in the Windows world. Chapter20.txt:However, native filesystems in UNIX-type operating systems, including Linux, tend not to suffer serious problems with filesys-tem fragmentation. Chapter20.txt:This is primarily because they do not try to cram files onto the innermost disk regions where access times are faster. Instead,they spread free space out throughout the disk, so that when a file has to be created there is a much better chance that aregion of free blocks big enough can be found to contain the entire file in either just one or a small number of pieces. Chapter20.txt:For modern hardware, the concept of innermost disk regions is obscured by the hardware anyway. Chapter20.txt:Don’t do this Chapter20.txt:For SSDs defragmentation can actually shorten the lifespan of the storage media due to finite read/erase/write cycles. Chapter20.txt:On smart operating systems defragmentation is turned off by default on SSD drives. Chapter20.txt:Furthermore, the newer journalling filesystems (including ext4) work with extents(large contiguous regions) by design. Chapter20.txt:However, there does exist a tool for de-fragmenting ext4 filesystems: Chapter20.txt:$ sudo e4defrag Chapter20.txt:Usage : e4defrag [-v] file...| directory...| device... Chapter20.txt:: e4defrag -c file...| directory...| device... Chapter20.txt:e4defrag is part of the e2fsprogs package and should be on all modern Linux distributions. Chapter20.txt:The only two options are: Chapter20.txt:•-v: Be verbose. Chapter20.txt:•-c: Don’t actually do anything, just analyze and report. Chapter20.txt:The argument can be: Chapter20.txt:• A file Chapter20.txt:• A directory Chapter20.txt:• An entire device Chapter20.txt:例えば以下のように使います。 Chapter20.txt:$ sudo e4defrag -c /var/log Chapter20.txt: now/best size/ext Chapter20.txt:1. /var/log/lastlog 5/1 9 KB Chapter20.txt:2. /var/log/sa/sa24 3/1 80 KB Chapter20.txt:3. /var/log/rhsm/rhsm.log 2/1 142 KB Chapter20.txt:4. /var/log/messages 2/1 4590 KB Chapter20.txt:5. /var/log/Xorg.1.log.old 1/1 36 KB Chapter20.txt:Total/best extents 120/112 Chapter20.txt:Average size per extent 220 KB Chapter20.txt:Fragmentation score 1 Chapter20.txt:[0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag] Chapter20.txt:This directory (/var/log) does not need defragmentation.Done. Chapter20.txt:$ sudo e4defrag /var/log Chapter20.txt:ext4 defragmentation for directory(/var/log) Chapter20.txt:[2/152]/var/log/Xorg.2.log: 100% [ OK ] Chapter20.txt:[3/152]/var/log/Xorg.0.log.old: 100% [ OK ] Chapter20.txt:[4/152]/var/log/messages-20141019.gz: 100% [ OK ] Chapter20.txt:[5/152]/var/log/boot.log: 100% [ OK ] Chapter20.txt:[7/152]/var/log/cups/page_log-20140924.gz: 100% [ OK ] Chapter20.txt:[8/152]/var/log/cups/access_log-20141019.gz: 100% [ OK ] Chapter20.txt:[9/152]/var/log/cups/access_log: 100% [ OK ] Chapter20.txt:[10/152]/var/log/cups/error_log-20141018.gz: 100% [ OK ] Chapter20.txt:[11/152]/var/log/cups/error_log-20141019.gz: 100% [ OK ] Chapter20.txt:[12/152]/var/log/cups/access_log-20141018.gz: 100% [ OK ] Chapter20.txt:[14/152]/var/log/cups/page_log-20141018.gz: 100% [ OK ] Chapter20.txt:... Chapter20.txt:[152/152]/var/log/Xorg.1.log.old: 100% [ OK ] Chapter20.txt:Success: [ 112/152 ] Chapter20.txt:Failure: [ 40/152 ] Chapter20.txt:Try running e4defrag on various files, directories, and entire devices, always trying with -c first. Chapter20.txt:You will generally find that Linux filesystems only tend to need defragmentation when they get very full, over 90 percent or so,or when they are small and have relatively large files, like when a boot partition is used. Chapter20.txt:課題 20.2: tune2fs を使用したファイルシステム パラメータの変更 Chapter20.txt:🚩 Chapter20.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter20.txt:Exercise 20.2: Modifying Filesystem Parameters with tune2fs Chapter20.txt:We are going to fiddle with some properties of a formatted ext4 filesystem. This does not require unmounting the filesystem first. Chapter20.txt:In the below you can work with an image file you create as in: Chapter20.txt:$ dd if=/dev/zero of=imagefile bs=1M count=1024 Chapter20.txt:$ mkfs.ext4 imagefile Chapter20.txt:or you can substitute /dev/sdaX(using whatever partition the filesystem you want to modify is mounted on) forimagefile. Chapter20.txt:1. Using dumpe2fs, obtain information about the filesystem whose properties you want to adjust. Chapter20.txt:Display: Chapter20.txt:• The maximum mount count setting (after which a filesystem check will be forced.) Chapter20.txt:• The Check interval(the amount of time after which a filesystem check is forced)• The number of blocks reserved, and the total number of blocks Chapter20.txt:2. Change: Chapter20.txt:• The maximum mount count to 30. Chapter20.txt:• TheCheck intervalto three weeks. Chapter20.txt:• The percentage of blocks reserved to 10 percent. Chapter20.txt:3. Using dumpe2fs, once again obtain information about the filesystem and compare with the original output. Chapter20.txt:Solution 20.2 Chapter20.txt:1.$ dumpe2fs imagefile > dumpe2fs-output-initial Chapter20.txt:dumpe2fs 1.42.9 (28-Dec-2013) Chapter20.txt:$ grep -i -e "Mount count" -e "Check interval" -e "Block Count" dumpe2fs-output-initial Chapter20.txt:Block count: 262144 Chapter20.txt:Reserved block count: 13107 Chapter20.txt:Mount count: 0 Chapter20.txt:Maximum mount count: -1 Chapter20.txt:Check interval: 0 () Chapter20.txt:2.$ tune2fs -c 30 imagefile Chapter20.txt:tune2fs 1.42.9 (28-Dec-2013) Chapter20.txt:Setting maximal mount count to 30 Chapter20.txt:$ tune2fs -i 3w imagefile Chapter20.txt:tune2fs 1.42.9 (28-Dec-2013) Chapter20.txt:Setting interval between checks to 1814400 seconds Chapter20.txt:$ tune2fs -m 10 imagefile Chapter20.txt:tune2fs 1.42.9 (28-Dec-2013) Chapter20.txt:Setting reserved blocks percentage to 10% (26214 blocks) Chapter20.txt:3.$ dumpe2fs imagefile > dumpe2fs-output-final Chapter20.txt:dumpe2fs 1.42.9 (28-Dec-2013) Chapter20.txt:$ grep -i -e "Mount count" -e "Check interval" -e "Block Count" dumpe2fs-output-final Chapter20.txt:Block count: 262144 Chapter20.txt:Reserved block count: 26214 Chapter20.txt:Mount count: 0 Chapter20.txt:Maximum mount count: 30 Chapter20.txt:Check interval: 1814400 (3 weeks) Chapter20.txt:$ diff dumpe2fs-output-initial dumpe2fs-output-final Chapter20.txt:14c14 Chapter20.txt:< Reserved block count: 13107 Chapter20.txt:--- Chapter20.txt:> Reserved block count: 26214 Chapter20.txt:29c29 Chapter20.txt:< Last write time: Wed Oct 26 14:26:19 2016 Chapter20.txt:--- Chapter20.txt:> Last write time: Wed Oct 26 14:26:20 2016 Chapter20.txt:31c31 Chapter20.txt:< Maximum mount count: -1 Chapter20.txt:--- Chapter20.txt:> Maximum mount count: 30 Chapter20.txt:33c33,34 Chapter20.txt:< Check interval: 0 () Chapter20.txt:--- Chapter20.txt:> Check interval: 1814400 (3 weeks) Chapter20.txt:> Next check after: Wed Nov 16 13:26:16 Chapter20.txt:知識チェック Chapter20.txt:「第20章 - ext2/ext3/ext4ファイルシステム」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter20.txt:クイズ開始 Chapter20.txt:問題 20.1 Chapter20.txt:/dev/sda1のext3またはext4ファイルシステムで、ファイルシステム チェックを実施する間隔を180日に設定するコマンドはどれですか? Chapter20.txt:A. tune2fs -c 180 /dev/sda1 Chapter20.txt:B. tune2fs -i 180 /dev/sda1 Chapter20.txt:C. tune2fs -l 180 /dev/sda1 Chapter21.txt:XFSとbtrfsファイルシステム Chapter21.txt:はじめに Chapter21.txt:第21章はじめに Chapter21.txt:XFSとbtrfsファイルシステムは、エンタープライズLinuxディストリビューションにおいて優位なext4に対抗する重要なファイルシステムになってきています。これらの次世代ファイルシステムは、複数の物理および論理ボリュームにまたがる大きなサイズの処理とパフォーマンス性能に関して、堅牢な機能を備えています。 Chapter21.txt:学習目標 Chapter21.txt:この章の終わりまでに、次のことができるようになります。 Chapter21.txt:XFSファイルシステムについて説明できます。 Chapter21.txt:XFSファイルシステムを保守できます。 Chapter21.txt:btrfsファイルシステムについて説明できます。 Chapter21.txt:XFSとbtrfsファイルシステム Chapter21.txt:XFS Chapter21.txt:XFSファイルシステムはSilicon Graphics Inc.(SGI)によって設計・開発され、IRIXオペレーティング システムで使用され、その後Linuxに移植されました。SGIシステムの大規模なデータ セットを処理し、並列I/Oタスクを非常に効率的に処理するように設計されています。 Chapter21.txt:以下を処理できます。 Chapter21.txt:ファイルシステム全体で最大16EB(エクサバイト)。 Chapter21.txt:個々のファイルに対して最大8EB。 Chapter21.txt:高性能であることはXFSの極めて重要な設計要素の1つであり、次のメソッドを実装しています。 Chapter21.txt:DMA(Direct Memory Access)I/Oの採用 Chapter21.txt:I/O性能の保証 Chapter21.txt:基盤となるRAIDまたはLVMのストレージ デバイスに一致するように、ストライプ サイズを調整。 Chapter21.txt:他のLinuxファイルシステムとは異なり、XFSはクォータ情報をジャーナルに保管することもできます。これにより、クォータが有効なファイルシステムが正しくアンマウントされた時には、リカバリ時間が短縮されます。さらに、ジャーナルは外部デバイス上にある場合もあります。 Chapter21.txt:他のUNIXとLinuxのファイルシステムと同様に、XFSは拡張属性をサポートしています。 Chapter21.txt:XFSファイルシステムのメンテナンスは、ほとんどのメンテナンス作業をオンラインで(つまり、ファイルシステムがすべてマウントされている間に)実行できるので、簡単に行えます。このディレクトリには以下が含まれます。 Chapter21.txt:デフラグ Chapter21.txt:サイズ変更(拡大のみ) Chapter21.txt:ダンプ/復元。 Chapter21.txt:バックアップと復元は、もともとXFSにある以下のユーティリティを使用して実行できます。 Chapter21.txt:xfsdump Chapter21.txt:xfsrestore Chapter21.txt:これらは、任意の時点で停止したり再開したりすることができます。これらのユーティリティ プログラムもマルチスレッドであるため、XFSのダンプと復元は非常に迅速に実行できます。 Chapter21.txt:従来のクォータ コマンドを使用して、XFSボリューム上のファイルシステムごとのクォータを操作できます。ただし、xfs_quotaコマンドを使用する場合は、XFSがサポートするディレクトリごとのクォータを使用できます。 Chapter21.txt:XFSファイルシステムは、ハードウェアまたはソフトウェアのスナップショットを直接サポートしていません。ただし、xfs_freezeユーティリティを使用してファイルシステムを静止させ、基盤となるデバイスでスナップショット ツールを動作させることができます。Linux LVMツールは、xfs_freezeを使用して、スナップショットを取るためにXFSファイルシステムを静止します。 Chapter21.txt:btrfs Chapter21.txt:Linux開発者と、高性能と大容量、もしくは特殊なニーズを持つLinuxユーザーの両方が、Chris Masonが作成したbtrfs filesytemの開発と段階的なデプロイに注目しています。btrfsは、B-tree file systemの略です。完全なドキュメントは、btrfs wikiページにあります。 Chapter21.txt:btrfsは、ext4など他のLinuxファイルシステムでのプーリング、スナップショット、チェックサム、および統合マルチ デバイス スパニングの不足に対処することを目的としています。このような機能は、Linuxが大規模なエンタープライズ ストレージ構成へと拡張していくためには重要です。 Chapter21.txt:btrfsはメインライン カーネル2.6.29から含まれていますが、一般的には実験的なものと見なされています。ただし、一部のベンダーはこれを新しい製品で使用しており、SLESとOpenSUSEではデフォルトのルート ファイルシステムになっています。 Chapter21.txt:主な機能の1つは、ファイルシステム全体のスナップショットを頻繁に取得できる、またはファイルシステム全体のサブボリュームをほぼ瞬時に取得できることです。btrfsはCOW手法(Copy on Write)を広範囲に使用するため、このようなスナップショットには、データ ブロックの初期領域と、メタデータ更新を除くIOアクティビティは含まれません。 Chapter21.txt:以前のスナップショットで表わされた状態に簡単に戻すことができますし、以前のルート ファイルシステムのスナップショットからカーネルを再起動させることもできます。 Chapter21.txt:btrfsは、LVM(Logical Volume Management)と同様に、既存のファイルシステムに新しいパーティションや物理メディアを追加または削除するための、独自の内部フレームワークを持っています。 Chapter21.txt:btrfsが、重要なファイルシステムとして日常使いされるようになるには、一部のbtrfs機能の開発が終了する必要があります。btrfsの開発履歴と予想される進化の報告については、カーネル開発のウェブ ページを参照してください。 Chapter21.txt:演習 Chapter21.txt:演習 21.1. XFSについて、もっと知る Chapter21.txt:🚩 Chapter21.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter21.txt:【【これ以降は橋本さんの訳を挿入】】 Chapter21.txt:Please Note Chapter21.txt:We do not have a detailed lab exercise you can do withxfs; many systems still will not have the kernel modules and relevant user utilities installed. However, if your Linux kernel and distribution does support it, you can easily create a filesystem with mkfs -t xfs. Chapter21.txt:You can find out about availablexfs-related utilities with: Chapter21.txt:$ man -k xfs Chapter21.txt:attr (1) - extended attributes on XFS filesystem objects Chapter21.txt:filesystems (5) - Linux file-system types: minix, ext, ext2, ext3, ext4,... Chapter21.txt:fs (5) - Linux file-system types: minix, ext, ext2, ext3, ext4,... Chapter21.txt:fsck.xfs (8) - do nothing, successfully Chapter21.txt:fsfreeze (8) - suspend access to a filesystem (Linux Ext3/4, ReiserFS... Chapter21.txt:mkfs.xfs (8) - construct an XFS filesystem Chapter21.txt:pmdaxfs (1) - XFS filesystem performance metrics domain agent (PMDA) Chapter21.txt:xfs (5) - layout of the XFS filesystem Chapter21.txt:xfs_admin (8) - change parameters of an XFS filesystem Chapter21.txt:xfs_bmap (8) - print block mapping for an XFS file Chapter21.txt:xfs_copy (8) - copy the contents of an XFS filesystem Chapter21.txt:xfs_db (8) - debug an XFS filesystem Chapter21.txt:xfs_estimate (8) - estimate the space that an XFS filesystem will take Chapter21.txt:xfs_freeze (8) - suspend access to an XFS filesystem Chapter21.txt:xfs_fsr (8) - filesystem reorganizer for XFS Chapter21.txt:xfs_growfs (8) - expand an XFS filesystem Chapter21.txt:xfs_info (8) - expand an XFS filesystem Chapter21.txt:xfs_io (8) - debug the I/O path of an XFS filesystem Chapter21.txt:xfs_logprint (8) - print the log of an XFS filesystem Chapter21.txt:xfs_mdrestore (8) - restores an XFS metadump image to a filesystem image Chapter21.txt:xfs_metadump (8) - copy XFS filesystem metadata to a file Chapter21.txt:xfs_mkfile (8) - create an XFS file Chapter21.txt:xfs_ncheck (8) - generate pathnames from i-numbers for XFS Chapter21.txt:xfs_quota (8) - manage use of quota on XFS filesystems Chapter21.txt:xfs_repair (8) - repair an XFS filesystem Chapter21.txt:xfs_rtcp (8) - XFS realtime copy command Chapter21.txt:xfsdump (8) - XFS filesystem incremental dump utility Chapter21.txt:xfsinvutil (8) - xfsdump inventory database checking and pruning utility Chapter21.txt:xfsrestore (8) - XFS filesystem incremental restore utility Chapter21.txt:xqmstats (8) - Display XFS quota manager statistics from /proc Chapter21.txt:Read about these utility programs and see if you can play with them on the filesystem you created. Chapter21.txt:演習 21.2. btrfs について、もっと知る Chapter21.txt:🚩 Chapter21.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter21.txt:【【これ以降は橋本さんの訳を挿入】】 Chapter21.txt:Please Note Chapter21.txt:We do not have a detailed lab exercise you can do with btrfs; many systems still will not have the kernel modules and relevant user utilities installed. However, if your Linux kernel and distribution support it, you can easily create a filesystem with mkfs -t btrfs. Chapter21.txt:You can find out about availablebtrfs-related utilities with either just typingbtrfs: Chapter21.txt:$ btrf Chapter21.txt:susage: btrfs [--help] [--version] [...] [] Chapter21.txt:Command groups: Chapter21.txt:subvolume manage subvolumes: create, delete, list, etc Chapter21.txt:filesystem overall filesystem tasks and information Chapter21.txt:balance balance data across devices, or change block groups using filters Chapter21.txt:device manage and query devices in the filesystem Chapter21.txt:scrub verify checksums of data and metadata Chapter21.txt:rescue toolbox for specific rescue operations Chapter21.txt:inspect-internal query various internal information Chapter21.txt:property modify properties of filesystem objects Chapter21.txt:quota manage filesystem quota settings Chapter21.txt:qgroup manage quota groups Chapter21.txt:replace replace a device in the filesystem Chapter21.txt:Commands: Chapter21.txt:check Check structural integrity of a filesystem (unmounted). Chapter21.txt:restore Try to restore files from a damaged filesystem (unmounted) Chapter21.txt:send Send the subvolume(s) to stdout. Chapter21.txt:receive Receive subvolumes from a stream Chapter21.txt:help Display help information Chapter21.txt:version Display btrfs-progs version Chapter21.txt:You can get quite a bit more detail by typing: Chapter21.txt:$ btrfs --help Chapter21.txt:Read about these utility programs and see if you can play with them on the filesystem you created. Chapter21.txt:The command Chapter21.txt:$ man -k btrfs Chapter21.txt:also generates a lot of information: Chapter21.txt:btrfs-image (8) - create/restore an image of the filesystem Chapter21.txt:btrfs-show (8) - scan the /dev directory for btrfs partitions and print re... Chapter21.txt:btrfsck (8) - check a btrfs filesystem Chapter21.txt:btrfsctl (8) - control a btrfs filesystem Chapter21.txt:mkfs.btrfs (8) - create an btrfs filesystem Chapter21.txt:btrfs (5) - topics about the BTRFS filesystem (mount options, support... Chapter21.txt:btrfs (8) - a toolbox to manage btrfs filesystems Chapter21.txt:btrfs-balance (8) - balance block groups on a btrfs filesystem Chapter21.txt:.... Chapter21.txt:知識チェック Chapter21.txt:「第21章 - XFSとbtrfsファイルシステム」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter21.txt:クイズ開始 Chapter21.txt:問題 21.1 Chapter21.txt:XFSファイルシステムにおいて、バックアップ用のデフォルトのツールは何ですか? Chapter21.txt:A. xfsrestore Chapter21.txt:B. xfsdump Chapter21.txt:C. xfs_freeze Chapter21.txt:D. xfs_quota Chapter21.txt:問題 21.2 Chapter21.txt:XFSファイルシステムにおいて、復元用のデフォルトのツールは何ですか? Chapter21.txt:A. xfsdump Chapter21.txt:B. xfs_freeze Chapter21.txt:C. xfs_quota Chapter21.txt:D. xfsrestore Chapter22.txt:ディスクの暗号化 Chapter22.txt:はじめに Chapter22.txt:第22章はじめに Chapter22.txt:ファイルシステムは、そこに含まれるデータをのぞき見と破壊の両方から保護するために、暗号化することができます。暗号化はインストール時に選択するか、後で組み込むこともできます。Linuxディストリビューションは、ほとんどの場合LUKSメソッドを使用し、cryptsetupを使用して暗号化に関わるタスクを実行します。 Chapter22.txt:学習目標 Chapter22.txt:この章の終わりまでに、次のことができるようになります。 Chapter22.txt:暗号化を使用する正当な理由と暗号化がいつ要求されるかを示すことができます。 Chapter22.txt:cryptsetupを使用してLUKSがどのように動作するかを理解できます。 Chapter22.txt:暗号化されたファイルシステムとパーティションの設定と使用ができます。 Chapter22.txt:起動時に暗号化されたパーティションをマウントするようにシステムを構成できます。​ Chapter22.txt:ディスクの暗号化 Chapter22.txt:なぜ暗号化を使用するのか? Chapter22.txt:機密データを保存して送信する場合は、常に暗号化を使用する必要があります。ブロック デバイス レベルの暗号化を構成して使用することにより、ハード ドライブやその他のメディアに含まれるデータの損失や侵害によって引き起こされる損害に対して、最も強力な保護の1つが提供されます。 Chapter22.txt:最新のLinuxディストリビューションでは、すべてまたは一部のディスク パーティションを暗号化することを、インストール中に選択できます。暗号化パーティションを後で作成してフォーマットすることも簡単にできますが、データ コピー操作を行わずに既存のパーティションを暗号化することはできません。 Chapter22.txt:LUKS Chapter22.txt:最新のLinuxディストリビューションは、主にLUKS(Linux Unified Key Setup)を使用してブロック デバイス レベルの暗号化を提供します。ラップトップ、タブレット、スマートフォンなどのポータブル システムでは、ブロック デバイスへの暗号化を強くお勧めします。 Chapter22.txt:LUKSはcryptsetupでインストールできます。cryptsetupは、plainモードのdm-cryptボリューム、loop-AES、TrueCrypt互換などの他のメソッドも使える、強力なユーティリティです。LUKSはLinuxで最もよく使用される標準的な方法であるため、これらの選択肢については説明しません。 Chapter22.txt:dm-cryptカーネル モジュールは、LVMでも頻繁に使用されるデバイス マッパーというカーネルの仕組みを使用します。これについては後で説明します。 Chapter22.txt:LUKSはすべての必要な情報をパーティション ヘッダー自体に保存するため、パーティションを他のディスクやシステムに簡単に移行できます。 Chapter22.txt:LUKSは、スワップ パーティションを透過的に暗号化することもできます。 Chapter22.txt:cryptsetup Chapter22.txt:基本的に、すべてはSwiss army knifeプログラムであるcryptsetupで行われます。暗号化されたボリュームは、一度セットアップすれば、通常のディスク ユーティリティを使用してマウントおよびアンマウントできます。 Chapter22.txt:コマンドの一般的な書式は次のとおりです。 Chapter22.txt:cryptsetup [OPTION...] Chapter22.txt:そして、cryptsetupでできる内容は、以下のコマンドで参照できます。 Chapter22.txt:$ cryptsetup --help Chapter22.txt:cryptsetup 2.0.6 Chapter22.txt:Usage: cryptsetup [OPTION...] Chapter22.txt: --version Print package version Chapter22.txt: -v, --verbose Shows more detailed error messages Chapter22.txt: --debug Show debug messages Chapter22.txt: -c, --cipher=STRING The cipher used to encrypt the disk (see /proc/crypto) Chapter22.txt: -h, --hash=STRING The hash used to create the encryption key from the passphrase Chapter22.txt: -y, --verify-passphrase Verifies the passphrase by asking for it twice Chapter22.txt: -d, --key-file=STRING Read the key from a file Chapter22.txt: --master-key-file=STRING Read the volume (master) key from file. Chapter22.txt: --dump-master-key Dump volume (master) key instead of keyslots info Chapter22.txt:.... Chapter22.txt:暗号化されたパーティションの使用 Chapter22.txt:パーティション/dev/sdc12が既に存在する場合、次のコマンドは、暗号化を設定し、それをLUKSで使用できるようにし、フォーマットし、マウントし、使用し、そしてアンマウントします。 Chapter22.txt:まず、LUKSでパーティションを初期化する必要があります。 Chapter22.txt:$ sudo cryptsetup luksFormat /dev/sdc12 Chapter22.txt:暗号化されたボリュームを後で使用する時に必要となる、パスフレーズの入力を求められます。暗号化を設定するときは、この手順を1回だけ行う必要があります。あなたが使っているカーネルは、cryptsetupで使用されるデフォルトの暗号化方式をサポートしていない場合があります。その場合には、/proc/cryptoを調べてシステムがサポートしている方式を確認します。それを適用する場合: Chapter22.txt:$ sudo cryptsetup luksFormat --cipher aes /dev/sdc12 Chapter22.txt:ボリュームをいつでも使用可能にする場合: Chapter22.txt:$ sudo cryptsetup --verbose luksOpen /dev/sdc12 SECRET Chapter22.txt:この時、パスフレーズを入力するように求められます。パーティションをフォーマットする場合: Chapter22.txt:$ sudo mkfs.ext4 /dev/mapper/SECRET Chapter22.txt:マウントする場合: Chapter22.txt:$ sudo mount /dev/mapper/SECRET /mnt Chapter22.txt:これにより、まるで暗号化されていないパーティションであるかのように、自由に使用できます。完了したら、次のコマンドでアンマウントします。 Chapter22.txt:$ sudo umount /mnt Chapter22.txt:そして、次のコマンドで今の関連付けを削除します。 Chapter22.txt:$ sudo cryptsetup --verbose luksClose SECRET Chapter22.txt:ブート時のマウント Chapter22.txt:ブート時に暗号化されたパーティションをマウントするには、2つの条件を満たす必要があります。 Chapter22.txt:1つ目は/etc/fstabに適切なエントリを作成することです。これについて特別なことは何もなく、暗号化については一切触れる必要がありません。これは次のように簡単にできます。 Chapter22.txt:/dev/mapper/SECRET /mnt ext4 defaults 0 0 Chapter22.txt:2つ目は、/etc/crypttabにエントリを追加することです。これも次のように簡単にできます。 Chapter22.txt:SECRET ​/dev/sdc12 Chapter22.txt:このファイルでは、起動時にプロンプトを表示したくない場合にパスワードを指定するなど、さらに多くのことを実行できます(ただ、セキュリティ面では逆効果と思われます)。このファイルで何ができるかを調べるには、man crypttabを参照してください。 Chapter22.txt:デモ:暗号化されたループバック パーティションのセットアップ Chapter22.txt:このビデオでは、暗号化されたループバック パーティションを設定する方法を示します。 Chapter22.txt:演習 Chapter22.txt:課題 22.1ディスクの暗号化 Chapter22.txt:🚩 Chapter22.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter22.txt:【【これ以降は橋本さんの訳を挿入】】 Chapter22.txt:In this exercise, you will encrypt a partition on the disk in order to provide a measure of security in the event that the hard drive or laptop is stolen. Reviewing the cryptsetup documentation first would be a good idea (man cryptsetup and cryptsetup --help). Chapter22.txt:1. Create a new partition for the encrypted block device with fdisk. Make sure the kernel is aware of the new partitiontable. A reboot will do this but there are other methods. Chapter22.txt:2. Format the partition with cryptsetup using LUKS for the crypto layer. Chapter22.txt:3. Create the un-encrypted pass through device by opening the encrypted block device, i.e.,secret-disk. Chapter22.txt:4. Add an entry to /etc/crypttab so that the system prompts for the passphrase on reboot. Chapter22.txt:5. Format the filesystem as an ext4 filesystem. Chapter22.txt:6. Create a mount point for the new filesystem, i.e. /secret. Chapter22.txt:7. Add an entry to /etc/fstab so that the filesystem is mounted on boot. Chapter22.txt:8. Try and mount the encrypted filesystem. Chapter22.txt:9. Validate the entire configuration by rebooting. Chapter22.txt:Solution 22.1 Chapter22.txt:1.$ sudo fdisk /dev/sda Chapter22.txt:Create a new partition (in the below /dev/sda4 to be concrete) and then either issue: Chapter22.txt:$ sudo partprobe -s Chapter22.txt:to have the system re-read the modified partition table, or reboot (which is far safer). Chapter22.txt:Note:If you can’t use a real partition, use the technique in the previous chapter to use a loop device or image file forthe same purpose. Chapter22.txt:2.$ sudo cryptsetup luksFormat /dev/sda4 Chapter22.txt:3.$ sudo cryptsetup luksOpen /dev/sda4 secret-disk Chapter22.txt:4. Add the following to /etc/crypttab: Chapter22.txt:in /etc/crypttab Chapter22.txt:secret-disk /dev/sda4 Chapter22.txt:5.$ sudo mkfs -t ext4 /dev/mapper/secret-disk Chapter22.txt:6.$ sudo mkdir -p /secret Chapter22.txt:7. Add the following to/etc/fstab: Chapter22.txt:in /etc/fstab Chapter22.txt:/dev/mapper/secret-disk /secret ext4 defaults 1 2 Chapter22.txt:8. Mount just the one filesystem: Chapter22.txt:$ sudo mount /secret Chapter22.txt:or mount all filesystems mentioned in/etc/fstab: Chapter22.txt:$ sudo mount -a Chapter22.txt:9. Reboot. Chapter22.txt:課題 22.2. Swap領域のスワップ Chapter22.txt:🚩 Chapter22.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter22.txt:【【これ以降は橋本さんの訳を挿入】】 Chapter22.txt:In this exercise, we will be encrypting the swap partition. Data written to the swap device can contain sensitive information.Because swap is backed by an actual partition, it is important to consider the security implications of having an unencrypted swap partition. Chapter22.txt:The process for encrypting is similar to the previous exercise, except we will not create a file system on the encrypted blockdevice. Chapter22.txt:In this case, we are also going to use the existing swap device by first de-activating it and then formatting it for use as anencrypted swap device. It would be a little bit safer to use a fresh partition below, or you can safely reuse the encrypted partition you set up in the previous exercise. At the end we explain what to do if you have problems restoring. Chapter22.txt:You may want to revert back to the original unencrypted partition when we are done by just running mkswap on it again whenit is not being used, as well as reverting the changes in the configuration files, /etc/crypttab and /etc/fstab. Chapter22.txt:1. Find out what partition you are currently using for swap and then deactivate it: Chapter22.txt:$ cat /proc/swaps Chapter22.txt:Filename Type Size Used Priority Chapter22.txt:/dev/sda11 partition 4193776 0 -1 Chapter22.txt:$ sudo swapoff /dev/sda11 Chapter22.txt:2. Do the same steps as in the previous exercise to set up encryption: Chapter22.txt:$ sudo cryptsetup luksFormat /dev/sda11 # may use --cipher aes option Chapter22.txt:$ sudo cryptsetup luksOpen /dev/sda11 swapcrypt Chapter22.txt:3. Format the encrypted device to use with swap: Chapter22.txt:$ sudo mkswap /dev/mapper/swapcrypt Chapter22.txt:4. Now test to see if it actually works by activating it: Chapter22.txt:$ sudo swapon /dev/mapper/swapcrypt Chapter22.txt:$ cat /proc/swaps Chapter22.txt:5. To ensure the encrypted swap partition can be activated at boot you need to do two things: Chapter22.txt:(a) Add a line to/etc/crypttabso that the system prompts for the passphrase on reboot: Chapter22.txt:in /etc/crypttab Chapter22.txt:swapcrypt /dev/sda11 /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256 Chapter22.txt:(Note /dev/urandom is preferred over /dev/random for reasons involving potential entropy shortages as dis-cussed in the man page forcrypttab.) You don’t need the detailed options that follow, but we give them as anexample of what more you can do. Chapter22.txt:(b) Add an entry to/etc/fstabso that the swap device is activated on boot. Chapter22.txt:in /etc/fstab Chapter22.txt:/dev/mapper/swapcrypt none swap defaults 0 0 Chapter22.txt:6. You can validate the entire configuration by rebooting. Chapter22.txt:To restore your original unencrypted partition: Chapter22.txt:$ sudo swapoff /dev/mapper/swapcrypt Chapter22.txt:$ sudo cyyptsetup luksClose swapcrypt Chapter22.txt:$ sudo mkswap /dev/sda11 Chapter22.txt:$ sudo swapon -a Chapter22.txt:If the swapon command fails it is likely because /etc/fstab no longer properly describes the swap partition. If this partitionis described in there by actual device node (/dev/sda11) there won’t be a problem. You can fix either by changing the line inthere to be: Chapter22.txt:in /etc/fstab Chapter22.txt:/dev/sda11 swap swap defaults 0 0 Chapter22.txt:or by giving a label when formatting and using it as in: Chapter22.txt:$ sudo mkswap -L SWAP /dev/sda11 Chapter22.txt:and then putting in the file: Chapter22.txt:in /etc/fstab Chapter22.txt:LABEL=SWAP swap swap defaults 0 0 Chapter22.txt:知識チェック Chapter22.txt:「第22章 - ディスクの暗号化」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter22.txt:クイズ開始 Chapter22.txt:問題 22.1 Chapter22.txt:LUKSによって、最新のLinuxディストリビューションでは暗号化されたパーティションを簡単に作成できます。暗号化されたパーティションを準備してマウントする手順の、最も正しい順序はどれですか? Chapter22.txt:i. 暗号化されていないパス スルー デバイスを作成します Chapter22.txt:ii. 暗号化されたブロック デバイスにファイルシステムをマウントします Chapter22.txt:iii. ext4などの標準ファイルシステムでフォーマットします Chapter22.txt:iv. 暗号化して利用するブロック デバイスのパーティションを作成します Chapter22.txt:v. cryptsetupでフォーマットします Chapter22.txt:A. iv, v, i, iii, ii Chapter22.txt:B. iv, iii, i, v, iii Chapter22.txt:C. i, v, iii, iv, ii Chapter22.txt:D. iv, v, ii, i, iii Chapter23.txt:論理ボリューム管理(LVM) Chapter23.txt:はじめに Chapter23.txt:第23章はじめに Chapter23.txt:このビデオでは、この章で説明するトピックの概要を簡単に説明します。 Chapter23.txt:学習目標 Chapter23.txt:この章の終わりまでに、次のことができるようになります。 Chapter23.txt:LVMの背景となる概念を説明できます。 Chapter23.txt:論理ボリュームを作成できます。 Chapter23.txt:論理ボリュームを表示できます。 Chapter23.txt:論理ボリュームのサイズを変更できます。 Chapter23.txt:LVMスナップショットを使用できます。 Chapter23.txt:論理ボリューム管理 Chapter23.txt:論理ボリューム管理(LVM) Chapter23.txt:LVM(Logical Volume Management)は、1つの仮想パーティションを複数のチャンクに分割します。各チャンクは、異なるパーティションやディスクに配置できます。 Chapter23.txt:LVMを使用すると多くの利点があります。特に、論理パーティションとファイルシステムのサイズを変更したり、ストレージの領域を追加したり、データを再配置したりすることが簡単にできます。 Chapter23.txt:1つ以上の物理ボリューム(ディスク パーティション)を、ボリューム グループにグループ化します。次に、ボリューム グループを論理ボリュームに分割します。論理ボリュームはシステムの物理ディスク パーティションを模倣したものであり、通常のパーティションとしてファイルシステムをマウントできるようにフォーマットできます。 Chapter23.txt:物理ボリュームと論理ボリュームの作成、削除、サイズ変更などを行う、さまざまなコマンド ライン ユーティリティがあります。グラフィカル ツールの場合、一部のLinuxディストリビューションではsystem-config-lvmを使用します。ただし、RHELはもはやこのツールをサポートしておらず、現在、ファイルシステムの種類などの最新のバリエーションで確実に動作するグラフィカル ツールはありません。ただ幸いなことに、コマンド ライン ユーティリティは使いにくいものではなく、とにかく柔軟性があります。 Chapter23.txt:LVMはパフォーマンスに影響します。LVMレイヤーのオーバーヘッドから生じる、明らかな追加コストがあります。ただし、非RAIDシステムであっても、ストライピング(複数のディスクへのデータの分割)を使用すれば、ある程度の並列化の向上を実現できます。 Chapter23.txt:RAID(次の章で説明します)と同様に、論理ボリュームは、複数の物理ディスクにまたがることができるファイルシステムを作成するためのメカニズムです。 Chapter23.txt:論理ボリュームを作成するには、すべてのデバイスを大きなディスク領域のプール(ボリューム グループ)に入れ、そのプールから領域を割り当てて論理ボリュームを作成します。 Chapter23.txt:論理ボリュームには、RAIDデバイスに似た機能があります。実際には、RAIDデバイスの上に構築できます。これにより、LVMのスケーラビリティを備えたRAIDデバイスの冗長性が、論理ボリュームに与えられます。 Chapter23.txt:LVMはRAIDよりも優れたスケーラビリティを備えています。論理ボリュームは簡単にサイズ変更できます。つまり、必要に応じて拡大または縮小できます。さらに領域が必要な場合は、いつでも論理ボリュームにデバイスを追加できます。 Chapter23.txt:ボリュームとボリューム グループ Chapter23.txt:パーティションは物理ボリュームに変換され、複数の物理ボリュームはボリューム グループにグループ化されます。システム上に複数のボリューム グループが存在する場合があります。 Chapter23.txt:ボリューム グループ内の領域はエクステントに分割されます。これらはデフォルトで4MBのサイズですが、サイズは割り当て時に簡単に変更できます。 Chapter23.txt:論理ボリュームは、ボリューム グループから割り当てられます。 Chapter23.txt:論理ボリュームは、エクステントのサイズまたは数によって定義できます Chapter23.txt:ファイルシステムは論理ボリューム上に構築されます Chapter23.txt:任意の名前を付けることができます。 Chapter23.txt:LVMのコンポーネント Chapter23.txt:ボリューム グループの生成と操作には、常にvgで始まるコマンド ライン ユーティリティがあります。 Chapter23.txt:vgcreate:ボリューム グループを生成します。 Chapter23.txt:vgextend:ボリューム グループに物理ボリュームを追加します。 Chapter23.txt:vgreduce:ボリューム グループを縮小します。 Chapter23.txt:ボリューム グループに出入りする物理パーティションを操作するユーティリティはpvで始まり、次のものがあります。 Chapter23.txt:pvcreate:指定パーティションを物理ボリュームとして管理できるようにします。 Chapter23.txt:pvdisplay:使用されている物理ボリュームの詳細な情報を表示します。 Chapter23.txt:pvmove:ボリューム グループ内の1つの物理ボリュームから他の物理ボリュームにデータを移動します。これは、何らかの理由でディスクまたはパーティションが削除される場合に必要になることがあります。さらに以下もあります。 Chapter23.txt:pvremove:指定したパーティションにある物理ボリュームを削除します。 Chapter23.txt:man lvmと入力すると、LVMユーティリティの説明が表示されます。 Chapter23.txt:論理ボリューム ユーティリティ Chapter23.txt:論理ボリュームの操作には多くのユーティリティがあります。当然のことながら、それらはすべてlvで始まります。最も一般的に使用されるものについて説明しますが、スクリーンショットのように、次のコマンドを使用して、短いコマンド リストを知ることもできます。 Chapter23.txt:$ ls -lF /sbin/lv* Chapter23.txt:論理ボリューム ユーティリティ Chapter23.txt:これらのユーティリティは、/usr/sbinではなく/sbinにあります。これらユーティリティがブートまたは修復とリカバリのいずれかに必要な場合があるためです。 Chapter23.txt:そのほとんどは、すべての作業を行うSwiss army knifeプログラムであるlvmにシンボリックリンクされており、呼び出される名前で何が求められているのかを把握できます。これは、ほとんどのpv*とvg*ユーティリティにも当てはまり、簡単に確認できます。 Chapter23.txt:論理ボリュームの作成 Chapter23.txt:lvcreateは、ボリューム グループから論理ボリュームを割り当てます。サイズは、バイト単位またはエクステント数で指定できます(デフォルトは4MBです)。名前は任意のものを使用できます。 Chapter23.txt:lvdisplayは、使用可能な論理ボリュームに関する情報を表示します。 Chapter23.txt:ファイルシステムは論理ボリュームに割り当てられ、他と同じようにmkfsでフォーマットされます。 Chapter23.txt:新しいボリューム グループの生成から始める、新しい論理ボリュームの設定と使用に必要な手順は次のとおりです。 Chapter23.txt:ディスク ドライブにパーティションを作成します(fdiskにおいてシステム の種類は8e)。 Chapter23.txt:パーティションから物理ボリュームを作成します。 Chapter23.txt:ボリューム グループを作成します。 Chapter23.txt:ボリューム グループから論理ボリュームを割り当てます。 Chapter23.txt:論理ボリュームをフォーマットします。 Chapter23.txt:論理ボリュームをマウントします(必要に応じて/etc/fstabも更新します)。 Chapter23.txt:たとえば、パーティションの種類が8eの/dev/sdb1と/dev/sdc1を作成する場合: Chapter23.txt:$ sudo pvcreate /dev/sdb1 Chapter23.txt:$ sudo pvcreate /dev/sdc1 Chapter23.txt:$ sudo vgcreate -s 16M vg /dev/sdb1 Chapter23.txt:$ sudo vgextend vg /dev/sdc1 Chapter23.txt:$ sudo lvcreate -L 50G -n mylvm vg Chapter23.txt:$ sudo mkfs -t ext4 /dev/vg/mylvm Chapter23.txt:$ sudo mkdir /mylvm Chapter23.txt:$ sudo mount /dev/vg/mylvm /mylvm Chapter23.txt:以下の行を /etc/fstab追加してください Chapter23.txt:/dev/vg/mylvm /mylvm ext4 defaults 1 2 Chapter23.txt:これによって永続的なマウントにすることができます。 Chapter23.txt:論理ボリュームの表示 Chapter23.txt:LVMに関する情報を表示するために、いくつかのコマンド ライン プログラムが利用できます。 Chapter23.txt:pvdisplayは物理ボリュームの情報を表示します。物理ボリューム名を省略すると、すべての物理ボリュームがリストされます。 Chapter23.txt:$ pvdisplay Chapter23.txt:$ pvdisplay /dev/sda5 Chapter23.txt:vgdisplayはボリューム グループを表示します。ボリューム グループ名を省略すると、すべてのボリューム グループが一覧表示されます。 Chapter23.txt:$ vgdisplay Chapter23.txt:$ vgdisplay /dev/vg0 Chapter23.txt:lvdisplayは論理ボリュームの情報を表示します。論理ボリューム名を省略すると、すべての論理ボリュームがリストされます。 Chapter23.txt:$ lvdisplay Chapter23.txt:$ lvdisplay /dev/vg0/lvm1 Chapter23.txt:引数がない場合、これらのユーティリティはすべての物理ボリューム、ボリューム グループ、または論理ボリュームを表示します。 Chapter23.txt:論理ボリュームのサイズ変更 Chapter23.txt:LVMを使用する大きな利点の1つは、物理パーティションに作成したファイルシステムで実行する場合と比較して、論理ボリュームのサイズを簡単かつ迅速に変更できることです。このサイズ変更を行うと、エクステントは論理ボリュームに追加または論理ボリュームから削除されます。このエクステントはボリューム グループ内のどこからでも取得できます。ディスクの物理的に連続したセクションのものである必要はありません。 Chapter23.txt:ボリュームにファイルシステムが含まれている場合、ボリュームの拡大または縮小は、ボリュームのサイズ変更とはまったく異なる操作になります。ファイルシステムで使用している論理ボリュームを拡張する場合は、最初にボリュームを拡張してから、ファイルシステムを拡張する必要があります。ファイルシステムを使用している論理ボリュームを圧縮する場合は、まずファイルシステムを圧縮してから、ボリュームを圧縮する必要があります。 Chapter23.txt:これは、次のようにlvresizeで行うのが最良です。 Chapter23.txt:$ sudo lvresize -r -L 20 GB /dev/VG/mylvm Chapter23.txt:-rオプションは、ボリューム サイズが変更されると同時にファイルシステムのサイズを変更します。 Chapter23.txt:次のようにボリューム グループを減らすこともできます。 Chapter23.txt:$ sudo pvmove /dev/sdc1 Chapter23.txt:$ sudo vgreduce vg /dev/sdc1 Chapter23.txt:縮小中はファイルシステムをマウントできません。ただし、一部のファイルシステムでは、マウント中に拡張がでできます。 Chapter23.txt:ファイルシステムのサイズを変更するユーティリティは、ファイルシステムに依存しています。 lvresizeの他に、lvextend、lvreduce、resize2fsを使用することもできます。 Chapter23.txt:LVMスナップショット Chapter23.txt:LVMスナップショットは、既存の論理ボリュームの正確なコピーを作成します。バックアップ、アプリケーションのテスト、VM(仮想マシン)の展開に役立ちます。スナップショットの元の状態はブロック マップとして保持されます。 Chapter23.txt:スナップショットは、差分を保存するための領域のみを使用します。 Chapter23.txt:元の論理ボリュームが変更されると、データが変更される前のデータ ブロックがスナップショットにコピーされます。 Chapter23.txt:スナップショットにデータが追加される場合は、これから変更される部分のみが保存されます。 Chapter23.txt:既存の論理ボリュームのスナップショットを作成する場合: Chapter23.txt:$ sudo lvcreate -l 128 -s -n mysnap /dev/vg/mylvm Chapter23.txt:そして、マウント ポイントを作成してスナップショットをマウントする場合: Chapter23.txt:$ mkdir /mysnap Chapter23.txt:$ mount -o ro /dev/vg/mysnap /mysnap Chapter23.txt:スナップショットの使用とスナップショットの削除を行う場合: Chapter23.txt:$ sudo umount /mysnap Chapter23.txt:$ sudo lvremove /dev/vg/mysnap Chapter23.txt:スナップショットを使い終わったら、必ずスナップショットを削除してください。スナップショットを削除せず、変更の情報でいっぱいになってしまうと、スナップショット自体が自動的に無効になります。オリジナルのサイズのスナップショットは、オーバーフローすることはありません。 Chapter23.txt:デモ:論理ボリューム マネージャ Chapter23.txt:このビデオでは、LVMの設定を確認する方法、新しい論理ボリュームを作成する方法、そしてそこにファイルシステムを配置する方法を示します。 Chapter23.txt:演習 Chapter23.txt:課題 23.1: 論理ボリューム Chapter23.txt:🚩 Chapter23.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter23.txt:【【これ以降は橋本さんの訳を参照】】 Chapter23.txt:We are going to create a logical volume using two 250 MB partitions. We are going to assume you have real partitionable diskspace available. Chapter23.txt:1. Create two 250 MB partitions of type logical volume (8e). Chapter23.txt:2. Convert the partitions to physical volumes. Chapter23.txt:3. Create a volume group namedmyvgand add the two physical volumes to it. Use the default extent size. Chapter23.txt:4. Allocate a 300 MB logical volume namedmylvmfrom volume groupmyvg. Chapter23.txt:5. Format and mount the logical volumemylvmat/mylvm Chapter23.txt:6. Uselvdisplayto view information about the logical volume. Chapter23.txt:7. Grow the logical volume and corresponding filesystem to 350 MB. Chapter23.txt:Solution 23.1 Chapter23.txt:1. Execute: Chapter23.txt:$ sudo fdisk /dev/sda Chapter23.txt:using whatever hard disk is appropriate, and create the two partitions. While in fdisk, typingtwill let you set the partition type to 8e. While it doesn’t matter if you don’t set the type, it is a good idea to lessen confusion. Usewto rewrite the partition table and exit, and then Chapter23.txt:$ sudo partprobe -s Chapter23.txt:or reboot to make sure the new partitions take effect. Chapter23.txt:2. Assuming the new partitions are /dev/sdaX and /dev/sdaY: Chapter23.txt:$ sudo pvcreate /dev/sdaX Chapter23.txt:$ sudo pvcreate /dev/sdaY Chapter23.txt:$ sudo pvdisplay Chapter23.txt:3.$ sudo vgcreate myvg /dev/sdaX /dev/sdaY Chapter23.txt:$ sudo vgdisplay Chapter23.txt:4.$ sudo lvcreate -L 300M -n mylvm myvg Chapter23.txt:$ sudo lvdisplay Chapter23.txt:5.$ sudo mkfs.ext4 /dev/myvg/mylvm Chapter23.txt:$ sudo mkdir /mylvm Chapter23.txt:$ sudo mount /dev/myvg/mylvm /mylvm Chapter23.txt:If you want the mount to be persistent, edit /etc/fstab to include the line: Chapter23.txt:in /etc/fstab Chapter23.txt:/dev/myvg/mylvm /mylvm ext4 defaults0 0 Chapter23.txt:6.$ sudo lvdisplay Chapter23.txt:7.$ df -h Chapter23.txt:$ sudo lvresize -r -L 350M /dev/myvg/mylvm Chapter23.txt:$ df -h Chapter23.txt:または Chapter23.txt:$ sudo lvresize -r -L +50M /dev/myvg/mylvm Chapter23.txt:or with older methods you can do: Chapter23.txt:$ df -h$ sudo lvextend -L 350M /dev/myvg/mylvm Chapter23.txt:$ sudo resize2fs /dev/myvg/mylvm Chapter23.txt:$ df -h Chapter23.txt:知識チェック Chapter23.txt:「第23章 - 論理ボリューム管理(LVM)」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter23.txt:クイズ開始 Chapter23.txt:問題 23.1 Chapter23.txt:以下のリストから正しい文章を選択してください。 Chapter23.txt:A. PVはVGにグループ化されます。VGはLVに分割されます Chapter23.txt:B. VGはPVにグループ化されます。PVはLVに分割されます Chapter23.txt:C. LVはVGにグループ化されます。VGはPVに分割されます Chapter23.txt:問題 23.2 Chapter23.txt:LVMを使用して新しいディスクを使用可能にする手順として、最適な順序は何ですか? Chapter23.txt:i. 物理ボリュームを作成します Chapter23.txt:ii. 論理ボリュームを割り当てます Chapter23.txt:iii. 論理ボリュームをマウントします Chapter23.txt:iv. ボリューム グループを作成します Chapter23.txt:v。論理ボリュームをフォーマットします Chapter23.txt:vi. ディスクをパーティション分割します Chapter23.txt:A. vi, iv, i, v, ii, iii Chapter23.txt:B. i, vi, iv, ii, v, iii Chapter23.txt:C. i, iv, vi, ii, v, iii Chapter23.txt:D. vi, i, iv, ii, v, iii Chapter24.txt:RAID Chapter24.txt:はじめに Chapter24.txt:第24章はじめに Chapter24.txt:RAIDを使用すると、I/Oアクティビティが1つではなく複数の物理ディスクに分散されます。その目的は、障害が発生した場合のデータの整合性と修復の強化、最新のストレージ デバイスで使用した場合のパフォーマンスの向上です。安全性、パフォーマンス、複雑さ、およびコストによって、相対的に強さが異なるさまざまなRAIDレベルがあります。 Chapter24.txt:学習目標 Chapter24.txt:この章の終わりまでに、次のことができるようになります。 Chapter24.txt:RAIDの概念を説明できます。 Chapter24.txt:RAIDの各レベルを要約できます。 Chapter24.txt:提供されている基本的な手順を使用して、RAIDデバイスを構成できます。 Chapter24.txt:RAIDデバイスを複数の方法で監視できます。 Chapter24.txt:ホットスペアを使用できます。 Chapter24.txt:RAID Chapter24.txt:RAID Chapter24.txt:RAID(Redundant Array of Independent Disks)は、複数のディスクにI/Oを分散します。作業を並行して効率的に実行することで、SCSIなどの最新のディスク コントローラ インターフェイスのパフォーマンスが間違いなく向上します。 Chapter24.txt:RAIDは、ソフトウェア(Linuxカーネルの安定した部分)またはハードウェアのいずれかに実装できます。もし使用するハードウェアRAIDが高品質であることがわかっている場合には、それを使う方がソフトウェアRAIDを使用するよりも効率的です。ハードウェアの実装では、オペレーティング システムは、実際にはRAIDの使用を直接には認識しません。それは透過的です。たとえば、RAID-5で構成された3台の512GBハード ドライブ(データ用に2つ、パリティ用に1つ)は、単一の1TBディスクのように見えます。 Chapter24.txt:ただし、ハードウェアRAIDを使用する場合には欠点もあり、その1つは、ディスク コントローラに障害が発生した場合、互換性のあるコントローラに交換する必要があることです。ソフトウェアRAIDを使用する場合、同じディスクを任意のディスク コントローラに接続して使用できます。このような留意事項は、中小規模のハードウェアに関連したものに多いです。 Chapter24.txt:RAIDの3つの重要な機能は次のとおりです。 Chapter24.txt:ミラーリング:同じデータを複数のディスクに書き込みます。 Chapter24.txt:ストライピング:データを複数のディスクに分割します。 Chapter24.txt:パリティ:問題の検出と修復を可能にするための特別なデータが保存され、フォールト トレランス(耐障害性)が得られます。 Chapter24.txt:したがって、RAIDを使用すると、パフォーマンスと信頼性の両方を向上させることができます。 Chapter24.txt:RAIDデバイスの主目的の1つは、複数のディスクにまたがるファイルシステムを作成することです。これにより、どの1つのドライブよりも大きいファイルシステムを作成できます。RAIDデバイスは通常、複数のディスクのパーティションを組み合わせて作成されます。 Chapter24.txt:RAIDデバイスのもう1つの利点は、パフォーマンスか冗長性、またはその両方を改善できることです。ストライピングは、情報を複数のデバイスに分散することでパフォーマンスを向上させ、同時書き込みが可能になります。ミラーリングは同じ情報を複数のドライブに書き込み、冗長性を向上させます。 Chapter24.txt:mdadmは、RAIDデバイスの作成と管理に使用されます。 Chapter24.txt:生成されたアレイ/dev/mdXは、/dev/sda1などの他のデバイスと同じように使用できます。 Chapter24.txt:RAIDレベル Chapter24.txt:RAIDには、その複雑さと用途に応じて、様々なレベルが存在します。最も一般的に使用されるのは、レベル0、1、5です。 Chapter24.txt:クリックして各ボックスを展開し、RAIDレベルについて学習します。 Chapter24.txt:RAIDレベル Chapter24.txt:RAID 0 Chapter24.txt:RAID 0はストライピングのみを使用します。データは複数のディスクに分散されます。ただし、RAIDと言う名称にもかかわらず冗長性はなく、安定性や修復機能はありません。実際、ディスクに障害が発生すると、データが失われます。ただし、I/Oタスクの並列化により、パフォーマンスを大幅に向上させることができます。 Chapter24.txt:RAID 1 Chapter24.txt:RAID 1はミラーリングのみを使用します。各ディスクには重複があります。これは障害からの修復に適しています。少なくとも2台のディスクが必要です。 Chapter24.txt:RAID 5 Chapter24.txt:RAID 5は、3台以上の物理ドライブが必要です。それぞれのディスクに分散してパリティ ブロックの記録を行います。単一のドライブに障害が発生しても、データは失われず、パフォーマンスが低下するだけです。 Chapter24.txt:RAID 6 Chapter24.txt:RAID 6には、デュアル パリティ付きのストライプ ディスクがあります。2台のディスクの損失を処理できますが、少なくとも4台のディスクが必要です。RAID 5はディスクに大きなストレスを与え、修復の手順中に障害を引き起こす可能性があるため、RAID 6の重要性が増えています。 Chapter24.txt:RAID 10 Chapter24.txt:RAID 10は、ミラーリングとストライピングが組み合わされたデータ セットです。少なくとも4台のドライブが必要です。 Chapter24.txt:通例として、ディスクを追加するとパフォーマンスが向上します。 Chapter24.txt:ソフトウェアRAID構成 Chapter24.txt:ソフトウェアRAIDデバイスを構成するための重要な手順は次のとおりです。 Chapter24.txt:各ディスクにパーティションを作成します(fdiskのパーティションの種類はfd) Chapter24.txt:mdadmでRAIDデバイスを作成します Chapter24.txt:RAIDデバイスのフォーマットを行います Chapter24.txt:デバイスを/etc/fstabに追加します Chapter24.txt:RAIDデバイスをマウントします Chapter24.txt:RAIDの詳細をキャプチャして/etc/fstab/に設定し、恒久性を実現します。 Chapter24.txt:たとえば、ディスクsdbとsdc(たとえば/dev/sdbXと/dev/sdcX)に対してfdiskを実行し、パーティションの種類がfdのものを2つ作成します。 Chapter24.txt:$ sudo fdisk /dev/sdb Chapter24.txt:$ sudo fdisk /dev/sdc Chapter24.txt:次に、アレイを作成し、フォーマットし、その設定を構成ファイルに追加してマウントします。 Chapter24.txt:$ sudo mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sdbX /dev/sdcX Chapter24.txt:$ sudo mkfs.ext4 /dev/md0 Chapter24.txt:$ sudo bash -c "mdadm --detail --scan >> /etc/mdadm.conf" Chapter24.txt:$ sudo mkdir /myraid Chapter24.txt:$ sudo mount /dev/md0 /myraid Chapter24.txt:マウント ポイントの行を/etc/fstabに追加します。 Chapter24.txt:/dev/md0 /myraid ext4 defaults 0 2 Chapter24.txt:/proc/mdstatを調べて、次のようにRAIDの状態を確認できます。 Chapter24.txt:$ cat /proc/mdstat Chapter24.txt:Personalities : [raid1] Chapter24.txt:md0 : active raid1 sdb8[1] sdc7[0] Chapter24.txt:---------- 521984 blocks [2/2] Chapter24.txt:unused devices: Chapter24.txt:RAIDデバイスを停止するには次を使用します。 Chapter24.txt:$ sudo mdadm -S /dev/md0 Chapter24.txt: Chapter24.txt:RAIDの監視 Chapter24.txt:次のように、RAIDデバイスを複数の方法で監視できます。 Chapter24.txt:$ sudo mdadm --detail /dev/md0 Chapter24.txt:$ cat /proc/mdstat Chapter24.txt:mdmonitorを使用することもできます。これには/etc/mdadm.confの設定が必要です。以下のコマンドを実行します。 Chapter24.txt:$ sudo mdadm --detail /dev/mdX Chapter24.txt:これは、RAIDデバイス/dev/mdXの現在の状態を表示します。別の方法として、/procファイルシステムを調べることでも現在の状態情報を得られます。 Chapter24.txt:$ cat /proc/mdstat Chapter24.txt:システム上のすべてのRAIDデバイスの状態が表示されます。 Chapter24.txt:/etc/mdadm.confに次のような行を追加して、mdmonitorサービスを使用することもできます。 Chapter24.txt:MAILADDR eddie@haskell.com Chapter24.txt:アレイのいずれかが起動に失敗したり劣化状態に陥いるなど、RAIDデバイスで問題が発生した場合には、eddie@haskell.com に電子メールで通知が送信されます。mdmonitorを開始する場合: Chapter24.txt:$ sudo systemctl start mdmonitor Chapter24.txt:起動時にmdmonitorの開始を有効にする場合: Chapter24.txt:$ sudo systemctl enable mdmonitor Chapter24.txt:💡 Chapter24.txt:Ubuntuシステムでは、サービスはmdmonitorではなくmdadmです。 Chapter24.txt:RAIDホットスペア Chapter24.txt:RAIDが提供する重要な機能の1つは、冗長性です。冗長性を阻害する障害を可能な限り迅速に修復するために、ホットスペアを使用できます。 Chapter24.txt:RAIDアレイの作成時にホットスペアを作成する場合: Chapter24.txt:$ sudo mdadm --create /dev/md0 -l 5 -n3 -x 1 /dev/sda8 /dev/sda9 /dev/sda10 /dev/sda11 Chapter24.txt:-x 1オプションは、1台のスペア デバイスを使用するように指定します。ホットスペアは後で追加することもできます。 Chapter24.txt:以下のコマンドを実行します。 Chapter24.txt:$ sudo mdadm --fail /dev/md0 /dev/sdb2 Chapter24.txt:これは、指定されたデバイスに対して故障であることを示すマークを付けます。 Chapter24.txt:故障したドライブの修復、もしくは障害状態において新しいドライブを使う修復は、最初に「障害のある」メンバを削除してから、次のように「新しい」メンバを追加します。 Chapter24.txt:$ sudo mdadm --remove /dev/md0 /dev/sdb2 Chapter24.txt:$ sudo mdadm --add /dev/md0 /dev/sde2 Chapter24.txt:演習 Chapter24.txt:課題 24.1: RAID デバイスの作成 Chapter24.txt:🚩 Chapter24.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter24.txt:【【これ以降は橋本さんの訳を参照】】 Chapter24.txt:Normally when creating a RAID device we would use partitions on separate disks. However, for this exercise we probablydon’t have such hardware available. Thus we will need to have two partitions on the same disk. Chapter24.txt:The process will be the same whether the partitions are on one drive or several (Although there is obviously little reason to actually create a RAID on a single device). Chapter24.txt:1. Create two 200 MB partitions of type raid (fd) either on your hard disk using fdisk, or using LVM. Chapter24.txt:2. Create a RAID 1 device named /dev/md0 using the two partitions. Chapter24.txt:3. Format the RAID device as an ext4 filesystem. Then mount it at /myraid and make the mount persistent. Chapter24.txt:4. Place the information about /dev/md0 in /etc/mdadm.conf, using mdadm. (Depending on your distribution, this file may not previously exist.) Chapter24.txt:5. Examine /proc/mdstat to see the status of your RAID device. Chapter24.txt:Solution 24.1 Chapter24.txt:1. If you need to create new partitions do: Chapter24.txt:$ sudo fdisk /dev/sda Chapter24.txt:and create the partitions as we have done before. For purposes of being definite, we will call them /dev/sdaX and /dev/sdaY. You will need to run partprobe or kpartx or reboot after you are done to make sure the system is properly aware of the new partitions. Chapter24.txt:2.$ sudo mdadm -C /dev/md0 --level=1 --raid-disks=2 /dev/sdaX /dev/sdaY Chapter24.txt:3.$ sudo mkfs.ext4 /dev/md0 Chapter24.txt:$ sudo mkdir /myraid Chapter24.txt:$ sudo mount /dev/md0 /myraid Chapter24.txt:and add to /etc/fstab Chapter24.txt:in /etc/fstab Chapter24.txt:/dev/md0 /myraid ext4 defaults0 0 Chapter24.txt:4.$ sudo bash -c "mdadm --detail --scan >> /etc/mdadm.conf" Chapter24.txt:5.$ cat /proc/mdstat Chapter24.txt:Personalities : [raid1] Chapter24.txt:md0 : active raid1 dm-14[1] dm-13[0] Chapter24.txt:204736 blocks [2/2] [UU] Chapter24.txt:unused devices: Chapter24.txt:Please Note Chapter24.txt:You should probably verify that with a reboot, the RAID volume is mounted automatically. When you are done, you probably will want to clean up by removing the line from /etc/fstab, and then getting rid of the partitions. Chapter24.txt:知識チェック Chapter24.txt:「第24章 - RAID」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter24.txt:クイズ開始 Chapter24.txt:問題 24.1 Chapter24.txt:サーバーに2台の新しいディスクを追加しました。次のコマンドを使用して、/devsdb1と/dev/sdc1でRAIDデバイスを作成し、ext4ファイルシステムを使用してRAIDデバイスを使用できるようにするためには、どの順番で実行すればよいですか? Chapter24.txt:i. mkfs.ext4 /dev/md0 Chapter24.txt:ii. fdisk /dev/sdb; fdisk /dev/sdc Chapter24.txt:iii. reboot Chapter24.txt:iv. mdadm --create /dev/md0 ... /dev/sdb1 /dev/sdc1 Chapter24.txt:v. mdadm --detail --scan >> /etc/mdadm.conf Chapter24.txt:A. ii, iv, i, v, iii Chapter24.txt:B. ii, v, i, iv, iii Chapter24.txt:C. ii, iii, iv, i, v Chapter24.txt:問題 24.2 Chapter24.txt:冗長性を提供しない唯一のRAIDレベルはどれですか? Chapter24.txt:A. RAID 10 Chapter24.txt:B. RAID 1 Chapter24.txt:C. RAID 6 Chapter24.txt:D. RAID 0 Chapter24.txt:E. RAID 5 Chapter25.txt:カーネル サービスと構成 Chapter25.txt:はじめに Chapter25.txt:第25章はじめに Chapter25.txt:このビデオでは、この章で説明するトピックの概要を簡単に説明します。 Chapter25.txt:学習目標 Chapter25.txt:この章の終わりまでに、次のことができるようになります。 Chapter25.txt:カーネルが果たさなければならない主な責任と、それをどのように達成するかを把握できます。 Chapter25.txt:カーネル コマンド ラインで設定できるパラメータと、それを1回のシステム ブートで、または恒久的に、有効にする方法を説明できます。 Chapter25.txt:これらのパラメータに関する詳細なドキュメントの場所を知ることができます。 Chapter25.txt:sysctlを使用して、システムの起動後、または再起動後も恒久的に、カーネル パラメータを設定できます。 Chapter25.txt:カーネル サービスと構成 Chapter25.txt:カーネルの概要 Chapter25.txt:狭義には、Linuxはオペレーティング システムのカーネルのみを指します。オペレーティング システムにはカーネルとやりとりするライブラリやアプリケーションなど、他の多くのコンポーネントが含まれています。 Chapter25.txt:カーネルは、ハードウェアをソフトウェアに接続し、競合するアプリケーションやサービス間のメモリやCPU時間の割り当てなどのシステム リソースを管理する、重要な中枢コンポーネントです。接続されたすべてのデバイスをデバイス ドライバを使って処理し、デバイスをオペレーティング システムで使用できるようにします。 Chapter25.txt:カーネルのみを実行するシステムでは、機能がかなり制限されています。このようなケースは専用の組み込みデバイスでのみ見受けられます。 Chapter25.txt:カーネルの主な責任は次のとおりです。 Chapter25.txt:システムの初期化と起動 Chapter25.txt:プロセス スケジューリング Chapter25.txt:メモリ管理 Chapter25.txt:ハードウェアへのアクセス制御 Chapter25.txt:アプリケーションとストレージ デバイス間のI/O(入力/出力) Chapter25.txt:ローカルおよびネットワークのファイルシステムの実装 Chapter25.txt:(ファイルシステムのパーミッションなどの)ローカルとネットワーク経由の両方のセキュリティ制御 Chapter25.txt:ネットワーク制御 Chapter25.txt:カーネル コマンド ライン Chapter25.txt:カーネル コマンド ラインでのブート時には、さまざまなパラメータがシステムに渡されます。通常、これらはGRUB構成ファイルのlinuxまたはlinux16の行にありますが、ブート時に変更できます。 Chapter25.txt:サンプルのカーネル コマンド ラインはディストリビューションに依存しています。例えば次のようになっています。 Chapter25.txt:linux boot/vmlinuz-4.19.0 root=UUID=7ef4e747-afae-90b4-9be8be8d0258 ro quiet crashkernel=384M-:128M Chapter25.txt:または、 Chapter25.txt:linuxfi /boot/vmlinuz-5.2.9 root=UUID=77461ee7-c34a-4c5f-b0bc-29f4feecc743 ro crashkernel=auto rhgb quiet Chapter25.txt:そして、この行は、/boot/grubなどのboot下のサブディレクトリのgrub.cfg、または/boot/efi/EFI/centos/grub.cfgなどのファイルの中にあります。 Chapter25.txt:vmlinuzファイル以降で指定されているものはすべてオプションです。カーネルが理解できないオプションはすべて、システムで最初に実行されるユーザー プロセスのinit(pid=1)に渡されます。 Chapter25.txt:変更などの編集は、このファイルを直接編集するのではなく、/etcの下の関連ファイルで行ってください。 Chapter25.txt:システムの起動に使用したコマンド ラインを確認するには、次のように入力します。 Chapter25.txt:$ cat /proc/cmdline Chapter25.txt:BOOT_IMAGE=/boot/vmlinuz-5.2.9 root=UUID=77461ee7-c34a-4c5f-b0bc029f4feecc743 ro crashkernel=auto rhgb quiet Chapter25.txt:カーネル ブート パラメータ Chapter25.txt:利用可能なカーネル パラメータは、驚くほど多いです。詳細なドキュメントは以下で見つけることができます。 Chapter25.txt:カーネル ソース内のファイルkernel-parameters.txt Chapter25.txt:オンライン「using the kernel's command line parameters documentation」 Chapter25.txt:ほとんどのディストリビューションで提供されている、システム上のkernel-docやlinux-docなどの名前を持つカーネル ドキュメント パッケージ Chapter25.txt:man bootparamと入力することで見ることができる内容 Chapter25.txt:パラメータは、引数の値として、またはparam=valueの形式で指定できます。指定できる値は、ドキュメント ファイルで説明されているように、文字列、整数、整数の配列などです。 Chapter25.txt:vmlinuz root=/dev/sda6 ..... noapic .... crashkernel=256M Chapter25.txt:カーネル オプションは、カーネルを指定する行の最後に書き、スペースで区切ります。カーネル ブート パラメータの例(すべて1行で書きます)は次のとおりです。 Chapter25.txt:linux16 /boot/vmlinuz-3.19.1.0 root=UUID=178d0092-4154-4688-af24-cda272265e08 ro vconsole.keymap=us crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet LANG=en_US.UTF-8 Chapter25.txt:以下に、以前に表示したいくつかのブート パラメータの説明を示します。 Chapter25.txt:root:ルート ファイルシステムを指定します。 Chapter25.txt:ro:ブート時に読み取り専用でルート デバイスをマウントします。 Chapter25.txt:vconsole.keymap:コンソールで使用するキーボードを指定します。 Chapter25.txt:crashkernel:カーネル クラッシュダンプ用に確保するメモリ量を指定します。 Chapter25.txt:vconsole.font:コンソールで使用するフォントを指定します。 Chapter25.txt:rhgb:ブート時にグラフィカル表示をするように指定します。 Chapter25.txt:quiet:ほとんどのログ メッセージを無効にします。 Chapter25.txt:LANG:これはシステム言語を指定します。 Chapter25.txt:慣例的に、意図的に隠されたり秘密にされたパラメータはありません。それらはすべてドキュメントで説明する必要があり、新しいパラメータを使用するカーネル ソースへのパッチには、常にドキュメント ファイルへの説明パッチを含める必要があります。 Chapter25.txt:sysctl Chapter25.txt:sysctlインターフェイスは、実行時にカーネル パラメータを読み取って調整するために使用できます。スクリーンショットは、以下を実行することで現在の値を表示したものです。 Chapter25.txt:$ sysctl -a Chapter25.txt:sysctlの使用例 Chapter25.txt:各値は、/proc/sysにある特定の疑似ファイルに対応しており、ディレクトリのスラッシュ(/)をドット(.)に置き換えたものです。たとえば、次の2つのコマンド文は同じことをします。 Chapter25.txt:$ sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward' Chapter25.txt:$ sudo sysctl net.ipv4.ip_forward=1 Chapter25.txt:ここで、2番目のコマンド文は、sysctlコマンド ライン インターフェイスで値を設定するものです。このコマンドの=記号の前後にスペースを入れないでください。最初のコマンド文では、echo付きの単純な sudo を使用できないことに注意してください。コマンドは、ここに示した複雑な方法で実行するか、rootとして実行する必要があります。 Chapter25.txt:/proc/sysの下の疑似ファイルを参照すると、sysctl -aと同じ情報が表示されます。man 8 sysctlを実行すれば、sysctlの使用方法に関する詳細情報を取得できます。プログラムから sysctl()関数を使用して情報を取得するには、man 2 sysctlで説明されている方法を実行します。 Chapter25.txt:/etc/sysctl.confで設定されている(詳細は man sysctl.conf 参照)場合、設定内容はブート時に修正できます。 Chapter25.txt:以下のように入力すれば、 Chapter25.txt:$ sudo sysctl -p Chapter25.txt:ファイルを即座に読み込み、すべてのパラメータを指定されたとおりに設定します。これもブート プロセスの一部です。 Chapter25.txt:systemdの登場により、状況はもう少し複雑になりました。ベンダーは、/usr/lib/sysctl.d/ディレクトリ内に設定ファイルを置きます。これらのファイルは、/etc/sysctl.dにあるファイルに追加、または置換できます。ただし、元のファイル(/etc/sysctl.conf)は、そのファイルに自己文書化されている(初めて触る人でもファイル自身が良く書かれているので読むだけで内容がわかる)ので、引き続きサポートされます。 Chapter25.txt:デモ:sysctlの使用 Chapter25.txt:このビデオは、sysctlユーティリティの簡単なデモを提供します。 Chapter25.txt:演習 Chapter25.txt:課題 25.1. sysctlで調整可能なシステムの値 Chapter25.txt:🚩 Chapter25.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter25.txt:【【ここから橋本さんの訳を挿入】】 Chapter25.txt:1. Check if you canpingyour own system. Chapter25.txt:2. Check the current value ofnet.ipv4.icmp_echo_ignore_all, which is used to turn on and off whether your system will respond to ping. A value of 0 allows your system to respond to pings. Chapter25.txt:3. Set the value to1using the sysctl command line utility and then check if pings are responded to. Chapter25.txt:4. Set the value back to 0 and show the original behavior in restored. Chapter25.txt:5. Now change the value by modifying /etc/sysctl.confand force the system to activate this setting file without a reboot. Chapter25.txt:6. Check that this worked properly. Chapter25.txt:You will probably want to reset your system to have its original behavior when you are done. Chapter25.txt:Solution 25.1 Chapter25.txt:You can use eitherlocalhost,127.0.0.1(loopback address) or your actual IP address for target of ping below. Chapter25.txt:1.$ ping localhost Chapter25.txt:2.$ sysctl net.ipv4.icmp_echo_ignore_all Chapter25.txt:3.$ sudo sysctl net.ipv4.icmp_echo_ignore_all=1 Chapter25.txt:$ ping localhost Chapter25.txt:4.$ sudo sysctl net.ipv4.icmp_echo_ignore_all=0 Chapter25.txt:$ ping localhost Chapter25.txt:5. Add the following line to /etc/sysctl.conf: Chapter25.txt:in /etc/sysctl.conf Chapter25.txt:net.ipv4.icmp_echo_ignore_all=1 Chapter25.txt:and then do: Chapter25.txt:$ sysctl -p Chapter25.txt:6.$ sysctl net.ipv4.icmp_echo_ignore_all Chapter25.txt:$ ping localhost Chapter25.txt:Since the changes to /etc/sysctl.conf are persistent, you probably want to restore things to its previous state. Chapter25.txt:課題 25.2. プロセスIDの最大値を変更する Chapter25.txt:🚩 Chapter25.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter25.txt:Exercise 25.2: Changing the Maximum Process ID Chapter25.txt:The normal behavior of aLinux system is that process IDs start out at PID=1 for the initprocess, the first user process on the system, and then go up sequentially as new processes are constantly created (and die as well.) Chapter25.txt:However, when the PID reaches the value shown in /proc/sys/kernel/pid_max, which is conventionally 32768 (32K), they will wrap around to lower numbers. If nothing else, this means you can’t have more than 32K processes on the system since there are only that many slots for PIDs. Chapter25.txt:1. Obtain the current maximum PID value. Chapter25.txt:2. Find out what current PIDs are being issued Chapter25.txt:3. Reset pid_maxto a lower value than the ones currently being issued. Chapter25.txt:4. Start a new process and see what it gets as a PID. Chapter25.txt:Solution 25.2 Chapter25.txt:Very Important Chapter25.txt:In the below we are going to use two methods, one involving sysctl, the other directly echoing values to /proc/sys/kernel/pid_max. Note that the echo method requires you to be root;sudo won’t work. We’ll leave it to you to figure out why, if you don’t already know! Chapter25.txt:1.$ sysctl kernel.pid_max Chapter25.txt:$ cat /proc/sys/kernel/pid_max Chapter25.txt:2. Type: Chapter25.txt:$ cat & Chapter25.txt:[1] 29222 Chapter25.txt:$ kill -9 29222 Chapter25.txt:3.$ sudo sysctl kernel.pid_max=24000 Chapter25.txt:$ echo 24000 > /proc/sys/kernel/pid_max # This must be done as root Chapter25.txt:$ cat /proc/sys/kernel/pid_max Chapter25.txt:4.$ cat & Chapter25.txt:[2] 311 Chapter25.txt:$ kill -9 311 Chapter25.txt:Please Note Chapter25.txt:Note that when starting over, the kernel begins at PID=300, not a lower value. You might notice that assigning PIDs tonew processes is actually not trivial; since the system may have already turned over, the kernel always has to check when generating new PIDs that the PID is not already in use. The Linux kernel has a very efficient way of doing this that does not depend on the number of processes on the system. Chapter25.txt:知識チェック Chapter25.txt:「第25章 - カーネル サービスと構成」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter25.txt:クイズ開始 Chapter25.txt:問題 25.1 Chapter25.txt:この章では、カーネル構成をチューニングする2つの方法について説明しました。カーネル コマンド ラインでは起動オプションを指定できますが、sysctlを使用するとランタイム時にオプションを指定できます。次のうち、ランタイム時に指定できるオプションを選択してください。 Chapter25.txt:A. IPフォワーディングを有効にする Chapter25.txt:B. ルート デバイスを読み取り専用でマウントする Chapter25.txt:C. 指定した論理ボリュームのルート ファイルシステムをアクティブ化する Chapter25.txt:D. PID番号の最大値 Chapter25.txt:E. DM RAID検出を無効にする Chapter25.txt:F. システム言語を選択する Chapter25.txt:G. シングル ユーザー モードで起動する Chapter26.txt:カーネル モジュール Chapter26.txt:はじめに Chapter26.txt:第26章はじめに Chapter26.txt:Linuxカーネルは、モジュールを広範囲に使用します。このモジュールは、システムの起動後に必要に応じてロードおよびアンロードできる重要なソフトウェアを含んでいます。多くのモジュールには、システム ドライバまたは周辺機器に接続されたハードウェアを制御するデバイス ドライバが組み込まれています。その他のモジュールは、ネットワーク プロトコルを制御し、さまざまな種類のファイルシステムやその他の多くの目的をサポートできます。モジュールをロードするときには、パラメータを指定してその動作を制御できます。最終的な効果は、変化する条件とニーズに対応する際の、優れた柔軟性とアジリティ(俊敏性)です。 Chapter26.txt:学習目標 Chapter26.txt:この章の終わりまでに、次のことができるようになります。 Chapter26.txt:カーネル モジュールを利用する利点をリストできます。 Chapter26.txt:insmod、rmmod、modprobeを使用して、カーネル モジュールをロードおよびアンロードできます。 Chapter26.txt:modinfoを使用して、カーネル モジュールに関する情報を見つけることができます。 Chapter26.txt:カーネル モジュール Chapter26.txt:カーネル モジュール Chapter26.txt:Linuxカーネルの機能の多くは、最初にロードされるときにカーネルに組み込まれるように、または必要に応じてモジュールとして後で追加(または削除)されるように設計されています。実際、主要カーネル コンポーネントの大部分を除いて、このような方法で統合されています。 Chapter26.txt:このようなモジュールは、デバイス ドライバである場合とそうでない場合があります。たとえば、ハードウェアやソフトウェア デバイスを動作させるのではなく、特定のネットワーク プロトコルやファイルシステムを実装する場合があります。変更をテストするためにカーネルを再起動する必要がないため、常に機能を必要とする場合でも、モジュールとしてロードおよびアンロードする形で組み込むと開発が容易になります。 Chapter26.txt:カーネル モジュールが広く使用されている場合でも、Linuxはマイクロカーネル アーキテクチャではなく、モノリシック カーネル アーキテクチャを維持しています。これは、モジュールがロードされると、ほとんど制約なく完全なカーネル機能になるためです。マイクロカーネルのようなメッセージの受け渡しではなく、主にメモリやロックなどの共有リソースを介して、すべてのカーネル サブシステムと通信します。 Chapter26.txt:Linuxは、モジュールを使用する唯一のオペレーティング システムではありません。Solarisも同様であり、こちらはAIXと同じくカーネル拡張と呼んでいます。ただし、Linuxはモジュールを非常に堅牢な方法で使用します。 Chapter26.txt:Ismodで使用中のモジュールの一覧を表示する Chapter26.txt:ほとんどのカーネル機能は、常に使用される可能性がある場合でも、モジュールとして構成できます。この柔軟性は、開発やデバッグ中のテストにシステムの再起動がほとんど必要ないため、新機能の開発にも役立ちます。 Chapter26.txt:他のオペレーティング システムもモジュールのような方法を使用していますが、Linuxは他のオペレーティング システムよりもはるかに多く使用しています。 Chapter26.txt:モジュールがロードされている間は、下のスクリーンショットのように、lsmodでその状態をいつでも確認できます。 Chapter26.txt:lsmodの使用例 Chapter26.txt:モジュールの削除は、次の方法で直接実行できます。 Chapter26.txt:$ sudo /sbin/rmmod module_name Chapter26.txt:モジュールを削除するときに、フルパス名または拡張子.koを指定する必要がないことに留意してください。 Chapter26.txt:モジュールのロードとアンロードを行うことができるのは、rootユーザーだけです。完全なパス名がわかっている場合は、次のコマンドを使用していつでもモジュールを直接ロードできます。 Chapter26.txt:$ sudo /sbin/insmod /module_name.ko Chapter26.txt:カーネル モジュールの通常のファイルシステムの場所は、/lib/modules/のディレクトリ ツリーの下です。カーネル モジュールのファイル拡張子は、e1000e.ko、ext4.ko、usbserial.koのように、常に.koになります。 Chapter26.txt:カーネル モジュールはカーネル バージョン固有であり、実行中のカーネルと一致させる必要があります。一致しない場合、ロードできません。これらのコンパイルは、カーネル自体がコンパイルされるときに、またはその後で、コンパイルを適切に行うのに十分なカーネル ソースとコンパイル構成を保持しているシステムで行う必要があります。 Chapter26.txt:モジュール ユーティリティ Chapter26.txt:カーネル モジュールで使用されるユーティリティ プログラムは多数あります。 Chapter26.txt:lsmod Chapter26.txt:ロードされたモジュールをリストします。 Chapter26.txt:insmod Chapter26.txt:モジュールを直接ロードします。 Chapter26.txt:rmmod Chapter26.txt:モジュールを直接削除します。 Chapter26.txt:modprobe Chapter26.txt:依存関係と場所の情報を持つ、事前に構築されたモジュール データベースを使用して、モジュールをロードまたはアンロードします。 Chapter26.txt:depmod Chapter26.txt:モジュールの依存関係データベースを更新します。modprobeとmodinfoで必要となります。 Chapter26.txt:modinfo Chapter26.txt:モジュールに関する情報を表示します。 Chapter26.txt:modprobeを使用してモジュールをロードする場合: Chapter26.txt:$ modprobe e1000e Chapter26.txt:modprobe -rを使用して、モジュールをアンロードまたは削除する場合: Chapter26.txt:$ modprobe -r e1000e Chapter26.txt:modprobeでは、更新されたモジュールの依存関係のデータベースを要求します。depmodeを使用して、ファイル/lib/modules/$(name -r)/modules.depを生成または更新します。 Chapter26.txt:insmodを使用してモジュールを直接ロードする場合(完全修飾名のモジュール名が必要): Chapter26.txt:$ insmod /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/intel/e1000e.ko Chapter26.txt:rmmodを使用して、モジュールを直接削除する場合: Chapter26.txt:$ rmmod e1000e Chapter26.txt:lsmodを使用して、ロードされたモジュールをリストする場合: Chapter26.txt:$ lsmod Chapter26.txt:modinfoを使用して、モジュールに関する情報(パラメータを含む)を表示する場合: Chapter26.txt:$ modinfo e1000e Chapter26.txt:モジュールに関する留意事項 Chapter26.txt:モジュールをロードおよびアンロードする際に留意すべき重要な点がいくつかあります。 Chapter26.txt:1つ以上の他のモジュールが参照しているモジュールは、アンロードすることはできません。これらのモジュールは、lsmodリストから確認できます。 Chapter26.txt:1つ以上のプロセスで使用されているモジュールは、アンロードすることはできません。これもlsmodリストから確認できます。ただし、ネットワーク デバイス ドライバ モジュールなど、参照カウントを記録しないモジュールがあります。これは、ネットワーク スタック全体の大部分をシャットダウンして再起動することせずに、一時的にモジュールを交換するのは非常に難しいためです。 Chapter26.txt:モジュールがmodprobeでロードされると、システムは最初にロードする必要がある他のモジュールも自動的にロードします。 Chapter26.txt:modprobe -rを使用してモジュールをアンロードする場合、他のモジュールがそれを参照していなければ、システムはそのモジュールが使用している他モジュールも自動的にアンロードします。 Chapter26.txt:modinfoの使用例 Chapter26.txt:次のようにmodinfoを使用すると、カーネル モジュールに関する情報を(現在ロードされているかどうかに関係なく)見つけることができます。 Chapter26.txt:$ /sbin/modinfo my_module Chapter26.txt:$ /sbin/modinfo /my_module.ko Chapter26.txt:このスクリーンショットの例をご覧ください。バージョン、ファイル名、デバイス ドライバ モジュールが処理できるハードウェア デバイス、読み込み時に指定できるパラメータに関する情報が表示されています。 Chapter26.txt:modinfoの使用例 Chapter26.txt:モジュールに関する多くの情報は、/sys疑似ファイルシステムのディレクトリ ツリーでも確認できます。この例では、/sys/module/e1000の下を調べています。そして、すべてではありませんが一部のパラメータは/sys/module/e1000/parametersで読み書きできます。次にそれらを設定する方法を示します。 Chapter26.txt:次のように、パラメータ値を指定しながら多くのモジュールをロードできます。 Chapter26.txt:$ sudo /sbin/insmod /e1000e.ko debug=2 copybreak=256 Chapter26.txt:または、すでにシステムの適切な場所にモジュールがある場合は、次の方法を使用すると簡単です。 Chapter26.txt:$ sudo /sbin/modprobe e1000e debug=2 copybreak=256 Chapter26.txt:/etc/modprobe.d Chapter26.txt:/etc/modprobe.dサブディレクトリ ツリー内の.conf拡張子で終わるすべてのファイルは、modprobeを使用してモジュールをロードおよびアンロードするときに参照します。/etc/modprobe.dディレクトリ内のファイルには、modprobeを使用してロードするときに使うパラメータを設定します。これらのパラメータには、モジュール名のエイリアス(別名)と自動的に提供されるオプションが含まれます。特定のモジュールをblacklistファイルに登録して、それらがロードされるのを防ぐこともできます。 Chapter26.txt:設定はモジュールのロードまたはアンロード時に適用され、必要に応じて構成を変更できます。 Chapter26.txt:/etc/modprobe.d内のファイルの形式はシンプルです。1行に1つのコマンドがあり、空行と#で始まる行は無視されます(コメントの追加に便利です)。行の終わりにバックスラッシュがあると、次の行に継続するため、ファイルが少し見やすくなります。 Chapter26.txt:デモ:カーネル モジュール Chapter26.txt:このビデオでは、Ubuntu 17.04システムでカーネル モジュールに関する情報を取得する方法と、カーネル モジュールをロードおよびアンロードする方法を示します。 Chapter26.txt:演習 Chapter26.txt:課題 26.1: カーネル モジュール Chapter26.txt:🚩 Chapter26.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter26.txt:【【これ以降は橋本さんの訳を挿入】】 Chapter26.txt:1. List all currently loaded kernel modules on your system. Chapter26.txt:2. Load a currently unloaded module on your system. Chapter26.txt:If you are running a distribution kernel, this is easy to find; you can simply look in the /lib/modules//kernel/drivers/net directory and grab one. (Distribution kernels come with drivers for every device, filesystem, net-work protocol etc. that a system might need.)However, if you are running a custom kernel you may not have manyunloaded modules compiled. Chapter26.txt:A choice that will usually work is to pick either e1000.ko or e1000e.ko, as while these gigabit Ethernet drivers are quite common, it is very unlikely both would be loaded at once. Chapter26.txt:3. Re-list all loaded kernel modules and see if your module was indeed loaded. Chapter26.txt:4. Remove the loaded module from your system. Chapter26.txt:5. Re-list again and see if your module was properly removed. Chapter26.txt:Solution 26.1 Chapter26.txt:1.$ lsmod Chapter26.txt:2. In the following, substitute whatever module name you used for e1000e. Either of these methods work but, of course,the second is easier. Chapter26.txt:$ sudo insmod /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/e1000e.ko Chapter26.txt:$ sudo /sbin/modprobe e1000e Chapter26.txt:3.$ lsmod | grep e1000e Chapter26.txt:4. Once again, either method works. Chapter26.txt:$ sudo rmmod e1000e Chapter26.txt:$ sudo modprobe -r e1000e Chapter26.txt:5.$ lsmod | grep e1000e Chapter26.txt:知識チェック Chapter26.txt:「第26章 - カーネル モジュール」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter26.txt:クイズ開始 Chapter26.txt:問題 26.1 Chapter26.txt:ロードされたモジュールを確認するには、どのツールを使用しますか? Chapter26.txt:A. modprobe Chapter26.txt:B. modinfo Chapter26.txt:C. lsmod Chapter26.txt:D. insmode Chapter26.txt:問題 26.2 Chapter26.txt:構築済みのモジュール データベースを使用してモジュールをロードまたはアンロードするには、どのツールを使用しますか? Chapter26.txt:A. modprobe Chapter26.txt:B. modinfo Chapter26.txt:C. insmode Chapter26.txt:D. depmod Chapter26.txt:問題 26.3 Chapter26.txt:モジュールを直接アンロードするには、どのツールを使用しますか? Chapter26.txt:A. lsmode Chapter26.txt:B. modprobe Chapter26.txt:C. depmod Chapter26.txt:D. rmmod Chapter26.txt:問題 26.4 Chapter26.txt:モジュールの依存関係データベースを再構築するには、どのツールを使用しますか? Chapter26.txt:A. modprobe Chapter26.txt:B. modinfo Chapter26.txt:C. depmod Chapter26.txt:D. rmmod Chapter26.txt:問題 26.5 Chapter26.txt:モジュールに関する情報を表示するには、どのツールを使用しますか? Chapter26.txt:A. lsmod Chapter26.txt:B. modinfo Chapter26.txt:C. depmod Chapter26.txt:D. modprobe Chapter27.txt:デバイスとudev Chapter27.txt:はじめに Chapter27.txt:第27章はじめに Chapter27.txt:Linuxは、ハードウェアと周辺機器を、システムのブート時とシステムに接続された後の両方で検出するために、インテリジェントなツールであるudevを使用します。デバイス ノードを動的に作成し、アプリケーションやオペレーティング システムのサブシステムで使用して、デバイスと通信したり、デバイスとの間でデータを転送したりします。システム管理者は、希望どおりの動作結果を保証するため、udevの動作を制御したり特別なudevルールを作成したりできます。 Chapter27.txt:学習目標 Chapter27.txt:この章の終わりまでに、次のことができるようになります。 Chapter27.txt:デバイス ノードの役割と、それらがメジャー番号とマイナー番号を使用する方法を説明できます。 Chapter27.txt:udev方式の必要性を理解し、その主要コンポーネントをリストできます。 Chapter27.txt:udevデバイス マネージャーの機能を説明できます。 Chapter27.txt:udevルール ファイルを特定し、カスタム ルールを作成する方法を学習します。 Chapter27.txt:デバイスとudev Chapter27.txt:デバイス ノード Chapter27.txt:キャラクタ デバイスとブロック デバイスには、ファイルシステム エントリが関連付けられていますが、Linuxのネットワーク デバイスはそうではありません。デバイス ノードは、open()、close()、read()、write()などの通常のI/Oシステムコールを使用して、プログラムがデバイスと通信するために使われます。一方、ネットワーク デバイスはパケットの送受信によって機能します。パケットは、データのストリームを分割して構成するか、受信時にストリームに再構成する必要があります。 Chapter27.txt:デバイス ドライバは、複数のデバイス ノードを管理できます。これらは通常、/devディレクトリに置かれます。 Chapter27.txt:$ ls -l /dev Chapter27.txt:total 0 Chapter27.txt:crw------- 1 coop audio 14, 4 Jul 9 01:54 audio Chapter27.txt:crw------- 1 root root 10, 62 Jul 9 01:54 autofs Chapter27.txt:lrwxrwxrwx 1 root root 4 Jul 9 01:54 cdrom -> scd0 Chapter27.txt:lrwxrwxrwx 1 root root 4 Jul 9 01:54 cdrw -> scd0 Chapter27.txt:crw------- 1 coop root 5, 1 Jul 9 06:54 console Chapter27.txt:.... Chapter27.txt:lrwxrwxrwx 1 root root 4 Jul 9 01:54 dvd -> scd0 Chapter27.txt:lrwxrwxrwx 1 root root 4 Jul 9 01:54 dvdwriter -> scd0 Chapter27.txt:.... Chapter27.txt:brw-r----- 1 root disk 8, 0 Jul 9 01:53 sda Chapter27.txt:brw-r----- 1 root disk 8, 1 Jul 9 01:53 sda1 Chapter27.txt:brw-r----- 1 root disk 8, 2 Jul 9 06:54 sda2 Chapter27.txt:.... Chapter27.txt:brw-r----- 1 root disk 8, 16 Jul 9 01:53 sdb Chapter27.txt:brw-r----- 1 root disk 8, 17 Jul 9 01:53 sdb1 Chapter27.txt:brw-r----- 1 root disk 8, 18 Jul 9 01:53 sdb2 Chapter27.txt:.... Chapter27.txt:crw-rw-rw- 1 root tty 5, 0 Jul 9 01:54 Chapter27.txt:-rw---- 1 root root 4, 0 Jul 9 14:54 tty0 Chapter27.txt:crw------- 1 root root 4, 1 Jul 9 06:54 tty1 Chapter27.txt:cr--r--r-- 1 root root 1, 9 Jul 9 01:53 urandom Chapter27.txt:.... Chapter27.txt:crw-rw-rw- 1 root root 1, 5 Jul 9 01:54 zero Chapter27.txt:デバイス ノードは次の方法で作成できます。 Chapter27.txt:$ sudo mknod [-m mode] /dev/name Chapter27.txt:例えば、「sudo mknod -m 666 /dev/mycdrv c 254 1」のように使います。 Chapter27.txt:デバイス ノード Chapter27.txt:メジャー番号とマイナー番号 Chapter27.txt:メジャー番号とマイナー番号は、ドライバとそれが制御するデバイスや使用方法を識別するものです。ドライバは番号のグループを一意に予約します。ほとんどの場合(すべてではありません)、同じメジャー番号を持つ同じ種類(ブロックまたはキャラクタ)のデバイス ノードは、同じドライバを使用します。 Chapter27.txt:いくつかのデバイス ノードをリストする場合、次のように入力します。 Chapter27.txt:$ ls -l /dev/sda* Chapter27.txt:brw-rw---- 1 root disk 8, 0 Dec 29 06:40 /dev/sda Chapter27.txt:brw-rw---- 1 root disk 8, 1 Dec 29 06:40 /dev/sda1 Chapter27.txt:brw-rw---- 1 root disk 8, 2 Dec 29 06:40 /dev/sda2 Chapter27.txt:....... Chapter27.txt:メジャー番号とマイナー番号は、通常のファイル情報を見たときにファイル サイズが表示される場所に表示されます。上記の例では「8,1」などです。通常のユーザーは、おそらくメジャー番号とマイナー番号を明示的に参照する必要はなく、デバイスを名前で参照します。一方でシステム管理者は、システムがデバイスについて混乱したり、実行時にハードウェアが追加されたりした場合には、それらを解決する必要があります。 Chapter27.txt:マイナー番号は、デバイス ドライバが制御する可能性のあるさまざまなデバイス、またはそれらの使用方法を区別するためにのみ使用されます。これらは、同じ種類のデバイスの異なるインスタンス(1番目と2番目のサウンド カード、ハードディスク パーティションなど)、または特定のデバイスの異なる動作モード(異なる密度のフロッピー ドライブ メディアなど)のいずれかです。 Chapter27.txt:デバイス番号は、ユーザー空間でも意味を持ちます。2つのシステムコール、mknod()とstat()は、メジャー番号とマイナー番号に関する情報を返します。 Chapter27.txt:udev Chapter27.txt:Linuxの進化に伴い、デバイス ノードの管理は使いにくく難しくなりました。/devとそのサブディレクトリにあるデバイス ノードの数は、カーネル バージョン2.4シリーズのほとんどのインストールにおいて、15,000〜20,000の数に達しました。ディストリビュータはシステム上にどのハードウェアが存在するかを正確に確認できません。そのため、ほとんどのインストールでは、使用されることのないあらゆる種類のデバイス ノードがデフォルトで作成されました。 Chapter27.txt:もちろん、多くの開発者とシステム管理者は、特に組み込み分野で実際に必要なものにあわせて調整していましたが、これは基本的に手動で行っており、潜在的なエラーが発生しやすい作業でした。 Chapter27.txt:デバイス ノードは通常のファイルではないため、ファイルシステム上に大きな領域を占有することはありません。ただ、巨大なディレクトリがあると、特に最初の使用時に、デバイス ノードへのアクセスが遅くなります。さらに、使用可能なメジャー番号とマイナー番号の枯渇に対応するために、デバイス ノードの作成と保守に関してより最新で動的なアプローチが必要でした。理想的な方法は、名前でデバイスを登録することです。ただし、POSIX標準ではメジャー番号とマイナー番号が必要であるため、これらを完全に取り除くことはできません。(POSIXは、異なるオペレーティング システム間の互換性を確保するために設計された標準規格であり、Portable Operating System Interfaceの頭字語です。) Chapter27.txt:udev方式では、必要に応じてデバイス ノードを動的に作成します。使用されないデバイス ノードを大量に保持する必要はありません。udevのuはユーザーを表し、デバイス ノードの作成、削除、変更のほとんどの作業がユーザー空間で行われることを示します。 Chapter27.txt:udevはデバイス ノードを動的に作成します。以前のメカニズムであるdevfsやhotplugなどの後継として進化しました。優れた機能の1つは、恒久的なデバイス名のサポートです。名前は、デバイス接続やプラグインの順序に依存する必要はありません。このような動作は、udevルールの仕様によって制御されます。 Chapter27.txt:udevコンポーネント Chapter27.txt:udevはデーモン(udevdまたはsystemd-udevd)として実行され、netlinkソケットを監視します。新しいデバイスが初期化されたり削除されると、ueventカーネル機能はソケットを介してメッセージを送信します。udevはそれを受信し、ルールに従って正しい名前とプロパティのデバイス ノードを作成したり削除したりします。 Chapter27.txt:udevは、以下の3つのコンポーネントで構成されています。 Chapter27.txt:デバイスに関する情報へのアクセスを許可するlibudevライブラリ。 Chapter27.txt:/devディレクトリを管理するudevdまたはsystemd-udevdデーモン。 Chapter27.txt:制御および診断を行うudevadmユーティリティ。 Chapter27.txt:udevを使用する最も正しい方法は、余計なモジュールなどがロードされていないシステムで行うことです。/devディレクトリは、最初のカーネル起動時には空であり、必要に応じてデバイス ノードが読み込まれます。この方法で使用する場合、initramfsイメージを使用してブートする必要があります。initramfsイメージには、予備のデバイス ノードのセットと、udevインフラストラクチャが含まれています。 Chapter27.txt:udevとホットプラグ Chapter27.txt:システムにデバイスが追加または削除されると、通知されるイベントに基づいてudevは、ホットプラグ サブシステムと連携してデバイス ノードを作成または削除します。デバイス ノードを作成するために必要な、名前、メジャー番号、マイナー番号、パーミッションなどの情報は、sysfs疑似ファイルシステム(/sysにマウント)と一連の設定ファイルに既に登録されている情報を調べて収集します。 Chapter27.txt:主要な設定ファイルは/etc/udev/udev.confです。ここにはデバイス ノードの配置場所、デフォルトのパーミッション、所有権などの情報が含まれています。デバイスの命名規則は、デフォルトでは/etc/udev/rules.dと/usr/lib/udev/rules.dディレクトリにあります。udevのmanページを読むことで、一般的な状況におけるルール設定方法について、多くの特定情報を取得できます。 Chapter27.txt:udevデバイス マネージャ Chapter27.txt:udevは、追加または削除されるデバイスに関するメッセージをカーネルから受信すると、そのデバイスに関連するルールがあるかを見るために、/etc/udev/rules.d/*.rulesと/usr/lib/udev/rules.d/*.rulesのルール設定ファイルを参照します。 Chapter27.txt:その後、以下のようなアクションを実行します。 Chapter27.txt:デバイス ノードの名前を決定します。 Chapter27.txt:デバイス ノードとシンボリックリンクを作成します。 Chapter27.txt:デバイス ノードのファイル パーミッションと所有権を設定します。 Chapter27.txt:その他のアクションを実行して、デバイスを初期化し、デバイスを使用可能にします。 Chapter27.txt:これらのルールは完全にカスタマイズ可能です。 Chapter27.txt:udevルールのファイル Chapter27.txt:udevルールのファイルは/etc/udev/rules.d/.rulesの下に、次のような名前で存在します。 Chapter27.txt:30-usb.rules Chapter27.txt:90-mycustom.rules Chapter27.txt:デフォルトでは、udevは接尾辞が.rulesのファイルを探してルール ファイルを読み取ります。複数のファイルが見つかった場合は、辞書順に、つまりアルファベットの昇順で1つずつ読み取ります。通常、標準のルール ファイル名は、2桁の数字の後に説明的な名前(ルールに関するもの)が続き、その後に.rulesサフィックスが続きます。 Chapter27.txt:1行に2つの情報が定義されています。 Chapter27.txt:最初の部分は、==で示される1つ以上の一致するペアで構成されます。これらは、デバイスの属性や特性もしくはその両方が、ここに指定した値に一致するかをみます。 Chapter27.txt:2番目の部分は、ファイル名、グループの割り当て、さらにはファイルのパーミッションなど名前に値を割り当てる、1つ以上の割り当てキーと値のペアで構成されます。 Chapter27.txt:一致するルールが見つからない場合、デフォルトのデバイス ノード名とその他の属性が使用されます。 Chapter27.txt:$ cat /etc/udev/rules.d/99-fitbit.rules Chapter27.txt:SUBSYSTEM=="usb", ATTR{idVendor}=="2687", ATTR{idProduct}=="fb01", SYMLINK+="fitbit", MODE="0666" Chapter27.txt:$ cat /etc/udev/rules.d/60-vboxdrv.rules Chapter27.txt:KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660" Chapter27.txt:KERNEL=="vboxdrvu", NAME="vboxdrvu", OWNER="root", GROUP="root", MODE="0666" Chapter27.txt:KERNEL=="vboxnetctl", NAME="vboxnetctl", OWNER="root", GROUP="vboxusers", MODE="0660" Chapter27.txt:SUBSYSTEM=="usb_device", ACTION=="add", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}" Chapter27.txt:SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}" Chapter27.txt:SUBSYSTEM=="usb_device", ACTION=="remove", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor" Chapter27.txt:SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor" Chapter27.txt:udevルールの発行 Chapter27.txt:udevルールの書式は簡単です。 Chapter27.txt:value [, ...] value [, ... ] Chapter27.txt:1行に2つの情報が定義されています。最初の部分は、1つ以上の一致ペアで構成されます(二重等号==で示されます)。これらは、デバイスの属性や特性もしくはその両方が、ここに指定した値に一致するかをみます。2番目の部分は、ファイル名、グループの割り当て、さらにはファイルのパーミッションなど名前に値を割り当てる、1つ以上の割り当てキーと値のペアで構成されます。 Chapter27.txt:例: Chapter27.txt:KERNEL=="sdb", NAME="my-spare-disk" Chapter27.txt:KERNEL=="sdb", DRIVER=="usb-disk", SYMLINK+="sparedisk" Chapter27.txt:KERNEL=="sdb", RUN+="/usr/bin/my-program" Chapter27.txt:KERNEL=="sdb", MODE="0660", GROUP="mygroup" Chapter27.txt:一致するルールが見つからない場合、デフォルトのデバイス ノード名が使用されます。 Chapter27.txt:ルール ファイルの例 Chapter27.txt:Fitbitデバイスのルール ファイルの例を次に示します。 Chapter27.txt:$ cat /usr/lib/udev/rules.d/99-fitbit.rules Chapter27.txt:SUBSYSTEM=="usb", ATTR{idVendor}=="2687", ATTR{idProduct}=="fb01", SYMLINK+="fitbit", MODE="0666" Chapter27.txt:以下に、kdump/kexecを使用してクラッシュダンプと高速カーネル ローディングを設定する例を示します。 Chapter27.txt:$ cat /usr/lib/udev/rules.d/98-kexec.rules Chapter27.txt:SUBSYSTEM=="cpu", ACTION=="online", PROGRAM="/bin/systemctl try-restart kdump.service" Chapter27.txt:SUBSYSTEM=="cpu", ACTION=="offline", PROGRAM="/bin/systemctl try-restart kdump.service" Chapter27.txt:SUBSYSTEM=="memory", ACTION=="add", PROGRAM="/bin/systemctl try-restart kdump.service" Chapter27.txt:SUBSYSTEM=="memory", ACTION=="remove", PROGRAM="/bin/systemctl try-restart kdump.service" Chapter27.txt:kvm仮想マシン ハイパーバイザの例を次に示します。 Chapter27.txt:$ cat /usr/lib/udev/rules.d/80-kvm.rules Chapter27.txt:KERNEL=="kvm", GROUP="kvm", MODE="0666" Chapter27.txt:$ cat /usr/lib/udev/rules.d/99-fuse.rules Chapter27.txt:KERNEL=="fuse", MODE="0666",OWNER="root",GROUP="root" Chapter27.txt:デモ:udevの使用 Chapter27.txt:このビデオは、udevの使用の簡単なデモを提供します。 Chapter27.txt:演習 Chapter27.txt:課題 27.1: udev Chapter27.txt:🚩 Chapter27.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter27.txt:【【これ以降は橋本さんの訳を参照】】 Chapter27.txt:1. Create and implement a rule on your system that will create a symlink called myusb when a USB device is plugged in. Chapter27.txt:2. Plug in a USB device to your system. It can be a pen drive, mouse, webcam, etc. Chapter27.txt:Note: If you are running a virtual machine under a hypervisor, you will have to make sure the USB device is seen by the guest, which usually is just a mouse click which also disconnects it from the host. Chapter27.txt:3. Get a listing of the /dev directory and see if your symlink was created. Chapter27.txt:4. Remove the USB device. (If it is a drive you should always umount it first for safety.) Chapter27.txt:5. See if your symbolic link still exists in/dev. Chapter27.txt:Solution 27.1 Chapter27.txt:1. Create a file named /etc/udev/rules.d/75-myusb.rules and have it include just one line of content: Chapter27.txt:$ cat /etc/udev/rules.d/75-myusb.rules Chapter27.txt:SUBSYSTEM=="usb", SYMLINK+="myusb" Chapter27.txt:Do not use the deprecated key valueBUSin place of SUBSYSTEM, as recent versions of udev have removed it. Chapter27.txt:Note the name of this file really does not matter. If there was an ACTION component to the rule the system would execute it; look at other rules for examples. Chapter27.txt:2. Plug in a device. Chapter27.txt:3.$ ls -lF /dev | grep myusb Chapter27.txt:4. If the device has been mounted: Chapter27.txt:$ umount /media/whatever Chapter27.txt:where /media/whatever is the mount point. Safely remove the device. Chapter27.txt:5.$ ls -lF /dev | grep myusb Chapter27.txt:知識チェック Chapter27.txt:「第27章 - デバイスとudev」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter27.txt:クイズ開始 Chapter27.txt:問題 27.1 Chapter27.txt:特別なファイルとして/devの下にあるハードウェア デバイスはどれですか?当てはまるものをすべて選択してください。 Chapter27.txt:A. Mouse Chapter27.txt:B. Network adapter Chapter27.txt:C. Webcam Chapter27.txt:D. Hard drive Chapter27.txt:E. USB drive Chapter28.txt:仮想化概要 Chapter28.txt:はじめに Chapter28.txt:第28章はじめに Chapter28.txt:仮想化では、抽象化された完全なマシン環境を(ソフトウェアで)作成する必要があります。エンド ユーザーのソフトウェアは、実行中のマシンの物理的な詳細を認識せずに実行されます。 Chapter28.txt:この目標を達成するためのアプローチはいくつかありますが、一般的には、ハードウェアを直接使用するホスト オペレーティング システムとファイルシステムが関与します。1つ以上のゲスト システムは、ホスト システムの上で(または見方によっては下で)、より低いレベルの特権で実行されます。ネットワーク アダプタなどのハードウェアへのアクセスは、通常何らかの仮想デバイスを介して、要求されたときに物理デバイスにアクセスします。 Chapter28.txt:仮想マシンには多くの用途があります。それらには、ハードウェアのより効率的な使用、ソフトウェアの分離、セキュリティ、安定性、安全な開発オプション、そして再起動せずに複数のオペレーティング システムを同時に実行する機能が含まれます。 Chapter28.txt:学習目標 Chapter28.txt:この章の終わりまでに、次のことができるようになります。 Chapter28.txt:仮想化の基となる概念と、仮想化がどのように広く使用されるようになったかを理解できます。 Chapter28.txt:ホストとゲストの役割を理解できます。 Chapter28.txt:エミュレーションと仮想化の違いについて説明できます。 Chapter28.txt:さまざまな種類のハイパーバイザを区別できます。 Chapter28.txt:Linux ディストリビューションがlibvirtをどのように使用しているかを詳細に知っています。 Chapter28.txt:qemuハイパーバイザを使用できます。 Chapter28.txt:KVMをインストール、使用、管理できます。 Chapter28.txt:仮想化概要 Chapter28.txt:仮想化とは何か? Chapter28.txt:この章では、仮想マシン(VM)の作成、デプロイ、およびメンテナンスについて説明します。 Chapter28.txt:仮想マシン(VM)は、オペレーティング システム全体の仮想インスタンスであり、サーバーまたはデスクトップ/ワークステーションの役割を果たします。 Chapter28.txt:外部の世界からは、VMが実際の物理マシンであるかのように見え、ネットワーク上のどこかに存在するように見えます。VMで実行されているアプリケーションは、ほとんどの場合、非物理環境であることを認識していません。 Chapter28.txt:クリックして各ボックスを展開し、他の種類の仮想化について学習します。 Chapter28.txt:他の種類の仮想化 Chapter28.txt:ネットワーク Chapter28.txt:ハードウェア、ルーターなどの種類など、実際の物理ネットワークの詳細は抽象化されており、そこで実行したりそれを設定するソフトウェアが知る必要はありません。例:Software Defined NetworkingまたはSDN。 Chapter28.txt:ストレージ Chapter28.txt:複数のネットワーク ストレージ デバイスは、ディスクなどの1つの大きなストレージ ユニットのように構成されます。例:Network Attached StorageまたはNAS。 Chapter28.txt:アプリケーション Chapter28.txt:アプリケーションは、コンテナなどのスタンドアロン形式に分離されます。これについては後で説明します。 Chapter28.txt:物理マシンと仮想マシンには違いがあり、その違いには無視できないものもあります。たとえば、VMとその下にある物理マシンの両方で、低レベルでのパフォーマンス チューニングを(個別に)行う必要があります。 Chapter28.txt:仮想化の歴史 Chapter28.txt:仮想化には長い歴史があります。それは数十年前に、最初にメインフレームに実装されました。 Chapter28.txt:ハードウェア使用率を向上します。 Chapter28.txt:オペレーティング システムは、ハードウェアよりも速く進化します。 Chapter28.txt:マイクロコードで実装されています。 Chapter28.txt:特にユーザーフレンドリというものではありません。 Chapter28.txt:その後、仮想化技術はPCやワークステーションに移行しました。 Chapter28.txt:最初は、エミュレーションを使用して行われました。 Chapter28.txt:仮想化をサポートするために強化されたCPUにより、パフォーマンスが向上し、設定が容易になり、VMのインストールと移行の柔軟性が向上しました。 Chapter28.txt:初期のメインフレームからミニコンピュータまで、仮想化は、制限の拡大、デバッグ、管理の強化に使用されてきました。 Chapter28.txt:今日では、仮想化はさまざまな形でどこにでも見られます。様々な形式と実装には、それぞれ特有の利点があります。 Chapter28.txt:ホストとゲスト Chapter28.txt:ホストとは、1つ以上の仮想マシンを管理する、物理マシンにインストールされたオペレーティング システムです。 Chapter28.txt:ゲストはVMと言い、1つ以上のアプリケーションを実行する完全なオペレーティング システムのインスタンスです。ゲストはクライアントと呼ばれることもあります。ほとんどの場合、ゲストはどのホストで実行されているかを気にする必要はなく、実行中にホスト間で移行できます。 Chapter28.txt:実際、コンテンツ全体をVMにコピーすることで、物理マシンを仮想マシンに変換することが可能です。専用のソフトウェア ユーティリティを使用すると簡単にできます。 Chapter28.txt:CPU使用率、ネットワーク スループット、メモリ使用率などの低レベルのパフォーマンス チューニングは、ゲストで行うと、役に立たない程度の品質でしかシミュレートできません。そのため多くの場合、ホストで実行するのが最適です。 Chapter28.txt:アプリケーションのチューニングは主にゲストで行われます。 Chapter28.txt:エミュレーション vs. 仮想化 Chapter28.txt:PC アーキテクチャにおける最初の仮想化の実装は、エミュレータを使用したものでした。現在のオペレーティング システムで実行しているあるアプリケーションが、他のOSからは特定ハードウェア環境として見えます。エミュレータは、通常、動作するために特別なハードウェアを必要としません。 Chapter28.txt:Qemuはそのようなエミュレーターの1つです。 Chapter28.txt:エミュレータ Chapter28.txt:エミュレータは完全にソフトウェアで実行されます。ハードウェア構成はソフトウェアに置き換えられます。X86ホストのふりをしたARMゲスト マシンの実行など、異なるアーキテクチャで仮想マシンを実行するのに役立ちます。エミュレーションは、ハードウェアが使用可能になる前でも使えるので、新しいCPU用のオペレーティング システムの開発によく使用されます。パフォーマンスは比較的遅いです。 Chapter28.txt:仮想化ハイパーバイザの種類 Chapter28.txt:ホスト システムは、実行するソフトウェアに関して正常に機能することに加えて、ゲストの開始・終了の実行、そして管理するハイパーバイザとしても機能します。Virtual Machine Monitor(VMM)とも呼ばれます。 Chapter28.txt:仮想化には2つの基本的な方式があります。クリックして各カードを反転し、これらの仮想化の種類を学習します。 Chapter28.txt:ハードウェア仮想化 Chapter28.txt:ゲスト システムは、仮想化ゲストとして実行されていることを意識せずに実行されます。この方法で実行するために何かを変更する必要はありません。完全仮想化とも呼ばれます。 Chapter28.txt:準仮想化 Chapter28.txt:ゲスト システムは、仮想化環境で実行されていることを認識しており、ゲスト システムで動作するように特別に変更されています。 Chapter28.txt:IntelとAMDの広く使用されているCPUは、x86アーキテクチャに仮想化拡張機能を組み込んでおり、ハイパーバイザが完全に仮想化された(つまり、変更されていない)ゲスト オペレーティング システムをわずかなパフォーマンス ペナルティで実行できるようにしています。 Chapter28.txt:Intel拡張(Intel Virtualization Technology)は、通常 VT、IVT、VT-32またはVT-64と略され、Vanderpoolの開発コード名でも知られています。2005年の春から公開されています。 Chapter28.txt:AMD拡張機能は通常AMD-Vと呼ばれ、Pacificaという開発コード名で呼ばれることもあります。 Chapter28.txt:これら2つの拡張機能の詳細な説明と比較については、Xenと新しいプロセッサの記事を参照してください。 Chapter28.txt:/proc/cpuinfoを見ると、CPUがハードウェア仮想化拡張機能をサポートしているかどうかを直接確認できます。 IVT対応チップを使用している場合、フラグ フィールドにvmxが表示されます。AMD-V対応チップを使用している場合には、同じフィールドにsvmが表示されます。また、CMOSで仮想化機能を有効にする必要があります。 Chapter28.txt:準仮想化ゲストに使用するオペレーティング システムの選択は制限される傾向がありますが、もともと完全仮想化ゲストよりも効率的に実行される利点がありました。仮想化技術の進歩により、そのような利点が少なくなったり排除されたりしています。そして、完全仮想化に必要なハードウェア サポートの利用の可能性が広がったことにより、準仮想化の利点がより少なくなり、人気がなくなりました。 Chapter28.txt:最新のハードウェアのほとんどは、ハードウェア仮想化機能を備えています(BIOSで有効にする必要があります)。 Chapter28.txt:ハイパーバイザには次のものがあります。 Chapter28.txt:ホスト オペレーティング システム カーネルの外部にあるもの:VMware Chapter28.txt:ホスト オペレーティング システム カーネルの内部にあるもの:KVM Chapter28.txt:このコースではKVMを説明します。KVMはすべてオープンソースであり、外部のサードパーティ ハイパーバイザ プログラムを必要としないためです。 Chapter28.txt:専用ハイパーバイザ Chapter28.txt:エミュレーションを経て仮想化展開の次のステップは、ハイパーバイザ プログラムを、特別に設計された軽量カーネルにマージすることでした。 Chapter28.txt:VMware ESX(および関連機能)は、オペレーティング システムに組み込まれたハイパーバイザの一例です。 Chapter28.txt:専用ハイパーバイザ Chapter28.txt:カーネル内のハイパーバイザ Chapter28.txt:KVMプロジェクトは、Linuxカーネルにハイパーバイザ機能を追加しました。これにより、カーネルの機能が活用され、カーネルをハイパーバイザにすることができました。 Chapter28.txt:前述のように、この種類の仮想化には特定のCPUチップ機能と設備が必要であり、それも反映されました。 Chapter28.txt:図 カーネル内のハイパーバイザ Chapter28.txt:libvirt Chapter28.txt:libvirtライブラリは、仮想化技術と情報をやり取りするためのツールキットです。仮想マシン、仮想ネットワーク、およびストレージの管理を提供し、すべてのエンタープライズLinuxディストリビューションで利用可能です。 Chapter28.txt:多くのアプリケーション プログラムがlibvirtと連動します。最も一般的なものとして、virt-manager、virt-viewer、virt-install、virshがあります。 Chapter28.txt:現在サポートされているハイパーバイザの全リストは、libvirtウェブ サイトにあります。 Chapter28.txt:QEMU/KVM Chapter28.txt:Xen Chapter28.txt:Oracle VirtualBox Chapter28.txt:VMware ESX Chapter28.txt:VMware Workstation/Player Chapter28.txt:Microsoft Hyper-V Chapter28.txt:IBM PowerVM (phyp) Chapter28.txt:OpenVZ Chapter28.txt:UML (User Mode Linux) Chapter28.txt:LXC (Linux Containers) Chapter28.txt:Virtuozzo Chapter28.txt:Bhyve (The BSD Hypervisor) Chapter28.txt:Test (Used for testing).​ Chapter28.txt:libvirtを使用するプログラム Chapter28.txt:多くのユーティリティがlibvirtを使用します。使用するユーティリティの正確なリストは、Linuxディストリビューションによって異なります。全リストはlibvirtのウェブ サイトにあります。 Chapter28.txt:このコースでは、コマンド ライン ユーティリティをあまり使用せずに、堅牢なGUIであるvirt-managerを使用します。これにより、非グラフィカル サーバーを使用するよりも柔軟性が向上します。 Chapter28.txt:libvirtベースのユーティリティの例 Chapter28.txt:QEMUとは何か? Chapter28.txt:QEMUはQuick EMUlatorの略です。2002年にFabrice Bellardによって開発されました。( Bellardは、一時期2.7兆桁に達するπを計算する世界記録を保持するなどの偉業を成し遂げたことでも知られています。) Chapter28.txt:QEMUは、ハードウェア エミュレーションまたは仮想化を実行するハイパーバイザです。ホスト アーキテクチャとエミュレートされたアーキテクチャの間でバイナリ命令を動的に変換して、CPUをエミュレートします。 Chapter28.txt:ホストとエミュレートされたアーキテクチャは、異なる場合も同じ場合もあります。ホストとゲストの両方のオペレーティング システムには多くの選択肢があります。 Chapter28.txt:QEMU は、オペレーティング システム全体ではなく、特定のアプリケーションのみをエミュレートするためにも使用できます。 Chapter28.txt:QEMU自体は、ホスト マシンよりもはるかに低速です。ただし、KVM(Kernel Virtual Machine)と一緒に使用することで、ネイティブ ホストに近い速度で処理することができます。 Chapter28.txt:ゲスト オペレーティング システムは、QEMUで実行するために書き換える必要はありません。QEMUは、いつでも仮想マシンを保存、一時停止、復元できます。QEMUは、GPLライセンスのフリー ソフトウェアです。 Chapter28.txt:QEMUには、IA-32(i386)、x86-64、MIPS、SPARC、ARM、SH4、PowerPC、CRIS、MicroBlazeなどを含む多くのアーキテクチャをサポートする機能があります。 Chapter28.txt:QEMUのクロス コンパイル機能は、組み込みプロセッサ向けの開発を行う際に非常に役立ちます。 Chapter28.txt:実際、QEMUは、まだ物理的に製造されていないか、市場にリリースされていないプロセッサでの開発によく使用されています。 Chapter28.txt:サードパーティのハイパーバイザの統合 Chapter28.txt:単独で使用される QEMUは比較的処理が低速です。ただし、サードパーティのハイパーバイザと統合すれば、ほぼネイティブの処理速度を出すことができます。これらのシステムのいくつかは、QEMUとは非常に近い従兄弟のような関係であることに注目してください。他のものはより遠い関係にあります。近しい関係のものをいくつか紹介します。 Chapter28.txt:KVMはQEMUと特に密接に統合されています。ホストとターゲットのアーキテクチャが同じ場合、完全な加速化と高速化を実現します。KVMはLinuxに最適化されています。これについて詳しく説明します。 Chapter28.txt:Linuxに最適化されたXenも、x86と一部のARM系のCPUのようにアーキテクチャが機能を提供する場合は、ハードウェア仮想化モードで実行できます。 Chapter28.txt:Oracle Virtual Boxはqcow2形式のイメージを使用でき、QEMUと非常に密接な関係にあります。 Chapter28.txt:このコースでは、仮想マシンの構成と実行にvirt-managerを使用することをお勧めします(演習でも使用します)。また、qemuコマンド ライン ユーティリティを使用して実行する方法についても説明します。 Chapter28.txt:イメージのフォーマット Chapter28.txt:QEMUは、ディスク イメージ ファイルのいろいろなフォーマットをサポートしています。ただし、主に使用されるのは2つだけで、残りは歴史的な理由と変換ユーティリティのために存在しています。 Chapter28.txt:クリックして各ボックスを展開し、ディスク イメージ ファイルの2つのフォーマットについて学習します。 Chapter28.txt:ディスク イメージ フォーマット Chapter28.txt:raw Chapter28.txt:これがデフォルトのイメージ フォーマットです。他の非QEMUエミュレーターにエクスポートするための、最も単純で簡単なフォーマットです。空のセクタは領域を必要としません。 Chapter28.txt:qcow2 Chapter28.txt:COWは、Copy On Writeの略です。多くのオプションがあります。詳細については、man qemu-imgを参照してください。 Chapter28.txt:サポートされている形式のリストを取得する場合には以下を行います。 Chapter28.txt:c7:/tmp> qemu-img --help | grep formats: Chapter28.txt:Supported formats: vfat vpc vmdk vhdx vdi ssh sheepdog rbd raw host_cdrom host_floppy host_device file \qed qcow2 qcow parallels nbd iscsi gluster dmg tftp ftps ftp https http cloop bochs blkverify blkdebug Chapter28.txt:特に以下に注意してください。 Chapter28.txt:vdi:Oracle Virtual Boxで使用。 Chapter28.txt:vmdk:VMwareで使用。 Chapter28.txt:qemu-imgはフォーマット間の変換に使用できます。例えば、 Chapter28.txt:$ qemu-img convert -O vmdk myvm.qcow2 myvm.vmdk Chapter28.txt:これはデフォルトのオプションを使用しています。qemu-imgで何ができるかについては、manページを参照してください。 Chapter28.txt:KVMとLinux Chapter28.txt:KVMは、メモリ管理、スケジューリング、同期などを含むコンピューティング リソースの操作にLinuxカーネルを使用します。仮想マシンを実行するときには、KVMは、Linuxカーネルを補助する役割を担います。 Chapter28.txt:KVMは、VMX(Intel)または SVM(AMD)命令を使用して、1つ以上のCPU内で仮想マシン モニタ(KMM)を実行します。この時、Linuxカーネルは他のCPUで実行されています。 Chapter28.txt:KVMは、ゲストを最大限のハードウェア スピードで実行します。それは、仮想マシン モニタに制御を引き継がせる命令を実行するまで続きます Chapter28.txt:引き継いだ時点で、仮想マシン モニタは任意のLinuxリソースを使用してゲストの指示をエミュレートしたり、最後の指示でゲストを再起動したり、他の操作を実行したりできます。 Chapter28.txt:KVMモジュールをロードしてゲストを起動すると、Linuxはハイパーバイザに変わります。Linuxの特徴は残しつつ、ハードウェア仮想マシン モニタとしても使えます。cgroups、nice、numactlなどの標準Linuxリソースとプロセス制御ツールを使用して、仮想マシンを制御できます。 Chapter28.txt:KVMは最初、Windows仮想デスクトップ製品の一部として登場しました。2007年にアップストリームにマージされた時点では、KVMには最新のx86_64プロセッサが必須でした。x86_64プラットフォームでは、KVMは主として(ただし常にではない)プロセッサの仮想化サブシステム用のドライバでした。 Chapter28.txt:KVMは、2007年にLinuxカーネル モジュールとして登場しました。(同時に提供された)QEMUの修正バージョンと組み合わせることで、ほとんどのランタイム サービスにLinuxカーネルを使用するハイパーバイザが作成されました。 Chapter28.txt:KVMの作者であるAvi KivityがLinux開発コミュニティにソース コードを提供してすぐに、LinusはKVMを Linuxツリーにマージしました。これは多くの人にとって驚くべきことでした。 Chapter28.txt:KVMの管理 Chapter28.txt:仮想マシンのイメージを作成、変換、操作、デプロイ、保守するため、多くの低レベルのコマンドがあります。 Chapter28.txt:KVMの管理は、コマンド ラインとグラフィカル インターフェイスの両方で実行できます。 Chapter28.txt:コマンド ライン ツールの名前は、virt-*とqemu-*の文字から始まります。グラフィカル インターフェイスには、virt-manager、kimchi、OpenStack、oVirtなどが含まれます。 Chapter28.txt:より多くの専門知識を身に付けると、それらを効率的に使用できるようになります。しかし、すべての基本的な操作はvirt-managerで十分であり、ここではそれを使用します。 Chapter28.txt:KVMを管理するユーティリティ Chapter28.txt:演習 Chapter28.txt:課題 28.1: KVM が正しくセットアップされていることを確認する Chapter28.txt:🚩 Chapter28.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter28.txt:【【これ以降は橋本さんの訳を挿入】】 Chapter28.txt:Very Important Chapter28.txt:• The following labs are best run on a physical machine runningLinuxnatively. Chapter28.txt:• It may be possible to run them within a Virtual Machine running under a hypervisor, such as VMWare or VirtualBox, or evenKVM. However, this requires nested virtualization to be running properly. Chapter28.txt:• Whether or not this works depends on the particular hypervisor used, the underlying host operating system (i.e.,Windows,Mac OS or Linux) as well as the particular variant, such as which Linux or Windows version as wellas the particular kernel. Chapter28.txt:• Furthermore it also depends on your particular hardware. For example, we have found nested virtualization working with VMWare on various x86_64 machines but with Oracle Virtual Box only on some. Chapter28.txt:• If this works, performance will be poor as compared to running on native hardware, but that is not important forthe simple demonstrative exercises we will do. Chapter28.txt:• Your mileage will vary!If it does not work we cannot be responsible for helping you trying to get it rolling. Chapter28.txt:1. First check that you have hardware virtualization available and enabled: Chapter28.txt:$ grep -e vmx -e svm /proc/cpuinfo Chapter28.txt:where vmx is for INTEL CPUs and svm for AMD. If you do not see either one of these: Chapter28.txt:• If you are on a physical machine, maybe you can fix this. Reboot your machine and see if you can turn on virtualization in the BIOS settings. Note that some IT personnel may make this impossible for “security” reasons,so try to get that policy changed. Chapter28.txt:• You are on a virtual machine running under a hypervisor, and you do not have nested virtualization operable. Chapter28.txt:2. If for either of these reasons, you do not have hardware virtualization, you maybe able to run virt-manager, but with weak performance. Chapter28.txt:3. You need all relevant packages installed on your system. One can work hard to construct an exact list. However, exactnames and requirements change with time, and most enterprise distributions ship with all (or almost all) of the software you need. Chapter28.txt:4. The easiest and best procedure is to run the script we have already supplied to you: Chapter28.txt:$ ./ready-for.sh --install LFS201 Chapter28.txt:where we have done the hard work. Chapter28.txt:Alternatively, on RPM systems you can do some overkill with: Chapter28.txt:$ sudo yum|dnf|zypper install kvm* qemu* libvirt* Chapter28.txt:It is not a large amount of storage space to do it this way. Chapter28.txt:On Debian package based systems including Ubuntu you will have to do the equivalent with your favorite package installing procedure. Chapter28.txt:Very Important Chapter28.txt:• Do not run libvirtd at the same time as another hypervisor as dire consequences are likely to arise. This can easily include crashing your system and doing damage to any virtual machines being used. Chapter28.txt:• We recommend both stopping and disabling your other hypervisor as in: Chapter28.txt:$ sudo systemctl stop vmware Chapter28.txt:$ sudo systemctl disable vmware Chapter28.txt:または Chapter28.txt:$ sudo systemctl stop vboxdrv Chapter28.txt:$ sudo systemctl disable vboxdrv Chapter28.txt:課題 28.2: virt-managerとKVMを使用い、VMをインストールして実行する Chapter28.txt:🚩 Chapter28.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter28.txt:Exercise 28.2: Using virt-manager with KVM to Install a Virtual Machine and Run it Chapter28.txt:In this exercise we will use pre-built iso images built by TinyCoreLinux(https://www.tinycorelinux.net) because they are cooked up very nicely and are quite small. Chapter28.txt:If you would like, you can substitute any installation iso image for another Linux distribution, such as Debian,CentOS,Ubuntu,Fedora,OpenSUSE etc. The basic steps will be identical and only differ when you get to the installation phase forbuilding your new VM; which is no different than building any fresh installation on an actual physical machine. Chapter28.txt:We will give step-by-step instructions with screen capture images; If you feel confident, please try to just launch virt-manager and see if you can work your way through the necessary steps, as the GUI is reasonably clearly constructed. Chapter28.txt:1. Make surelibvirtdis running and startvirt-managerby typing: Chapter28.txt:$ sudo systemctl start libvirtd Chapter28.txt:$ sudo virt-manager Chapter28.txt:Figure 28.6:Starting virt-manager Chapter28.txt:2. Click on File->Create New Machine: Chapter28.txt:Figure 28.7:Creating a Virtual Machine with virt-manager Chapter28.txt:3. We have included three different iso install images from TinyCoreLinux in the RESOURCES/s_28 directory: Chapter28.txt:Core-current.iso Chapter28.txt:CorePlus-current.iso Chapter28.txt:TinyCore-current.iso Chapter28.txt:(You can check and see if there are newer versions upstream athttps://www.tinycorelinux.netbut these shouldbe fine.) Chapter28.txt:CorePlus-current is largest and robust and we will use this as it will install with full graphics. The others are considerably quicker to use, however. Chapter28.txt:Navigate through your file system and pick the desired image: Chapter28.txt:Figure 28.8:Selecting the TinyCoreLinux iso image in virt-manager Chapter28.txt:4. Next you have to request the amount of memory and number of CPUs or cores to use. These images are pretty minimal.A choice of 256 MB is more than enough; you may have fun seeing how low you can go! Chapter28.txt:Figure 28.9:Configuring Memory and CPUS in virt-manager Chapter28.txt:5. Next you have to configure the location and size of the VM that is being created. You actually need very little for TinyCoreLinux, but the GUI will not let you choose less than 0.1 GB(about100 MB.)(From the command line it is easyto configure less space.) Chapter28.txt:Figure 28.10:Configuring Disk Storage in virt-manager Chapter28.txt:If you do not click on Select or Create custom storage your image will be placed in /var/lib/libvirt/images.Since images can be quite large, you might want to configure to put it elsewhere. Or you can replace the images directory in /var/lib/libvirt with a symbolic link to somewhere else, as in: Chapter28.txt:$ cd /var/lib/libvirt Chapter28.txt:$ sudo mv images images_ORIGINAL Chapter28.txt:$ sudo mkdir /tmp/images Chapter28.txt:$ sudo ln -s /tmp/images images Chapter28.txt:(You probably want a different location for the images files than /tmp, but you get the idea.) Chapter28.txt:6. You are now ready to begin installation of your own VM from the TinyCoreLinux installation disk: Chapter28.txt:Figure 28.11:Beginning the VM installation in virt-manager Chapter28.txt:Please Note Chapter28.txt:We recommend clicking on Customize configuration before install. While you may want to make other changes,the mouse pointer is configured by default to be a PS2 device; it is better to add a USB tablet input pointer. Chapter28.txt:Do this by clicking on Add Hardware on the next screen and then: Chapter28.txt:Figure 28.12:Adding an Input Device to the VM in virt-manager Chapter28.txt:7. Finally, we begin the installation: Chapter28.txt:Figure 28.13:Booting into the Installation Media with virt-manager Chapter28.txt:You can make other choices for the graphical interface, here we just choose the first one, the default, and hit return. Chapter28.txt:8. This will take a while and eventually you will see the following screen: Chapter28.txt:Figure 28.14:First TinyCoreLinux Screen Chapter28.txt:It is not obvious what to do here, but you need to see the icons at the bottom so you should resize and make the screentaller: Chapter28.txt:Figure 28.15:First TinyCoreLinux Screen Resized Chapter28.txt:9. Click on the terminal icon (or right click on the background and open up a terminal. Note the font is microscopic unfortunately. Then type Chapter28.txt:tc-install Chapter28.txt:in the window. Chapter28.txt:Figure 28.16:Running tc-install Chapter28.txt:10. SelectWhole disk and sda and click the forward arrow: Chapter28.txt:Figure 28.17:Selecting Disk in VM Chapter28.txt:11. Things will crank for a while and each step will be reflected in the output window. Chapter28.txt:Figure 28.18:Finishing Installation in virt-manager Chapter28.txt:When installation is complete you can go to the File menu and shut down the virtual machine. Chapter28.txt:12. Start up virt-manager again (if you have killed it) and you should now see something like: Chapter28.txt:Figure 28.19:Running the new VM in virt-manager Chapter28.txt:Right click on the VM andopenandrun. Your new virtual machine should be up and running! (If you get confused and think you are running the original install image, you can verify it is not that by noting there is no tc-install program in the new disk image. Chapter28.txt:課題 28.3: コマンドラインからVMをインストールする Chapter28.txt:🚩 Chapter28.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter28.txt:Exercise 28.3: Extra Credit: Doing from the command line Chapter28.txt:From the command line: Chapter28.txt:$ sudo qemu-img create -f qcow2 /var/lib/libvirtd/myimg.qcow2 24M Chapter28.txt:$ sudo qemu-system-x86_64 -hda /var/lib/libvirtd/myimg.qcow2\ Chapter28.txt:-cdrom /teaching/LFCW/RESOURCES/LFS201/CorePlus-current.iso -usbdevice tablet Chapter28.txt:知識チェック Chapter28.txt:「第28章 - 仮想化概要」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter28.txt:クイズ開始 Chapter28.txt:問題 28.1 Chapter28.txt:ハイパーバイザは次のうちどれですか? 当てはまるものをすべて選択してください。 Chapter28.txt:A. KVM Chapter28.txt:B. Oracle VirtualBox Chapter28.txt:C. Microsoft HyperV Chapter28.txt:D. Docker Chapter28.txt:問題 28.2 Chapter28.txt:次のうち、正しいものはどれですか? 当てはまるものをすべて選択してください。 Chapter28.txt:A. ハードウェア仮想化では、ゲスト システムはVMとして実行されていることを認識しています Chapter28.txt:B. ハードウェア仮想化では、ゲスト システムはVMとして実行されていることを認識しません Chapter28.txt:C. 準仮想化の下では、ゲスト システムはVMとして実行されていることを認識しています Chapter28.txt:問題 28.3 Chapter28.txt:KVMはどのコンポーネントの上で動作する必要がありますか? 当てはまるものをすべて選択してください。 Chapter28.txt:A. VMware Player Chapter28.txt:B. libvirt Chapter28.txt:C. Docker Chapter28.txt:D. qemu Chapter28.txt:問題 28.4 Chapter28.txt:VMWareの.vmdkイメージファイルを、KVMのqcow2ファイルに変換するコマンドはどれですか? Chapter28.txt:A. vboxmanage convert -- output myvm.qcow2 -- input myvm.vmdk Chapter28.txt:B. qemu-convert myvm.vmdk myvm.qcow2 Chapter28.txt:C. qemu-img convert -O qcow2 myvm.qcow2 myvm.vmdk Chapter28.txt:D. vmstat translate myvm.vmdk myvm.qcow2 Chapter29.txt:コンテナ概要 Chapter29.txt:はじめに Chapter29.txt:第29章はじめに Chapter29.txt:コンテナは、1つのアプリケーションまたはアプリケーション一式を他の実行中のプロセスから分離する、より軽量な方法を提供します。それぞれが完全なオペレーティング システムを構成する仮想マシンとは異なり、複数のコンテナを1つのシステムで同時に実行できます。これは、仮想化されたシステムでも物理的なシステムでもかまいません。 Chapter29.txt:コンテナを展開する非常に一般的な方法は、Dockerを使用することです。これについては、後で詳しく説明します。 Chapter29.txt:学習目標 Chapter29.txt:この章の終わりまでに、次のことができるようになります。 Chapter29.txt:コンテナを定義する基本的なパラメータと方法を理解できます。 Chapter29.txt:コンテナと仮想マシンの違いを理解できます。 Chapter29.txt:Dockerに精通し、Dockerを正しく使用するために必要な手順を知ることができます。 Chapter29.txt:コンテナとDockerに関係する主要なコマンドを使用できます。 Chapter29.txt:コンテナ概要 Chapter29.txt:コンテナの基本 Chapter29.txt:ハイパーバイザとLinuxカーネルをさらに統合することで、オペレーティング システム レベルの仮想マシンやコンテナが実現しました。コンテナは、Linuxカーネルの多くの機能を共有し、名前空間やcgroupなど、最近カーネルに追加されたいくつかの機能も利用します。コンテナは非常に軽量であり、仮想マシン全体に関連するオーバーヘッドを削減します。 Chapter29.txt:コンテナの初期の形はOSコンテナでした。この種類のコンテナは、initプロセスを実行して複数のアプリケーションを生成する機能を備えた、オペレーティング システムのイメージを実行します。 Chapter29.txt:LXC(Linux Containers)はその一例です。 Chapter29.txt:図 コンテナ Chapter29.txt:アプリケーションの仮想化 Chapter29.txt:仮想マシンに関連するオーバーヘッドをさらに削減するために、アプリケーション仮想化の人気が高まっています。アプリケーション仮想化は、コンテナごとに1つのアプリケーションを実行します。複数の単一アプリケーション コンテナは、通常1台のマシンで初期化されます。小さいコンポーネントを使用すると、柔軟性が向上し、仮想化に伴うオーバーヘッドを減少できます。 Chapter29.txt:Dockerはそのようなプロジェクトの1つです。 Chapter29.txt:図 アプリケーションの仮想化 Chapter29.txt:コンテナと仮想マシン Chapter29.txt:仮想マシンとコンテナは両方とも重要なニーズを満たすものです。登場してからしばらくの間は両方ともは順調で、ほとんど全てのものに適用されると思われました。 Chapter29.txt:両方とも長い歴史があります。 Chapter29.txt:メインフレーム コンピュータには、何十年もの間、かなり特殊な方法でソフトウェア パーティションと仮想マシンを採用していました。 Chapter29.txt:オペレーティング システムには、長年にわたってchrootとBSD Jailが実装されており、その基本的な分離の考え方はコンテナと同じです。 Chapter29.txt:多くの異なるサービスとアプリケーションが緊密に統合する必要がある場合は、そのためのサービスを提供する仮想マシンは、最適なソリューションとなり得ます。 Chapter29.txt:また、実行中のアプリケーションが、さまざまなサービスや他のライブラリとアプリケーションを備えた完全なオペレーティング システム環境を想定して記述されている場合も、仮想マシンが最適です。 Chapter29.txt:仮想マシンはオペレーティング システムを完全な形で実行し、多くのサービスとアプリケーションも実行できます。このため、仮想マシンはコンテナよりも多くのリソースを使用します。これに対して、コンテナは通常、1つのアプリケーションとその実行に必要なミドル一式を実行します。コンテナは移植性が高く、仮想マシン内で実行できます。その半面、コンテナの保護は難しいものがあります。また、コンテナは通常、起動が速いです。複数のコンテナは1つのOSカーネルを共有しますが、各仮想マシンには独自のカーネルがあります。 Chapter29.txt:コンテナと仮想マシンでは、ワークロードのスケーリングが異なります。KubernetesやMesosなどのオーケストレーション システムは、必要に応じて、コンテナの適切な数を決定したり、負荷分散を行ったり、イメージを複製したり、それらを削除したりできます。 Chapter29.txt:ただし、全般的に見れば、仮想マシンは今も最良のソリューションです。 Chapter29.txt:Docker Chapter29.txt:Dockerはアプリケーション レベルの仮想化です。対象のアプリケーションの実行をサポートするのに必要なサービスを構築するため、個別のイメージを多く使用します。これらのイメージはコンテナにパッケージ化されています - それらはコンテナ内のコンポーネントです。イメージに含まれる可能性のあるものは以下です。 Chapter29.txt:アプリケーション コード Chapter29.txt:ランタイム ライブラリ Chapter29.txt:システム ツール Chapter29.txt:または、アプリケーションとその実行に必要なミドル一式 Chapter29.txt:このイメージはDocker Hubまたはレジストリ サーバーに存在する場合があります。 Chapter29.txt:Dockerのウェブサイトには、ドキュメント、チュートリアル、トレーニング情報があります。 Chapter29.txt:Dockerの最も魅力的な機能の1つは、すべての依存コードとサービスをアプリケーションと共にパッケージ化し、最小限のオーバーヘッドで単一のユニットとしてデプロイできることです。このデプロイは、必要に応じて何度でも簡単に繰り返すことができます。これにより、エンド アプリケーションをサポートするために何層ものサービスをサーバーに構築する必要が少なくなります。 Chapter29.txt:Dockerの手順 Chapter29.txt:Dockerコンテナのアプリケーションの起動には、いくつかの手順があります。 Chapter29.txt:お気に入りのツールでDockerサービス パッケージをインストールします Chapter29.txt:Dockerサービスを開始します Chapter29.txt:Docker Hubまたはプライベート リポジトリから適切なイメージを検索します Chapter29.txt:イメージを取得します Chapter29.txt:イメージを実行します Chapter29.txt:最後に、アプリケーションをテストします。 Chapter29.txt:上記の手順は、Dockerアプリケーションのテストの最小限の例です。 Chapter29.txt:もちろん、イメージを作成し、システム変数または構成パラメータを設定し、結果を新しいイメージとして保存する機能を含むなど、使用できるオプションは多数あります。場合によっては、書き込み不可のイメージではなく、書き込み可能なイメージが必要となります。 Chapter29.txt:ほとんどのDockerコマンドには、個々のmanページがあります。例としては、docker(1)、docker-search(1)、docker-pull(1)、docker-create(1)、docker-run(1)などがあります。 Chapter29.txt:dockerコマンド Chapter29.txt:dockerコマンドには40以上のサブコマンドがあり、その一部には50以上のオプションがあります。dockerコマンドの詳細は、以下のコマンドでいつでも知ることができます。 Chapter29.txt:$ docker --help Chapter29.txt:多くのdockerサブコマンドは、ある程度自己文書化されています。よく混同されるのは、run、 create、execです。psコマンドは-allオプションを指定すると、実行中のコンテナ、またはすべてのコンテナをリストします。 Chapter29.txt:docker runは、新しいコンテナを開始し、その中でコマンドを実行します。一般的なオプションは、ttyに接続する-tと、コンテナをバックグラウンドで実行する-dです。 Chapter29.txt:docker createコマンドは、コンテナを作成します。コンテナの設定と接続をするための多くのオプションがあります。 Chapter29.txt:コンテナがすでに実行されていて、その中の何かを実行したい場合は、docker execコマンドを使用できます。また、-tと-dオプションも使えます。 Chapter29.txt:docker images コマンドは、さまざまなイメージ情報を表示します。docker rmiコマンドは、デフォルトでは、イメージを削除し、タグ付けされていない親を削除します。 Chapter29.txt:シェル関数を活用して、すべてのコンテナを操作することもできます。たとえば、停止したすべてのコンテナを削除するには、次のようにします。 Chapter29.txt:$ docker rm $(docker ps -a -q) Chapter29.txt:Podman Chapter29.txt:RHEL8/CentOS8では、純粋なdockerの提供がなくなり、代わりにpodmanが提供されました。 Chapter29.txt:Podmanは、コンテナの作成と管理に子/親のforkモデルを使用し、Dockerは、バックグラウンドで実行されるデーモンを備えたサーバー/クライアント モデルを使用します。 Chapter29.txt:dockerエミュレーション レイヤーを使用して、RHEL/CentOS 8で演習を行う方法を示します。エミュレーション レイヤーは、Dockerコマンドと後方互換性があります。 Chapter29.txt:他のディストリビューションは将来podmanを追加する可能性があります。まずは、標準的な手法で追加できるようにする必要があります。たとえば、Ubuntuにpodmanをインストールするには、次の手順をお勧めします。 Chapter29.txt:$ sudo apt update Chapter29.txt:$ sudo apt install software-properties-common Chapter29.txt:$ sudo add apt-repository ppa:projectatomic/ppa Chapter29.txt:$ sudo apt update Chapter29.txt:$ sudo apt install podman Chapter29.txt:podmanには、より良いセキュリティとより少ないオーバーヘッドという利点があります。 Chapter29.txt:演習 Chapter29.txt:課題 29.1: Docker アプリケーションとして、Apache(httpd)をインストールしテストする Chapter29.txt:🚩 Chapter29.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter29.txt:【【これ以降は橋本さんの訳を挿入】】 Chapter29.txt:Overview Chapter29.txt:In this exercise, we will install, run and test the docker package, and follow with getting and deploying httpd, the Apache web server container. Chapter29.txt:On RedHat, Centos, or Fedora Chapter29.txt:Please note that RHEL/CentOS 8 and recent Fedora distributions utilized podman. On these systems docker is supported by a backwards compatibility layer: Chapter29.txt:$ sudo dnf install podman podman-docker Chapter29.txt:1. Make sure Docker is installed (or emulated withpodman.) Pick the right command for your distribution: Chapter29.txt:$ sudo yum install docker # RHEL/CentOS 7 Chapter29.txt:$ sudo dnf install podman podman-docker # RHEL/CentOS 8, Fedora Chapter29.txt:$ sudo apt install docker.io # Ubuntu, Debian Chapter29.txt:$ sudo zypper install docker # OpenSUSE Chapter29.txt:Reinstall Docker? Chapter29.txt:• If you get strange errors at later points in the exercise you might find it useful to reinstall docker. We have observed cases (for example, with RHEL 7) where docker configurations were broken, after a system upgrade, Chapter29.txt:2. Start the docker service: Chapter29.txt:Very Important Chapter29.txt:You can skip to the next step on podman-based systems as there is no docker service to start! Chapter29.txt:$ sudo systemctl start docker Chapter29.txt:You may want to verify that it is running properly with systemctl status docker: Chapter29.txt:Figure 29.3:Checking docker status Chapter29.txt:If you see anything indicating failure you should inspect /var/log/messages or whatever other logging file you have on your system for clues. If you are running a standard distribution kernel you should be fine, but if you are running a custom Linux kernel, it is likely you have to select the proper configuration options, especially as regards to networking.This is too complicated to go into here, so please stay with a distribution supplied kernel unless you want a challeng ingexercise! Chapter29.txt:3. Search for thehttpdcontainer, with Chapter29.txt:$ sudo docker search apache Chapter29.txt:Figure 29.4:Using docker search Chapter29.txt:(You could have used httpd instead of apache in the above command with very similar results.) Chapter29.txt:From now on we will not show detailed output since if you have gotten this far, things should be fine. Chapter29.txt:4. Retrieve the container: Chapter29.txt:$ sudo docker pull docker.io/httpd Chapter29.txt:This may take a couple of minutes while all the components download. Chapter29.txt:5. List the installed containers: Chapter29.txt:$ sudo docker images Chapter29.txt:6. List the components associated with the images. Chapter29.txt:$ sudo docker images --all Chapter29.txt:7. Start the httpd docker container. The terminal will appear to hang as it is now connected to the httpd daemon. Chapter29.txt:c7:/tmp>sudo docker run httpd Chapter29.txt:AH00558: httpd: Could not reliably determine the server's fully qualified domain name, Chapter29.txt:using 172.17.0.2. Set the'ServerName'directive globally to suppress this message Chapter29.txt:...... Chapter29.txt:8. You can open a graphical web browser pointing to the IP address in the above output. (Do not use the address shownin the output above!) Chapter29.txt:Or you can use a text-based browser (especially if you are not in a graphical environment) by opening up a new terminalwindow (do not kill the one in which the docker httpd container is running!) and doing one of the following commands: Chapter29.txt:$ lynx http://172.17.0.2 Chapter29.txt:$ w3m http://172.17.0.2 Chapter29.txt:$ elinks http://172.17.0.2 Chapter29.txt:using whichever text-based browser is installed on your system. Chapter29.txt:9. Stop the container and docker service and clean up. Chapter29.txt:c7:/tmp>sudo docker ps Chapter29.txt:CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES Chapter29.txt:b936b0afeb23 httpd "httpd-foreground" 41 seconds ago Up 40 seconds 80/tcp boring_turing Chapter29.txt:c7:/tmp>sudo docker stop b936b0afeb23 Chapter29.txt:b936b0afeb23 Chapter29.txt:10. This will leave images and their associated storage under either /var/lib/docker or /var/lib/containers depend-ing on your particular system and distribution. If you do not need to reuse them you can clean up with: Chapter29.txt:c7:/tmp>sudo docker rmi -f docker.io/httpd Chapter29.txt:Untagged: docker.io/httpd:latest Chapter29.txt:Untagged: docker.io/httpd@sha256:cf774f082e92e582d02acdb76dc84e61dcf5394a90f99119d1ae39bcecbff075 Chapter29.txt:Deleted: sha256:cf6b6d2e846326d2e49e12961ee0f63d8b5386980b5d3a11b8283151602fa756 Chapter29.txt:and on some systems you may also need to do: Deleted Containers: Chapter29.txt:c7:/tmp>sudo docker system prune -a Chapter29.txt:..... Chapter29.txt:On non-podmansystems you may also want to do: Chapter29.txt:c7:/tmp>sudo systemctl stop docker Chapter29.txt:知識チェック Chapter29.txt:「第29章 - コンテナ概要」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter29.txt:クイズ開始 Chapter29.txt:問題 29.1 Chapter29.txt:正しい文章を選択してください。ホスト システムでは、________________: Chapter29.txt:A. 一度に実行できるコンテナは1つだけです Chapter29.txt:B. 一度に実行できるのは、特定の種類の1つのコンテナだけです Chapter29.txt:C. 任意の種類の複数のコンテナを同時に実行できます Chapter29.txt:D. 種類が異なるものであれば、複数のコンテナを実行できます Chapter29.txt:問題 29.2 Chapter29.txt:正しい文章をすべて選択してください。仮想マシンと比較して、コンテナは_________: Chapter29.txt:A. より少ないリソースを使用します Chapter29.txt:B. より多くのサービスとアプリケーションを実行します Chapter29.txt:C. 通常、より速く起動します Chapter29.txt:D. 移植性が低いです。 Chapter29.txt:問題 29.3 Chapter29.txt:Dockerが既にインストールされていると仮定すると、コンテナ化されたパッケージの起動ステップの正しい順序はどれですか? Chapter29.txt:i. Docker Hubまたは他の場所でコンテナ イメージを検索します Chapter29.txt:ii. イメージをpull(ダウンロード)します Chapter29.txt:iii. イメージを実行します Chapter29.txt:iv. Dockerサービスが起動されていない場合は起動します Chapter29.txt:A. ii, iii, i, iv Chapter29.txt:B. i, ii, iv, iii Chapter29.txt:C. iv, i, ii, iii Chapter3.txt:プロセス Chapter3.txt:はじめに Chapter3.txt:第3章はじめに Chapter3.txt:このビデオでは、この章で取り上げるコンテンツの概要を説明します。 Chapter3.txt:学習目標 Chapter3.txt:この章の終わりまでに、次のことができるようになります。 Chapter3.txt:プロセスとそれに関連付けられたリソースを説明できます。 Chapter3.txt:initプロセスの役割を説明できます。 Chapter3.txt:プロセス、プログラム、スレッドの違いがわかります。 Chapter3.txt:プロセスの属性、パーミッション、状態を理解し、制限を管理する方法を理解できます。 Chapter3.txt:ユーザー モードとカーネル モードでの実行の違いを説明できます。 Chapter3.txt:デーモン プロセスを説明できます。 Chapter3.txt:新しいプロセスがどのようにフォーク(生成)されるかを理解できます。 Chapter3.txt:niceとreniceを使用して、優先順位を設定および変更できます。 Chapter3.txt:共有ライブラリと静的ライブラリの使用方法を理解できます。 Chapter3.txt:プロセス Chapter3.txt:プログラム、プロセス、スレッド Chapter3.txt:プログラムとは、一連の命令と、命令を実行する時に使用する内部データのことを言います。また、プログラムは外部データを使用する場合もあります。内部データには、ユーザー プロンプトの表示に使用される、プログラム内のテキスト文字列が含まれる場合があります。外部データには、データベースからのデータを含む場合があります。ls、cat、rmなどの多くのユーザー コマンドは、オペレーティング システムのカーネルの外部にあるプログラムやシュルです(つまり、ディスク上にある独自の実行可能プログラムです)。 Chapter3.txt:プロセスとは、実行中のプログラム、環境、開いているファイル、シグナル ハンドラなどの関連リソースを指しています。同じプログラムが同時に複数回実行されている場合は、複数のプロセスが生成されます。 Chapter3.txt:それに加えて、2つ以上のタスクまたは実行スレッドは、全メモリ領域(または特定のメモリ領域)や開いているファイルなど、さまざまなリソースを共有できます。環境がすべて共有されているものは、マルチスレッド プロセスと言います。 Chapter3.txt:他のオペレーティング システムでは、ヘビー ウェイト プロセスとライト ウェイト プロセスの間に大きな違いがあるかもしれません。厳密に言えば、ヘビー ウェイト プロセスには、複数のライト ウェイト プロセスが含まれる場合もあれば、そのうちの1つだけが含まれる場合もあります。 Chapter3.txt:Linuxでは、状況がはまったく違います。実行する各スレッドは個別に考慮されます。ヘビー ウェイト プロセスとライト ウェイト プロセスの違いは、リソースの共有と、実行スレッド間のコンテキストの切り替えの速度だけです。 Chapter3.txt:他のオペレーティング システムとは異なり、Linuxは常にプロセスの生成、破棄、切り替えを非常に高速に実行しています。そのため、マルチスレッド アプリケーションに採用されたモデルは、マルチ プロセスに似ています。各スレッドは、独立したプロセスであるかのように、個別に普通にスケジュールされます。 Chapter3.txt:これは、異なるプロセス間でスケジューリングを行うだけでなく、プロセスのスレッド間でも個別のスケジューリングを行うような、複雑なスケジューリングを増やす代わりに行われます。 Chapter3.txt:同時に、LinuxはPOSIXおよびマルチスレッド プロセスの他の標準仕様も尊重します。たとえば、各スレッドは、個別のスレッドID(内部ではプロセスIDと呼ばれます)を返す一方で、同じプロセスID(内部ではスレッド グループIDと呼ばれます)も返します。これは開発者を混乱させる可能性がありますが、管理者には見えないので問題はないはずです。 Chapter3.txt:プロセスとは? Chapter3.txt:プロセスは、実行中のプログラムのインスタンスです。実行中やスリープ中など、さまざまな状態になる場合があります。すべてのプロセスには、pid(プロセスID)、ppid(親プロセスID)、pgid(プロセス グループID)があります。さらに、すべてのプロセスは、プログラム コード、データ、変数、ファイル記述子、および環境を持っています。 Chapter3.txt:initは通常、システム上で実行される最初のユーザー プロセスであり、カーネルから直接開始されたものを除いて、その後システム上で実行されるすべてのプロセスの祖先となります(psリストの名前の周りに [] で表示されます)。 Chapter3.txt:子プロセスの前に親プロセスが終了した場合、子プロセスの ppid は1に設定されます。つまり、子プロセスの新しい親はinitプロセスになります。(注:systemdを使用する最近の Linuxシステムでは、ppidが2になります。kthreaddとして知られる内部カーネル スレッドが、孤児プロセスの親の役割をinitから引き継ぐからです。) Chapter3.txt:親プロセスよりも前に(通常でも異常でも)終了し、親プロセスがその終了を待たずかつ終了コードを調べることもしない子プロセスは、ゾンビ(または無効)プロセスと呼ばれます。このゾンビ プロセスは、自分のすべてのリソースの解放と終了ステータスを伝えるためだけに残っています。initプロセスの機能の1つは、ゾンビ プロセスを確認しきちんと終わらせることです。したがって、それは時々ゾンビ キラー、またはもっと恐ろしい表現で、child reaper(子供の死神)などと言われます。 Chapter3.txt:プロセスは、完全にプリエンプションするスケジューリングによって制御されています。プロセスをプリエンプションする権限を持つのはカーネルのみです。プロセス同士ではできません。 Chapter3.txt:過去のいろいろな経緯から、PIDの最大値は16ビット数、つまり32768に制限されています。/proc/sys/kernel/pid_maxを変更することでこの値を変更することができます。大規模なサーバーでは、デフォルトの最大値では足りない場合があるためです。プロセスが生成され続けて行くと、最終的にその数はpid_maxになります。そうすると再びPID = 300から割り当てられます。 Chapter3.txt:プロセス属性 Chapter3.txt:すべてのプロセスには特定の属性があります。 Chapter3.txt:実行中のプログラム Chapter3.txt:コンテキスト(状態) Chapter3.txt:パーミッション Chapter3.txt:関連リソース Chapter3.txt:すべてのプロセスが何らかのプログラムを実行しています。プロセスは、CPUレジスタの状態、プログラム内で実行されている箇所、プロセスのメモリの内容、およびその他の情報を補足することにより、いつでも自身のスナップショットを取ることができます。このスナップショットがプロセスのコンテキストです。 Chapter3.txt:CPU時間を他のユーザーと共有するときに(または、ユーザーが要求やデータの到着を待つなどの条件が満たされるまでスリープ状態になるときに)、プロセスをスケジュールすることができます。コンテキストの切り替えを行うカーネルには、プロセスをスワップ アウトするときにコンテキスト全体を格納し、実行を再開したときに復元できることが求められます。 Chapter3.txt:すべてのプロセスには、実行のために呼び出したユーザーに基づいたパーミッションがあります。また、プログラム ファイルの所有者に基づいたパーミッションもあります。「s」実行ビットでマークされたプログラムには、「実効」ユーザーIDとは異なる「実」ユーザーIDがあります。これらのプログラムは、setuidプログラムと呼ばれます。これらはプログラムを所有するユーザーのユーザーIDで実行されます。これに対して非setuidプログラムは、プログラムを開始したユーザーのパーミッションの範囲内で実行されます。ただし、rootが所有するsetuidプログラムの実行は、セキュリティ上の問題になる可能性があります。 Chapter3.txt:setuidプログラムの例として、passwdコマンドがあります。これはすべてのユーザーが実行できます。ユーザーがこのプログラムを実行すると、プロセスはroot権限で実行され、ユーザーのパスワードが保持されている書き込み制限があるファイル/etc/passwdと/etc/shadowを更新できるようになります。 Chapter3.txt:すべてのプロセスは、割り当てられたメモリ、ファイル ハンドラなどのリソースを持っています。 Chapter3.txt:プロセス リソースの分離 Chapter3.txt:プロセスが開始されると、そのプロセスは他のプロセスから保護するために独自のユーザー空間を持ちます。これにより、セキュリティが向上し、安定性が向上します。 Chapter3.txt:プロセスはハードウェアに直接アクセスできません。ハードウェアはカーネルによって管理されるため、プロセスはシステムコールを使用して間接的にハードウェアにアクセスします。システムコールは、アプリケーションとカーネルの間の基本的なインターフェイスです。 Chapter3.txt:ulimitでプロセスを制御する Chapter3.txt:ulimit は組み込みbashコマンドで、シェルで実行されるプロセスに関連する多くのリソース制限を表示または再設定します。以下のスクリーンショットで、ulimit で -a 引数を指定して 得られる内容を確認できます。 Chapter3.txt:ulimit -a コマンドとその出力のスクリーンショット Chapter3.txt:システム管理者は、以下の理由で、これらの値の一部を変更する場合があります。 Chapter3.txt:個々のユーザーやプロセスが、メモリ、CPU時間、システム上のプロセスの最大数などのシステム リソースを使い果たすことがないように、機能を制限するため。 Chapter3.txt:プロセスがリソースの限界に達しないように機能を拡張するため。たとえば、多くのクライアントを処理するサーバーでは、デフォルトの1024個のファイルを開くと、サーバーの作業を実行できなくなる場合があります。 Chapter3.txt:制限には次の2種類があります。 Chapter3.txt:ハード Chapter3.txt:ユーザーが引き上げることができるリソース制限の最大値。rootユーザーのみが設定できます。 Chapter3.txt:$ ulimit -H -n Chapter3.txt:4096 Chapter3.txt:ソフト Chapter3.txt:現在の制限値。一般ユーザーが変更できますが、ハードの制限を超えることはできません。 Chapter3.txt:$ ulimit -S -n Chapter3.txt:1024 Chapter3.txt:以下を実行することにより、特定の制限値を設定できます。 Chapter3.txt:$ ulimit [options] [limit] Chapter3.txt:例えば Chapter3.txt:$ ulimit -n 1600 Chapter3.txt:同時に開くことができるファイルの最大数が1600になります。 Chapter3.txt:変更は現在のシェルにのみ影響することに注意してください。ログインしているすべてのユーザーに有効な変更を加えるには、/etc/security/limits.conf(とても良いドキュメントを内包しています)を変更してから再起動する必要があります。 Chapter3.txt:プロセスの状態 Chapter3.txt:プロセスの状態は数種類あります。スケジューラはすべてのプロセスを管理します。プロセスの状態は、プロセス リストによって知るとができます。 Chapter3.txt:主なプロセスの状態については、各ボックスをクリックして展開して見てください。 Chapter3.txt:主なプロセス状態 Chapter3.txt:Running Chapter3.txt:プロセスは現在、CPUまたはCPUコアで実行中か、実行キューにいて新しいタイム スライスの割り当てを待っています。スケジューラがCPUを占有するべきと判断した場合、または別のCPUがアイドル状態になり、スケジューラがそのCPUにプロセスを移行した場合、実行を再開します。 Chapter3.txt:Sleeping(すなわち Waiting) Chapter3.txt:プロセスは、リクエスト(通常は I/O)が実行されるのを待っている状態です。リクエストが完了するまで待ち続けます。リクエストが完了すると、カーネルはプロセスを起動し、実行キューに戻します。スケジューラはCPUのタイム スライスを与えます。 Chapter3.txt:Stopped Chapter3.txt:プロセスは中断されています。この状態は、プログラマが実行中のプログラムのメモリ、CPUレジスタ、フラグ、またはその他の属性を調べたい場合によく発生します。これが完了すると、プロセスを再開できます。この状態には、通常、プロセスがデバッガの下で実行されているとき、またはユーザーがCtrl-Zを押したときになります。 Chapter3.txt:Zombie(ゾンビ) Chapter3.txt:プロセスは終了時にこの状態になります。そして、他のプロセス(通常は親)がその終了状態について問い合わせをしない、すなわち刈り取りをしないことがあります。このようなプロセスは、存在しないプロセスとも呼ばれます。ゾンビ プロセスは、終了状態とプロセス テーブル内のエントリを除き、すべてのリソースを解放しています。プロセスの親が停止すると、そのプロセスはinit(PID = 1)またはkthreadd(PID = 2)の子供になります。 Chapter3.txt:実行モード Chapter3.txt:いつでも、プロセス(またはマルチスレッド プロセスの特定のスレッド)は、ユーザー モードまたはシステム モードで実行できます。カーネル開発者は通常、システム モードをカーネル モードと呼びます。 Chapter3.txt:実行できる命令はモードによって異なり、ソフトウェアではなくハードウェア レベルで実行されます。 Chapter3.txt:モードはシステムの状態ではありません。これはプロセッサの状態です。マルチコアまたはマルチCPUシステムでは、各ユニットが個別に独自の状態になることができます。 Chapter3.txt:Intelの用語では、ユーザー モードはリング3と呼ばれ、システム モードはリング0と呼ばれます。 Chapter3.txt:ユーザー モード Chapter3.txt:システムコールを実行する場合を除き、プロセスはユーザー モードで実行されます。ユーザー モードはカーネル モードよりも権限が低くなります。 Chapter3.txt:プロセスが開始されると、そのプロセスは他のプロセスから保護するために独自のユーザー空間を持ちます。これにより、セキュリティが向上し、安定性が向上します。これは、プロセス リソースの分離と呼ばれることもあります。 Chapter3.txt:ユーザー モードで実行する各プロセスには独自のメモリ空間があり、その一部は他のプロセスと共有できます。共有メモリ セグメントを除き、ユーザー プロセスは他のプロセスのメモリ空間の読み書きはできません。 Chapter3.txt:rootユーザーによって実行される、またはsetuidプログラムとして実行されるプロセスも、ユーザー モードで実行されます。システムコールにジャンプする場合を除き、ハードウェアにアクセスする機能は限られています。 Chapter3.txt:図 システムコール Chapter3.txt:カーネル(システム)モード Chapter3.txt:カーネル(システム)モードでは、CPUは、周辺機器、メモリ、ディスクなど、システム上のすべてのハードウェアに完全にアクセスできます。アプリケーションがこれらのリソースにアクセスする必要がある場合、システムコールを発行する必要があります。これにより、ユーザー モードからカーネル モードへのコンテキスト切り替えが発生します。ファイルの読み取りや書き込み、新しいプロセスの生成などを行う場合は、この手順に従う必要があります。 Chapter3.txt:アプリケーション コードはカーネル モードで実行されることはなく、カーネル コードであるシステムコールのみが実行されます。システムコールが終了すると戻り値が生成され、プロセスは逆コンテキスト スイッチでユーザー モードに戻ります。 Chapter3.txt:ハードウェア割り込みを処理したり、システムのスケジューリング ルーチンやその他の管理タスクを実行したりするときなど、プロセスとは関係なくシステムがカーネル モードにある場合もあります。 Chapter3.txt:デーモン Chapter3.txt:デーモン プロセスは、ユーザーにシステムの特定サービスを提供することを唯一の目的とする、バックグラウンド プロセスです。 Chapter3.txt:デーモンは、必要なときにのみ動作するため非常に効率的です。 Chapter3.txt:多くのデーモンはブート時に開始されます。 Chapter3.txt:デーモンの名前の多くは(常にではありませんが)最後にdが付きます。 Chapter3.txt:例えば、httpdやsystemd-udevdがあります。 Chapter3.txt:デーモンは、外部イベント(systemd-udevd)や経過時間(crond)の影響を受ける場合があります。 Chapter3.txt:通常、デーモンには制御用端末や標準入出力デバイスはありません。 Chapter3.txt:デーモンは、より優れたセキュリティ制御を提供する場合があります。 Chapter3.txt:SysVinitを使用すると、/etc/init.dディレクトリ内のスクリプトがさまざまなシステム デーモンを起動します。/etc/init.d/functionsファイルで定義されたdaemonという名前のシェル関数が、これらのスクリプトを引数としてコマンドを呼び出します。 Chapter3.txt:プロセスの生成 Chapter3.txt:通常のLinuxシステムは常に新しいプロセスを生成しています。これはforkとも呼ばれます。元の親プロセスは実行を続けながら、新しい子プロセスが開始されます。 Chapter3.txt:親プロセスのプロセスIDはそのままで、子プロセスに新しいプロセスIDが割り振られ、親プロセスに通知されます。多くの場合、forkで新しく生成された子プロセスではexecを発行し、実行するイメージに置き換えて実行します。forkとexecという用語は頻繁に使用され、人々は時々それを1つの単語のように使います。 Chapter3.txt:古いUNIXシステムは、spawnと呼ばれるプログラムをよく使用しました。forkやexecと多くの点で似ていますが、詳細が異なります。これはPOSIX標準の一部でもLinuxの一部でもありません。 Chapter3.txt:新しいプロセスがどのように開始されるかを知る例としては、多くのクライアントを処理するウェブ サーバーが良いでしょう。ウェブ サーバーは、クライアントとの新しい接続が確立されるたびに新しいプロセスを起動します。一方、同じプロセスの一部として新しいスレッドのみを開始する場合もあります。Linuxでは、各メカニズムはほぼ同じ時間・同じ量のリソースを使用するため、完全なプロセスを生成する場合と新しいスレッドを生成するという点では、メモリ管理以外は、技術レベルでそれほど大きな違いはありません。 Chapter3.txt:別の例として、initプロセスがsshd initスクリプトを実行するとsshdデーモンが開始されます。このsshd initスクリプトはsshdデーモンの起動を担当します。このデーモン プロセスは、リモート ユーザーからのsshリクエストを受け取ります。 Chapter3.txt:リクエストが受信されると、sshdはリクエスト処理のために自身の新しいコピーを生成します。各リモート ユーザーは自分用のsshdデーモンのコピーと対話して、リモート ログインを行います。sshdプロセスはログイン プログラムを起動して、リモート ユーザーを認証します。認証が成功すると、ログイン プロセスはシェル(bash)からforkしてユーザー コマンドなどを処理します。 Chapter3.txt:内部カーネル プロセスは、バッファがディスクに確実に書き込みできるようにする、さまざまなCPUの負荷のバランスを均等にする、デバイス ドライバがキューに入れた作業を処理する、などのメンテナンス作業を処理します。これらのプロセスは、システムが実行されている限り実行され、実行されない時はスリープします。 Chapter3.txt:外部プロセスは、通常のアプリケーションのようにユーザー空間で実行されます。ただし、カーネルが開始したプロセスです。これは非常にまれなケースであり、通常はすぐ終了します。 Chapter3.txt:どのプロセスがこの性質を持っているかは、次のコマンドを実行すると簡単にわかります。 Chapter3.txt:$ ps -elf Chapter3.txt:システム上のすべてのプロセスを、親プロセスIDも表示するように一覧表示すると、それらはPPID = 2になっており、kthreaddであることを指しています。kthreaddはプロセスを生成する内部カーネル スレッドです。 カーネル スレッドの名前は [ksoftirqd/0] のように角括弧でカプセル化されて表示されます。 Chapter3.txt:コマンド シェルでのプロセスの生成 Chapter3.txt:ユーザーがbashなどのコマンド シェル インタープリタでコマンドを実行するとどうなると思いますか? Chapter3.txt:新しいプロセスが生成されます(ユーザーのログイン シェルから分岐します)。 Chapter3.txt:waitシステムコールは、親シェル プロセスをスリープ状態にします。 Chapter3.txt:コマンドは、execシステムコールによって子プロセスの空間にロードされます。つまり、子プロセスのメモリ空間にあるbashプログラムをコマンド コードに置き換えます。 Chapter3.txt:コマンドの実行が完了したら、子プロセスはexitシステムコールにより停止します。 Chapter3.txt:親シェルは、子プロセスの終了によって再起動され、新しいシェル プロンプトの発行に進みます。 Chapter3.txt:そして、親シェルは、ユーザーからの次のコマンド リクエストを待つというサイクルが繰り返されます。 Chapter3.txt:バックグラウンド処理のコマンドが発行された場合(コマンド ラインの最後にアンパサンド「&」をつけて発行します)、親シェルはwaitリクエストをスキップして、新しいシェル プロンプトをすぐに発行でき、バックグラウンド プロセスを並行して実行できます。それ以外のフォアグラウンドのリクエストに対しては、親シェルは、子プロセスが終了するかシグナルによって停止するまで待つことになります。 Chapter3.txt:一部のシェル コマンド(echoやkillなど)はシェル自身に組み込まれた機能であり、プログラム ファイルの読み込みはありません。これらのコマンドに対して、forkやexecは発行されません。 Chapter3.txt:niceを使用した優先順位の設定 Chapter3.txt:niceとreniceコマンドを使用して、プロセスの優先順位を制御できます。UNIXの初期の頃から、niceプロセスは優先順位を他のプロセスより下げるために使われてきました。したがって、niceの値が高いほど優先度は低くなります。 Chapter3.txt:nice値の範囲は、-20(最高の優先順位)から+19(最低の優先順位)までです。niceの実行方法は次のとおりです。 Chapter3.txt:$ nice -n 5 command [ARGS] Chapter3.txt:これにより、commandのnice値が5上がります。 これは以下と同じです。 Chapter3.txt:$ nice -5 command [ARGS] Chapter3.txt:niceコマンドでnice値を指定しないと、デフォルトとしてnice値は10加算されます。引数を指定しない場合は、現在のnice値が報告されます。例: Chapter3.txt:$ nice Chapter3.txt:0 Chapter3.txt:$ nice cat & Chapter3.txt:[1] 24908 Chapter3.txt:$ ps -l Chapter3.txt:F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD Chapter3.txt:0 S 500 4670 4603 0 80 0 - 16618 wait pts/0 00:00:00 bash Chapter3.txt:0 S 500 24855 4670 0 80 0 - 16560 wait pts/0 00:00:00 bash Chapter3.txt:0 T 500 24908 24855 0 90 10 - 14738 signal pts/0 00:00:00 cat Chapter3.txt:0 R 500 24909 24855 0 80 0 - 15887 - pts/0 00:00:00 ps Chapter3.txt:プロセスのnice値を上げても、実行されないわけではありません。競合するものが他にない場合は、すべてのCPU時間を取得することもあります。 Chapter3.txt:-20〜19の範囲外の大きな増減の値を指定すると、範囲外の値は切り捨てられます。 Chapter3.txt:nice値の変更 Chapter3.txt:reniceは、既に実行しているプロセスのnice値の増減に使用されます。基本的に、その場でnice値を変更できます。 Chapter3.txt:$ renice --help Chapter3.txt:Usage: Chapter3.txt: renice [-n] [-p|--pid] ... Chapter3.txt: renice [-n] -g|--pgrp ... Chapter3.txt: renice [-n] -u|--ユーザー <ユーザー>... Chapter3.txt:pid 20003のnice値を5上げます。 Chapter3.txt:$ renice +5 -p 20003 Chapter3.txt:デフォルトでは、スーパーユーザーだけがnice値を下げることができます。これは、優先度を上げることです。ただし、/etc/security/limits.confを編集すれば、一般のユーザーでも所定の範囲内でnice値を下げることができます。 Chapter3.txt:非特権ユーザーがnice値を上げた後では、スーパーユーザーだけがそれを下げることができます。同時に複数のプロセスで実行できますし、他にもいくつかのオプションがあるので、man reniceを参照してください。 Chapter3.txt:デモ:reniceを使用して優先順位を設定する Chapter3.txt:このビデオでは、プロセスのnice値や優先度を確認する方法、およびreniceコマンドを使用して実行中にnice値を変更する方法を示します。 Chapter3.txt:静的ライブラリと共有ライブラリ Chapter3.txt:プログラムはライブラリ コードで構築されています。ライブラリは複数の目的のために開発され、多くのコンテキストで使用および再使用しています。 Chapter3.txt:クリックして各カードを反転し、2種類のライブラリを確認します。 Chapter3.txt:静的ライブラリ Chapter3.txt:ライブラリ関数のコードはコンパイル時にプログラムに挿入されます。その後で、ライブラリが更新されても変更されません。 Chapter3.txt:共有ライブラリ Chapter3.txt:ライブラリ関数のコードは実行時にプログラムに読み込まれます。ライブラリが後で変更された場合、実行中のプログラムは新しいライブラリを使って実行します。 Chapter3.txt:共有ライブラリは、多くのアプリケーションが同時に使用できるため効率的です。メモリ使用量、実行可能サイズ、アプリケーションのロード時間が削減されます。 Chapter3.txt:共有ライブラリは、ダイナミック リンク ライブラリ(DLL)とも呼ばれます。 Chapter3.txt:共有ライブラリのバージョン Chapter3.txt:共有ライブラリは慎重にバージョン管理する必要があります。ライブラリに大きな変更があり、プログラムがそれに対応できていない場合、深刻な問題の発生が予想されるからです。これは、DLL地獄(DLL Hell)と呼ばれることもあります。 Chapter3.txt:それを避けるために、プログラムはシステム上の最新バージョンではなく、特定のメジャーなライブラリ バージョンを要求できます。しかしながら、通常、大抵のプログラムは常に最新のマイナー バージョンを使用するでしょう。 Chapter3.txt:一部のアプリケーション プロバイダは、これらの問題を回避するために、プログラムにバンドルされている静的ライブラリを使用します。ただしこの場合、ライブラリが改善またはバグやセキュリティホールの修正がされても、タイムリーにアプリケーションに反映されないことがあります。 Chapter3.txt:共有ライブラリの拡張子は.soです。通常、フルネームはlibc.so.Nのような形で表されます。Nはメジャー バージョン番号を示します。 Chapter3.txt:Linuxでは、共有ライブラリは慎重にバージョン管理されています。例えば、 Chapter3.txt:c7:/usr/lib64>ls -lF libgdbm.so* Chapter3.txt:lrwxrwxrwx 1 root root 16 Apr 9 2015 libgdbm.so -> libgdbm.so.4.0.0* Chapter3.txt:lrwxrwxrwx 1 root root 16 Apr 9 2015 libgdbm.so.4 -> libgdbm.so.4.0.0* Chapter3.txt:-rwxr-xr-x 1 root root 36720 Jan 24 2014 libgdbm.so.4.0.0* Chapter3.txt:c7:/usr/lib64> Chapter3.txt:そのため、プログラムがlibgdmだけを要求する場合はlibgdm.soを取得し、それ以外の場合は特定のメジャー バージョンとマイナー バージョンを取得します。 Chapter3.txt:共有ライブラリの検索 Chapter3.txt:共有ライブラリを使用するプログラムは、実行時にそれらを見つける必要があります。 Chapter3.txt:lddを使用して、実行可能なファイルが要求する共有ライブラリが何かを確認できます。ライブラリのsonameとそれが実際に何のファイルを指すかを示します。 Chapter3.txt:ldd /usr/bin/vi コマンドとその出力のスクリーンショット Chapter3.txt:ldconfigは通常、/etc/ld.so.confを使用してブート時に実行されます(それ以外にもいつでも実行できます)。/etc/ld.so.confには、共有ライブラリを検索するためのディレクトリのリストがあります。ldconfigはルート権限で実行する必要があります。共有ライブラリは、安定していて有用な場合のみシステム ディレクトリに格納します。 Chapter3.txt:リンカーは、ldconfigによって構築されたデータベースを検索する以外に、PATH変数のようにコロンで区切られた、ディレクトリのリストの環境変数LD_LIBRARY_PATHで指定されたディレクトリを最初に検索します。たとえば、次のようにできます。 Chapter3.txt:$ LD_LIBRARY_PATH=$HOME/foo/lib ; foo [args] Chapter3.txt:または Chapter3.txt:$ LD_LIBRARY_PATH=$HOME/foo/lib foo [args] Chapter3.txt:演習 Chapter3.txt:課題 3.1: ulimitでプロセスを制御する Chapter3.txt:🚩 Chapter3.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter3.txt:【【これ以降は橋本さんの訳を参照】】 Chapter3.txt:Please do: Chapter3.txt:$ help ulimit Chapter3.txt:and read /etc/security/ limits.conf before doing the following steps. Chapter3.txt:1. Start a new shell by typing bash (or opening a new terminal) so that your changes are only effective in the new shell.View the current limit on the number of open files and explicitly view the hard and soft limits. Chapter3.txt:2. Set the limit to the hard limit value and verify if it worked. Chapter3.txt:3. Set the hard limit to 2048 and verify it worked. Chapter3.txt:4. Try to set the limit back to the previous value. Did it work? Chapter3.txt:Solution 3.1 Chapter3.txt:1.$ bash Chapter3.txt:$ ulimit -n Chapter3.txt:1024 Chapter3.txt:$ ulimit -S -n Chapter3.txt:1024 Chapter3.txt:$ ulimit -H -n Chapter3.txt:4096 Chapter3.txt:2.$ ulimit -n hard Chapter3.txt:$ ulimit -n Chapter3.txt:4096 Chapter3.txt:3.$ ulimit -n 2048 Chapter3.txt:$ ulimit -n Chapter3.txt:2048 Chapter3.txt:4.$ ulimit -n 4096 Chapter3.txt:bash: ulimit: open files: cannot modify limit: Operation not permitted Chapter3.txt:$ ulimit -n Chapter3.txt:2048 Chapter3.txt:You can’t do this anymore! Chapter3.txt:Note that if we had chosen a different limit, such as stack size (-s) we could raise back up again as the hard limit is unlimited. Chapter3.txt:課題 3.2: System VのIPCの動作を確認する Chapter3.txt:🚩 Chapter3.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter3.txt:Exercise 3.2: Examining System V IPC Activity Chapter3.txt:System V IPCis a rather old method ofInterProcessCommunication that dates back to the early days ofUNIX. It involvesthree mechanisms: Chapter3.txt:1.Shared メモリ Segments Chapter3.txt:2.Semaphores Chapter3.txt:3.Message Queues Chapter3.txt:More modern programs tend to use POSIX IPC methods for all three of these mechanisms, but there are still plenty ofSystemV IPCapplications found in the wild. Chapter3.txt:To get an overall summary of System V IPC activity on your system, do: Chapter3.txt:$ ipcs Chapter3.txt:------ Message Queues -------- Chapter3.txt:key msqid owner perms used-bytes messages Chapter3.txt:------ Shared Memory Segments -------- Chapter3.txt:key shmid owner perms bytes nattch status Chapter3.txt:0x01114703 0 root 600 1000 6 Chapter3.txt:0x00000000 98305 coop 600 4194304 2 dest Chapter3.txt:0x00000000 196610 coop 600 4194304 2 dest Chapter3.txt:0x00000000 23068675 coop 700 1138176 2 dest Chapter3.txt:0x00000000 23101444 coop 600 393216 2 dest Chapter3.txt:0x00000000 23134213 coop 600 524288 2 dest Chapter3.txt:0x00000000 24051718 coop 600 393216 2 dest Chapter3.txt:0x00000000 23756807 coop 600 524288 2 dest Chapter3.txt:0x00000000 24018952 coop 600 67108864 2 dest Chapter3.txt:0x00000000 23363593 coop 700 95408 2 dest Chapter3.txt:0x00000000 1441811 coop 600 2097152 2 dest Chapter3.txt:------ Semaphore Arrays -------- Chapter3.txt:key semid owner perms nsems Chapter3.txt:0x00000000 98304 apache 600 1 Chapter3.txt:0x00000000 131073 apache 600 1 Chapter3.txt:0x00000000 163842 apache 600 1 Chapter3.txt:0x00000000 196611 apache 600 1 Chapter3.txt:0x00000000 229380 apache 600 1 Chapter3.txt:Note almost all of the currently running shared memory segments have a key of0(also known asIPC_PRIVATE) which meansthey are only shared between processes in a parent/child relationship. Furthermore, all but one are marked for destructionwhen there are no further attachments. Chapter3.txt:One can gain further information about the processes that have created the segments and last attached to them with: Chapter3.txt:$ ipcs -p Chapter3.txt:------ Message Queues PIDs -------- Chapter3.txt:msqid owner lspid lrpid Chapter3.txt:------ Shared Memory Creator/Last-op PIDs -------- Chapter3.txt:shmid owner cpid lpid Chapter3.txt:0 root 1023 1023 Chapter3.txt:98305 coop 2265 18780 Chapter3.txt:196610 coop 2138 18775 Chapter3.txt:23068675 coop 989 1663 Chapter3.txt:23101444 coop 989 1663 Chapter3.txt:23134213 coop 989 1663 Chapter3.txt:24051718 coop 20573 1663 Chapter3.txt:23756807 coop 10735 1663 Chapter3.txt:24018952 coop 17875 1663 Chapter3.txt:23363593 coop 989 1663 Chapter3.txt:1441811 coop 2048 20573 Chapter3.txt:Thus, by doing: Chapter3.txt:$ ps aux |grep -e 20573 -e 2048 Chapter3.txt:coop 2048 5.3 3.7 1922996 305660 ? Rl Oct27 77:07 /usr/bin/gnome-shell Chapter3.txt:coop 20573 1.9 1.7 807944 141688 ? Sl 09:56 0:01 /usr/lib64/thunderbird/thunderbird Chapter3.txt:coop 20710 0.0 0.0 112652 2312 pts/0 S+ 09:57 0:00 grep --color=auto -e 20573 -e 2048 Chapter3.txt:we see thunderbirdis using a shared memory segment created bygnome-shell. Chapter3.txt:Perform these steps on your system and identify the various resources being used and by who. Are there any potentialleaks(shared resources no longer being used by any active processes) on the system? For example, doing: Chapter3.txt:$ ipcs Chapter3.txt:.... Chapter3.txt:----- Shared Memory Segments -------- Chapter3.txt:key shmid owner perms bytes nattch status Chapter3.txt:.... Chapter3.txt:0x00000000 622601 coop 600 2097152 2 dest Chapter3.txt:0x0000001a 13303818 coop 666 8196 0 Chapter3.txt:.... Chapter3.txt:shows a shared memory segment with no attachments and not marked for destruction. Thus it might persist forever, leakingmemory if no subsequent process attaches to it. Chapter3.txt:知識チェック Chapter3.txt:「第3章 - プロセス」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter3.txt:クイズ開始 Chapter3.txt:問題 3.1 Chapter3.txt:オープンするファイルの最大数を2048に変更するコマンドはどれですか? Chapter3.txt:A. nice -n 2048 Chapter3.txt:B. ulimit -n 2048 Chapter3.txt:C. ls -n 2048 Chapter3.txt:問題 3.2 Chapter3.txt:PID = 444のプロセスの優先度を5上げるコマンドはどれですか? 答えをすべて選んでください。 Chapter3.txt:A. renice 5 444 Chapter3.txt:B. renice +5 444 Chapter3.txt:C. nice -5 444 Chapter3.txt:D. nice +5 444 Chapter3.txt:問題 3.3 Chapter3.txt:ゾンビ状態のプロセスとは、どのようなプロセスでしょうか? Chapter3.txt:A. スリープしており、リクエストが完了するのを待っているプロセス Chapter3.txt:B. おそらくデバッガがトレースしているために停止しているプロセス Chapter3.txt:C. 終了したけれど、他のプロセスがその終了状態についてまだ問い合わせていないプロセス Chapter3.txt:D. 親プロセスが停止したけれど、まだPID = 1になっていないため、孤立しているプロセス Chapter30.txt:ユーザー アカウントの管理 Chapter30.txt:はじめに Chapter30.txt:第30章はじめに Chapter30.txt:このビデオでは、この章で説明するトピックの概要を簡単に説明しています。 Chapter30.txt:学習目標 Chapter30.txt:この章の終わりまでに、次のことができるようになります。 Chapter30.txt:個々のユーザー アカウントの目的を説明し、その主な属性をリストできます。 Chapter30.txt:新しいユーザー アカウントを作成し、既存のアカウント プロパティを変更し、アカウントを削除またはロックできます。 Chapter30.txt:ユーザーのパスワードの設定、暗号化、保存の方法、およびセキュリティの目的で時間が経過したパスワードの変更を要求する方法を理解できます。 Chapter30.txt:制限付きシェルと制限付きアカウントの仕組みを説明できます。 Chapter30.txt:rootアカウントの役割と、それをいつ使用するかを理解できます。 Chapter30.txt:Secure Shell(ssh)を使用して、ログインとコマンドを削除できます。 Chapter30.txt:ユーザー アカウントの管理 Chapter30.txt:ユーザー アカウント Chapter30.txt:Linuxシステムでは、複数人で共有して同時にシステムを利用することができるマルチ ユーザー環境を提供します。 Chapter30.txt:個別のユーザー アカウントを持つ目的は次のとおりです。 Chapter30.txt:各ユーザーに、個別の個人用プライベート領域を提供します Chapter30.txt:特定の目的のためのユーザー アカウントを作成します Chapter30.txt:ユーザー間の特権を区別します。 Chapter30.txt:特別なユーザー アカウントの1つとして、システムで何でもできるrootユーザーがあります。被害の大きい間違いが起きることを避けるため、さらにセキュリティ上の理由から、rootアカウントは必要がある場合にだけに限って使用するようにしてください。 Chapter30.txt:一般ユーザーのアカウントは、システムで作業する人向けです。root以外のユーザーがプロセスを実行できるようにする目的で、いくつかのユーザー アカウント(daemonアカウントなど)が存在します。 Chapter30.txt:システム上のユーザーのサブセットが、共通の目的に従ってファイルや特権などを共有できるグループ管理については、次の章で紹介します。 Chapter30.txt:ユーザー アカウントの属性 Chapter30.txt: /etc/passwdファイルには、システムの各ユーザーの基本的なアカウント属性が1行1ユーザーで記述されています。(パスワードと、このファイルについては後で説明します)。例えば、 Chapter30.txt:.... Chapter30.txt:beav:x:1000:1000:Theodore Cleaver:/home/beav:/bin/bash Chapter30.txt:warden:x:1001:1001:Ward Cleaver:/home/warden:/bin/bash Chapter30.txt:dobie:x:1002:1002:Dobie Gillis:/home/dobie:/bin/bash Chapter30.txt:.... Chapter30.txt:クリックして各カードを反転し、ユーザー アカウントの7つの属性について学習しましょう。 Chapter30.txt:ユーザー名 Chapter30.txt:各ユーザーに割り当てられた一意の名前。 Chapter30.txt:ユーザーのパスワード Chapter30.txt:各ユーザーに割り当てられたパスワード。 Chapter30.txt:ユーザー識別番号(UID) Chapter30.txt:ユーザー アカウントに割り当てられた一意の番号。UIDは、ユーザーの特権の決定やアクティビティの追跡など、さまざまな目的でシステムによって使用されます。 Chapter30.txt:グループ識別番号(GID) Chapter30.txt:ユーザーのグループが、プライマリ グループ、プリンシパル グループ、またはデフォルト グループのいずれであるかを示します。 Chapter30.txt:コメントまたはGECOS情報 Chapter30.txt:連絡先情報(氏名、電子メール、オフィス、連絡先番号)のために使用されるコメント フィールドです。(GECOSの意味について意識する必要はありません。これは非常に古い用語です。) Chapter30.txt:ホーム ディレクトリ Chapter30.txt:ほとんどのユーザーにおいて、そのユーザーの実行領域を提供する一意のディレクトリです。通常、このディレクトリはユーザーが所有します。rootユーザー以外はシステム上の /home の下にあります。 Chapter30.txt:ログイン シェル Chapter30.txt:通常、これは/bin/bashや/bin/cshなどのシェル プログラムです。ただし、特別な場合には、代替プログラムがここで参照される場合があります。一般に、本フィールドには任意の実行可能ファイルを指定できます。 Chapter30.txt:useraddを使用したユーザー アカウントの作成 Chapter30.txt:以下のコマンドを実行します。 Chapter30.txt:$ sudo useradd dexter Chapter30.txt:これは、ユーザーIDとグループID、ホーム ディレクトリ、シェルの選択を割り当てるデフォルトのアルゴリズムを使用して、ユーザーdexterのアカウントを作成します。 Chapter30.txt:具体的には、上記のuseraddコマンドにより、次の手順が実行されます。 Chapter30.txt:デフォルトで、UID_MIN(/etc/login.defsで指定)よりも大きい次の利用可能なUIDが、dexterのUIDとして割り当てられます。 Chapter30.txt:GID=UIDを持つdexterというグループも作成され、dexterのプライマリ グループとして割り当てられます。 Chapter30.txt:ホーム ディレクトリ/home/dexterが作成され、dexterが所有者となります。 Chapter30.txt:dexterのログイン シェルは /bin/bashになります。 Chapter30.txt:/etc/skelの内容が/home/dexterにコピーされます。デフォルトでは、/etc/skelにはbashとX Windowシステムの起動ファイルが含まれています。 Chapter30.txt:  dexterのエントリの/etc/shadowファイルのパスワード フィールドには !! もしくは ! のどちらかが設定されるため、管理者はアカウントを使用できるようにパスワードを割り当てる必要があります。 Chapter30.txt:次のように、useraddのオプションを使用すると、デフォルトを簡単に上書きできます。 Chapter30.txt:$ sudo useradd -s /bin/csh -m -k /etc/skel -c "Bullwinkle J Moose" bmoose Chapter30.txt:これは、ユーザー属性の一部にデフォルト以外の明示的な値を与える場合に使います。 Chapter30.txt:ユーザー アカウントの変更と削除 Chapter30.txt:rootユーザーは、userdelを使用してユーザー アカウントを削除できます。 Chapter30.txt:$ sudo userdel morgan Chapter30.txt:ユーザーmorganのすべての情報が、/etc/passwd、/etc/shadow、/etc/groupから消去されます。 Chapter30.txt:これによりアカウントは削除されますが、後でアカウントが再設定される可能性に備えて、ホーム ディレクトリ(通常は/home/morgan)は削除されません。-rオプションをuserdelで指定すると、ホーム ディレクトリも消去されます。ただし、削除されたユーザーが所有するシステム上の他のすべてのファイルは残ったままです。 Chapter30.txt:usermodは、グループ メンバシップ、ホーム ディレクトリ、ログイン名、パスワード、デフォルト シェル、ユーザーID など、ユーザー アカウントの属性を変更するために使用できます。たとえば、 Chapter30.txt:$ sudo usermod -L dexter Chapter30.txt:このコマンドはdexterのアカウントをロックするので、このユーザー名ではログインできなくなります。 Chapter30.txt:使い方はとても簡単です。usermodは、必要に応じて/etcディレクトリ内のファイルの変更を行うことに注意してください。 Chapter30.txt:usermodの使用例 Chapter30.txt:ロックされたアカウント Chapter30.txt:Linuxには、ロックされたシステム アカウント(bin、daemon、sysなど)があります。つまり、プログラムは実行しますが、システムにログインできず、有効なパスワードもありません。たとえば、/etc/passwdには次のようなエントリがあります。 Chapter30.txt:bin:x:1:1:bin:/bin:/sbin/nologin Chapter30.txt:daemon:x:2:2:daemon:/sbin:/sbin/nologin Chapter30.txt:ロックされたユーザーがシステムにログインしようとすると、nologinシェルは次を返します。 Chapter30.txt:このアカウントは現在利用できません。 Chapter30.txt:または/etc/nologin.txtに保存されているメッセージを、それが何であれ表示します。 Chapter30.txt:このようなロックされたアカウントは、システム サービスまたはアプリケーションによって特別な目的で作成されます。 nologinシェルを使用してユーザーの/etc/passwdを見ると、システム上にどのユーザーがいるかを確認できます。 Chapter30.txt:次のように、特定のユーザーのアカウントをロックすることもできます。 Chapter30.txt:$ sudo usermod -L dexter Chapter30.txt:これにより、これらのアカウントはシステムに残りますが、ログインできなくなります。ロック解除は、-Uオプションを使用して実行できます。 Chapter30.txt:慣例として、ユーザーが組織を離れるとき、または長期の休職中は、ユーザーのアカウントをロックしますので、そのような時に使います。 Chapter30.txt:アカウントをロックするもう1つの方法は、chageを使用して、アカウントの有効期限を過去の日付に変更することです。 Chapter30.txt:$ sudo chage -E 2014-09-11 morgan Chapter30.txt:指定する日付が過去の日付の場合、有効期限は無効になります。 Chapter30.txt:ユーザーIDと/etc/passwd Chapter30.txt:システム上の各ユーザーに対して、/etc/passwdの1レコード(1行)に以下のような情報が含まれていることを既に見てきました。 Chapter30.txt:beav:x:1000:1000:Theodore Cleaver:/home/beav:/bin/bash Chapter30.txt:rsquirrel:x:1001:1001:Rocket J Squirrel:/home/rsquirrel:/bin/bash Chapter30.txt:そして、そのフィールドについてもすでに説明しました。各レコードは、コロン(:)で区切られたいくつかのフィールドで構成されています。 Chapter30.txt:username - ユーザーの一意の名前 Chapter30.txt:password - ハッシュされたパスワード(/etc/shadowが使用されていない場合)またはプレースホルダ(/etc/shadowが使用されている場合は「x」) Chapter30.txt:UID - ユーザー識別番号 Chapter30.txt:GID - ユーザーのプライマリ グループ識別番号 Chapter30.txt:comment - コメント領域、通常はユーザーの本名 Chapter30.txt:home - ユーザーのホーム ディレクトリのディレクトリ パス名 Chapter30.txt:shell - ログイン時に呼び出すシェルの絶対パス名 Chapter30.txt:/etc/shadowを使用しない場合、パスワード フィールドにはハッシュされたパスワードが設定されます。使用する場合、プレースホルダ(「x」)が設定されます。 Chapter30.txt:ほとんどのLinuxディストリビューションでは、1000未満の値のユーザーIDを持つアカウントは特別であり、システムに属するとみなされます。通常のユーザー アカウントは1000から始まります。実際の値は(1000という実値ではなく)UID_MINとして定義され、/etc/login.defs内に定義されます。 Chapter30.txt:歴史的にみると、Red Hatから派生したディストリビューションは1000ではなくUID_MIN=500を使用していましたが、RHEL 7以降、より一般的な値である1000が採用されました。 Chapter30.txt:useraddの使用時にユーザーIDが指定されていない場合、システムはUID_MINから始まり1ずつ増やしながらUIDに割り当てます。 Chapter30.txt:さらに、各ユーザーは、デフォルトでUIDと同じ番号であるプライマリ グループIDを取得します。これらは、ユーザー プライベート グループ(UPG)と呼ばれることもあります。 Chapter30.txt:/etc/passwd、/etc/group、または/etc/shadowを直接編集することは避けてください。usermodなどの適切なユーティリティを使用してください。 Chapter30.txt:/etc/shadowを使用する理由 Chapter30.txt:/etc/shadowを使用すると、ユーザーごとにパスワードの有効期限の設定・確認(後で説明します)ができます。同時に、ハッシュされたパスワードのセキュリティを強化することもできます。 Chapter30.txt:/etc/passwdのデフォルトのパーミッションは644(-rw-r--r--)で、誰でもこのファイルを読むことができます。システム プログラムとユーザー アプリケーションは、実行のためにこのファイルの情報を読み取る必要があるため、残念ながらこのパーミッションにする必要があります。これらのシステム プログラムを実行するのは、rootユーザーではないからです。ただし、この ファイルを変更できるのはrootのみです。 Chapter30.txt:しかし、懸念されるのは、ハッシュされたパスワード自体です。それらが/etc/passwdにある場合、誰でもハッシュ化されたパスワードのコピーを作成できます。CrackやJohn the Ripperなどのユーティリティを使用すれば、ハッシュ化されたパスワードから元のテキスト パスワードを推測することができます。これはセキュリティ上のリスクとなります! Chapter30.txt:/etc/shadowのパーミッションの設定は400(-r --------)です。つまり、このファイルにアクセスできるのはrootのみです。これにより、誰かがハッシュされたパスワードを収集することは難しくなります。 Chapter30.txt:説得力のある正当な理由がない限り、/etc/shadowファイルを使用すべきです。 Chapter30.txt:etc/shadow Chapter30.txt:ファイル/etc/shadowには、次のようにユーザーごとに1つのレコード(1行)があります。 Chapter30.txt:daemon:*:16141:0:99999:7::: Chapter30.txt:..... Chapter30.txt:beav:$6$iCZyCnBJH9rmq7P.$RYNm10Jg3wrhAtUnahBZ/mTMg.RzQE6iBXyqaXHvxxbKTYqj.d 9wpoQFuRp7fPEE3hMK3W2gcIYhiXa9MIA9w1:16316:0:99999:7::: Chapter30.txt:コロンで区切られたフィールドは次のとおりです。 Chapter30.txt:username:一意のユーザー名 Chapter30.txt:password:ハッシュ化された(sha512)パスワードの値 Chapter30.txt:lastchange:パスワードが最後に変更された、1970年1月1日からの経過日数 Chapter30.txt:mindays:パスワードを変更できるまでの最小日数 Chapter30.txt:maxdays:パスワードを変更するまでの最大日数 Chapter30.txt:warn:パスワードの有効期限が切れる前の、ユーザーに警告するまでの日数 Chapter30.txt:grace:パスワードが期限切れになってからアカウントが無効になるまでの日数 Chapter30.txt:expire:アカウントが無効になる/無効になるであろう日付 Chapter30.txt:reserved:予約フィールド Chapter30.txt:各レコードのユーザー名は、/etc/passwdで見つかったユーザー名と完全に一致する必要があり、同じ順序で表示される必要があります。 Chapter30.txt:すべての日付は、1970年1月1日(エポック日付)からの日数として保存されます。 Chapter30.txt:パスワード ハッシュは、文字列「$6$」の後に8文字のソルト値が続き、その後に$と88文字(sha512)のパスワード ハッシュが続きます。 Chapter30.txt:パスワード管理 Chapter30.txt:パスワードはpasswdコマンドで変更できます。一般のユーザーは自分のパスワードのみを変更できますが、rootはどのユーザーのパスワードも変更できます。パスワードを入力しても表示されません。画面へのエコー バックが抑制されているためです。 Chapter30.txt:デフォルトでは、選択されたパスワードがpam_pwquality.soでポリシーに合っているか検査され、より良いパスワードの選択ができるようになっています。 Chapter30.txt:一般ユーザーが自分のパスワードを変更する場合は、以下のように行います。 Chapter30.txt:$ passwd Chapter30.txt:Changing password for clyde Chapter30.txt:(current) UNIX password: Chapter30.txt:New UNIX password: Chapter30.txt:Retype new UNIX password: Chapter30.txt:passwd: all authentication tokens updated successfully Chapter30.txt:また、rootが一般ユーザーのパスワードを変更する場合、rootは現在のパスワードの入力を求められないことに留意してください。 Chapter30.txt:$ sudo passwd kevin Chapter30.txt:New UNIX password: Chapter30.txt:Retype new UNIX password: Chapter30.txt:passwd: all authentication tokens updated successfully Chapter30.txt:💡 Chapter30.txt:一般ユーザーは、短すぎるパスワードや辞書の単語に基づいたパスワードなど、不適切なパスワードを設定することは許されません。ただし、rootには許可されています。 Chapter30.txt:パスワードの有効期限の設定・確認(chage) Chapter30.txt:一般的に、パスワードを定期的に変更することが重要であると考えられています。これにより、破られたパスワードを侵入者が使う時間を制限できます。また、これは未使用のアカウントをロックすることにも使用できます。しかし、欠点もあります。ユーザーがこのポリシーを煩わしく思い、絶えず変化するパスワードを忘れないように書き留めてしまい、それによって盗みやすくなることです。 Chapter30.txt:パスワードを管理するユーティリティはchageです。 Chapter30.txt:chage [-m mindays] [-M maxdays] [-d lastday] [-I inactive] [-E expiredate] [-W warndays] user Chapter30.txt:例えば以下のように使います。 Chapter30.txt:$ sudo chage -l dexter Chapter30.txt:$ sudo chage -m 14 -M 30 kevlin Chapter30.txt:$ sudo chage -E 2012-4-1 morgan Chapter30.txt:$ sudo chage -d 0 clyde Chapter30.txt:rootユーザーのみがchageを使用できます。ただし例外が1つあります。このページのスクリーンショットのように、chage -lを実行すれば、すべてのユーザーが有効期限を確認できます。 Chapter30.txt:ユーザーに、次回ログイン時にパスワードを強制的に変更させるには、次のようにします。 Chapter30.txt:$ sudo chage -d 0 USERNAME Chapter30.txt:chageの使用例 Chapter30.txt:制限付きシェル Chapter30.txt:Linuxでは、制限付きシェルを使用できます。これは次のように起動できます。 Chapter30.txt:$ bash -r Chapter30.txt:一部のディストリビューションでは、rbashコマンドを同じ効果をもたらすように定義しています。 Chapter30.txt:制限されたシェルは、標準のシェルよりも厳密に制御された環境で機能しますが、それ以外は普通に機能します。特に制限されるのは以下です。 Chapter30.txt:ユーザーがcdを使用してディレクトリを変更できないようにします。 Chapter30.txt:ユーザーが環境変数SHELL、ENV、PATHを再定義できないようにします。 Chapter30.txt:/で始まる絶対パスまたは実行可能なコマンド名をユーザーが指定することを許可しません。 Chapter30.txt:ユーザーが入力や出力をリダイレクトできないようにします。 Chapter30.txt:💡 Chapter30.txt:他の制限もあります。それらをすべて表示したい場合は、man bashを実行して、RESTRICTED SHELLを検索してください。 Chapter30.txt:制限付きシェルは$HOME/.bash_profileを制限なしで実行するので、ユーザーは/homeディレクトリに対する書き込み権限も実行権限も持つ必要はありません。 Chapter30.txt:/bin/rbashという名前で/bin/bashへのシンボリックリンクを作成し、/etc/passwdで使用することにより、制限付きアカウントを有効にすることもできます。制限付きアカウントについては、次で説明します。 Chapter30.txt:🚩 Chapter30.txt:rbashは安全ではありません! 制限を回避することは実際には非常に簡単であるため、SELinuxの使用などの最新の技術の方がはるかに堅牢です。ここで示す方法に遭遇した時に備えて、説明します。 Chapter30.txt:制限付きシェルの使用を無効にする方法の例があります。そのハッカー ガイドとして、「Escaping Restricted Shell rbash」と「Linux Restricted Shell Bypass」があります。 Chapter30.txt:制限付きシェルを使用すると、誤った安心感を与える可能性があります。 Chapter30.txt:制限付きアカウント Chapter30.txt:ユーザーにアクセスを許可する必要がある場合でも、その範囲を限定すべき場合があります。その時には、制限付きユーザー アカウントを設定すると役立ちます。制限付きアカウントは、次のことを行います。 Chapter30.txt:制限付きシェルを使用します。 Chapter30.txt:利用可能なシステム プログラムとユーザー アプリケーションを制限します。 Chapter30.txt:システム リソースを制限します。 Chapter30.txt:アクセス時間を制限します。 Chapter30.txt:アクセス場所を制限します。 Chapter30.txt:コマンド ラインまたはスクリプトから/bin/bash -rを使用して、制限付きシェルを呼び出すことができます。ただし、/etc/passwdファイルのシェル フィールドには/bin/bash -rと記述できない場合があります。この問題を回避する簡単な方法は、次のいずれかを実行することです。 Chapter30.txt:$ cd /bin ; sudo ln -s bash rbash Chapter30.txt:$ cd /bin ; sudo ln bash rbash Chapter30.txt:$ cd /bin ; sudo cp bash rbash Chapter30.txt:そして、/bin/rbash を /etc/passwd のシェルとして使用します。 Chapter30.txt:このようなアカウントを設定するときは、システム ディレクトリを誤ってPATH環境変数に追加しないでください。追加すると、制限されたユーザーが、制限のないシェルなど他のシステム プログラムを実行できてしまいます。 Chapter30.txt:制限付き(Restricted)アカウントは、 limitedアカウントとも呼ばれます。 Chapter30.txt:rootアカウント Chapter30.txt:rootアカウントは、絶対に必要な場合にのみ管理目的で使用し、通常のアカウントとしては使用しないでください。このアカウントでミスすると、整合性と安定性の両方にとって、そしてシステム セキュリティの面でも、大きな犠牲を払うことになる可能性があります。 Chapter30.txt:セキュリティ上の理由から、デフォルトではネットワークを介したrootログインは禁止されています。ただし、sshを使えばSecure Shellログインが許可されます。sshは/etc/ssh/sshd_configとPAM(Pluggable Authentication Modules)で設定されます。PAMは、pam_securetty.soモジュールと関連する/etc/securettyファイルを使います。PAMについては後で説明します。rootログインは、/etc/securettyにリストされているデバイスからのみ許されます。 Chapter30.txt:通常、すべてのrootアクセスはsuまたはsudoを使って行うことをお勧めします(sudoを使うとすべてのrootアクセスを追跡調査できます)。一部のディストリビューション(Ubuntuなど)は、デフォルトでは、rootアカウントで直接ログインすることが禁止されています。 Chapter30.txt:PAMを使用して、suでrootになることができるユーザーを制限することもできます。また、rootとして実行されたすべてのコマンドのログを記録するように、auditdを設定することも重要です。 Chapter30.txt:SSH Chapter30.txt:同じユーザー名または別のユーザー名を使用して、ネットワーク経由でリモート システムにログインする必要がよくあります。または、リモート マシンとの間でファイルを転送する必要があります。いずれの場合でも、傍受されない安全な方法でこれを行う必要があります。 Chapter30.txt:SSH(Secure SHell)はこの目的を実現するためのものです。SSHは強力なアルゴリズムに基づく暗号化を使用します。適切なsshパッケージがシステムにインストールされているのであれば、sshを使うためにこれ以上セットアップする必要はありません。 Chapter30.txt:使い方の例を示します。リモート システムにサイン オンする場合: Chapter30.txt:$ whoami Chapter30.txt:student Chapter30.txt:$ ssh farflung.com Chapter30.txt:student@farflung.com's password: (type here)$ Chapter30.txt:farflung.comに学生アカウントがあると仮定しています。別のユーザーとしてログインする場合: Chapter30.txt:$ ssh root@farflung.com Chapter30.txt:root@farflung.com's password: (type here) Chapter30.txt:または Chapter30.txt:$ ssh -l root farflung.com Chapter30.txt:root@farflung.com's password: (type here) Chapter30.txt:あるシステムから別のシステムにファイルをコピーする場合: Chapter30.txt:$ scp file.txt farflung.com:/tmp Chapter30.txt:$ scp file.tex student@farflung.com/home/student Chapter30.txt:$ scp -r some_dir farflung.com:/tmp/some_dir Chapter30.txt:(スペースの省略のため、パスワード要求のやり取りは省略しました。この後で説明しますが、暗号化キーを使用して適切に設定した場合、パスワードを入力する必要はありません。) Chapter30.txt:複数のマシンで同時にコマンドを実行する場合: Chapter30.txt:$for machines in node1 node2 node3 Chapter30.txt:do Chapter30.txt: (ssh $machines some_command &) Chapter30.txt:done Chapter30.txt:SSH設定ファイル Chapter30.txt:SSHをいろいろ設定して、その使用をさらに進化させることができます。特に、パスワードなしでログインすることができます。ユーザー固有の設定ファイルは、非表示の.sshディレクトリの各ユーザーのホーム ディレクトリの下に作成されます。 Chapter30.txt:$ ls -l ~/.ssh Chapter30.txt:total 20 Chapter30.txt:-rw-r--r-- 1 hilda hilda 1172 Sep 27 2014 authorized_keys Chapter30.txt:-rw------- 1 hilda hilda 207 Aug 9 2011 config Chapter30.txt:-rw------- 1 hilda hilda 1675 Dec 8 2010 id_rsa Chapter30.txt:-rw-r--r-- 1 hilda hilda 393 Dec 8 2010 id_rsa.pub Chapter30.txt:-rw-r--r-- 1 hilda hilda 1980 Apr 28 07:36 known_hosts Chapter30.txt:このファイルには次の情報が含まれます。 Chapter30.txt:id_rsa:ユーザーの秘密暗号化キー Chapter30.txt:id_rsa.pub:ユーザーの公開暗号化キー Chapter30.txt:authorized_keys:ログインが許可されている公開鍵のリスト Chapter30.txt:known_hosts:過去にログインが許可されたホストのリスト Chapter30.txt:config:さまざまなオプションを指定するための設定ファイル Chapter30.txt:まず、ユーザーはssh-keygenを使用して秘密および公開暗号化キーを生成する必要があります。 Chapter30.txt:$ ssh-keygen Chapter30.txt:Generating public/private rsa key pair. Chapter30.txt:Enter file in which to save the key (/home/hilda/.ssh/id_rsa): Chapter30.txt:Enter passphrase (empty for no passphrase): Chapter30.txt:Enter same passphrase again: Chapter30.txt:Your identification has been saved in /home/hilda/.ssh/id_rsa Chapter30.txt:Your public key has been saved in /home/hilda/.ssh/id_rsa.pub Chapter30.txt:The key fingerprint is:76:da:d3:51:1e:c8:2d:3b:34:28:46:b2:2b:db:d1:c4 hilda@c7 Chapter30.txt:The key's randomart image is: Chapter30.txt:+--[ RSA 2048]----+ Chapter30.txt:| . . | Chapter30.txt:| = o o | Chapter30.txt:| . E . * + | Chapter30.txt:| = . . * . | Chapter30.txt:| . o S . + . | Chapter30.txt:| + o + . o | Chapter30.txt:| . . . o . | Chapter30.txt:| . | Chapter30.txt:| | Chapter30.txt:+-----------------+ Chapter30.txt:これにより、公開キー~/.ssh/id_rsa.pubも生成されます。 Chapter30.txt:秘密鍵は誰とも共有してはいけません! Chapter30.txt:公開鍵は、パスワードなしのアクセスの許可をどのマシンにも与えることができます。他のユーザーがあなたのマシンにアカウントを持っていて、彼らのアカウントにパスワードなしでアクセスを許可したい場合、彼らのすべての公開鍵をauthorized_keysファイルに追加する必要があります。 Chapter30.txt:known_hostsファイルは、sshアクセスがあるたびに徐々に蓄積されます。システムは、sshを介してログインしようとしているユーザーの変化を検出すると、警告を表示し、アクセスを拒否します。authorized_keysファイルには、ユーザーとマシンに関する情報が含まれていることに留意してください。 Chapter30.txt:$ cat authorized_keys Chapter30.txt:ssh-rsa AAAAB3NzaC1yc2EAAAADAQ Chapter30.txt:...0000aSd...hilda@sbc Chapter30.txt:known_hostsにはコンピュータ ノードに関する情報のみが含まれます。 Chapter30.txt:$ cat known_hosts Chapter30.txt:192.30.252.129 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSw Chapter30.txt:....BK6Tb...== Chapter30.txt:man ssh_configページを見れば、ssh設定ファイルに入力できるオプションの種類がわかります。 Chapter30.txt:リモートからのグラフィカル ログイン Chapter30.txt:グラフィカル デスクトップからリモート マシンにログインします。大抵の場合、VNC(Virtual Network Computing)を使用してシステムに接続します。一般的な実装はtigervncです。 Chapter30.txt:これをテストするには、まず、vncパッケージがインストールされていることを確認してください。 Chapter30.txt:$ which vncserver vncviewer Chapter30.txt:/usr/bin/vncserver Chapter30.txt:/usr/bin/vncviewer Chapter30.txt:これらのプログラムが見つからない場合は、次のようにしてインストールする必要があります。 Chapter30.txt:$ sudo [dnf|yum|zypper|apt-get] install tigervnc* Chapter30.txt:適切なパッケージ管理システムを利用してください。(パッケージ名はLinuxディストリビューションによってまちまちです。そのため個々では特定の名前をあげていません、結果的に必要以上のものをインストールすることになるかもしれませんが、パッケーのの数は多くはありません) Chapter30.txt:以下により、一般のユーザーとしてサーバーを起動します。 Chapter30.txt:$ vncserver Chapter30.txt:テストします。 Chapter30.txt:$ vncviewer localhost:2 Chapter30.txt:ただし、現在実行しているものやマシンの構成方法によっては、1、3、4 ...など、2以外の数字を指定する必要があるかもしれません。 Chapter30.txt:リモート マシンから表示するには、少し変える必要があります。 Chapter30.txt:$ vncviewer -via student@some_machine localhost:2 Chapter30.txt:「color profile」のために認証する必要があるという奇妙なメッセージが表示され、パスワードが機能しない場合は、次のようにサーバー マシンのcolordデーモンを強制終了する必要があります。 Chapter30.txt:$ sudo systemctl stop colord Chapter30.txt:これはバグであり(機能ではありません)、一部のディストリビューションおよび一部のシステムでのみ、よくわからない理由で表示されます。 Chapter30.txt:デモ:新しいユーザー アカウントの作成、変更、削除 Chapter30.txt:このビデオでは、Ubuntu 17.04システムで新しいユーザー アカウントを作成、変更、削除する方法を示します。 Chapter30.txt:演習 Chapter30.txt:課題 30.1: ユーザー アカウントの処理 Chapter30.txt:🚩 Chapter30.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter30.txt:【【これ以降は橋本さんの訳を挿入】】 Chapter30.txt:1. Examine /etc/passwd and /etc/shadow, comparing the fields in each file, especially for the normal user account. Chapter30.txt:What is the same and what is different? Chapter30.txt:2. Create auser1account usinguseradd. Chapter30.txt:3. Login asuser1usingssh. You can just do this with: Chapter30.txt:$ ssh user1@localhost Chapter30.txt:It should fail because you need a password foruser1; it was never established. Chapter30.txt:4. Set the password foruser1touser1pwand then try to login again asuser1. Chapter30.txt:5. Look at the new records which were created in the /etc/passwd, /etc/group and the /etc/shadow files Chapter30.txt:.6. Look at the /etc/default/useradd file and see what the current defaults are set to. Also look at the /etc/login.defs file. Chapter30.txt:7. Create a user account for user2 which will use the Korn shell (ksh) as its default shell. (if you do not have /bin/ksh install it or use the Cshell at /bin/csh.) Set the password to user2pw. Chapter30.txt:8. Look at /etc/shadow. What is the current expiration date for the user1 account? Chapter30.txt:9. Use chag eto set the account expiration date of user1 to December 1, 2013. Chapter30.txt:Look at /etc/shadow to see what the new expiration date is. Chapter30.txt:10. Use usermod to lock the user1 account. Chapter30.txt:Look at /etc/shadow and see what has changed about user1’s password. Reset the password to userp1 on the account to complete this exercise. Chapter30.txt:Solution 30.1 Chapter30.txt:1.$ sudo grep student /etc/passwd /etc/shadow Chapter30.txt:/etc/passwd:student:x:1000:100:LF Student:/home/student:/bin/bash Chapter30.txt:/etc/shadow:student:$6$jtoFVPICHhba$iGFFUU8ctrtOGoistJ4/30DrNLi1FS66qnn0VbS6Mvm Chapter30.txt:luKI08SgbzT5.IcOHo5j/SOdCagZmF2RgzTvzLb11H0:16028:0:99999:7::: Chapter30.txt:(You can use any normal user name in the place ofstudent.) About the only thing that matches is the user name field. Chapter30.txt:2.$ sudo useradd user1 Chapter30.txt:3.$ ssh user1@localhost Chapter30.txt:user1@localhost's password: Chapter30.txt:Note you may have to first start up the sshd service as in: Chapter30.txt:$ sudo service sshd restart Chapter30.txt:または Chapter30.txt:$ sudo systemctl restart sshd.service Chapter30.txt:4.$ sudo passwd user1 Chapter30.txt:Changing password for user user1. Chapter30.txt:New password: Chapter30.txt:5.$ sudo grep user1 /etc/passwd /etc/shadow Chapter30.txt:/etc/passwd:user1:x:1001:100::/home/user1:/bin/bash Chapter30.txt:/etc/shadow:user1:$6$OBE1mPMw$CIc7urbQ9ZSnyiniVOeJxKqLFu8fz4whfEexVem2 Chapter30.txt:TFpucuwRN1CCHZ19XGhj4qVujslRIS.P4aCXd/y1U4utv.:16372:0:99999:7::: Chapter30.txt:6. On either RHEL or openSUSE systems for example: Chapter30.txt:$ cat /etc/default/useradd Chapter30.txt:# useradd defaults file Chapter30.txt:GROUP=100 Chapter30.txt:HOME=/home Chapter30.txt:INACTIVE=-1 Chapter30.txt:EXPIRE= Chapter30.txt:SHELL=/bin/bash Chapter30.txt:SKEL=/etc/skel Chapter30.txt:CREATE_MAIL_SPOOL=yes Chapter30.txt:$ cat /etc/login.defs Chapter30.txt:.... Chapter30.txt:We don’t reproduce the second file as it is rather longer, but examine it on your system. Chapter30.txt:7.$ sudo useradd -s /bin/ksh user2 Chapter30.txt:$ sudo passwd user2 Chapter30.txt:Changing password for user user2. Chapter30.txt:New password: Chapter30.txt:8.$ sudo grep user1 /etc/shadow Chapter30.txt:user1:$6$OBE1mPMw$CIc7urbQ9ZSnyiniVOeJxKqLFu8fz4whfEexVem2TFpucuwRN1CCHZ Chapter30.txt:19XGhj4qVujslRIS.P4aCXd/y1U4utv.:16372:0:99999:7::: Chapter30.txt:There should be no expiration date. Chapter30.txt:9.$ sudo chage -E 2013-12-1 user1 Chapter30.txt:$ sudo grep user1 /etc/shadow Chapter30.txt:user1:$6$OBE1mPMw$CIc7urbQ9ZSnyiniVOeJxKqLFu8fz4whfEexVem2TFpucuwRN1CCHZ Chapter30.txt:19XGhj4qVujslRIS.P4aCXd/y1U4utv.:16372:0:99999:7::16040: Chapter30.txt:10.$ sudo usermod -L user1 Chapter30.txt:$ sudo passwd user1 Chapter30.txt:課題 30.2: 制限付きシェルとアカウント Chapter30.txt:🚩 Chapter30.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter30.txt:Exercise 30.2: Restricted Shells and Accounts Chapter30.txt:1. Start a restricted still in your current window with: Chapter30.txt:$ bash -r Chapter30.txt:Try elementary options such as resetting the path or changing directories. Chapter30.txt:2. Set up a restricted account and verify its restricted nature, then clean up. Chapter30.txt:Please Note Chapter30.txt:。On RedHat-based distributions, the above correct behaviour is observed. Chapter30.txt:• As noted earlier, the use of restricted shells is deprecated as they are really not secure and there are better methods available. However, you may run into them which is why we discuss this facility. Chapter30.txt:Solution 30.2 Chapter30.txt:1.c7:/tmp>rbash -r Chapter30.txt:c7:/tmp>cd $HOME Chapter30.txt:rbash: cd: restricted Chapter30.txt:c7:/tmp>PATH=$PATH:/tmp Chapter30.txt:rbash: PATH: readonly variable Chapter30.txt:c7:/tmp>exit Chapter30.txt:exit Chapter30.txt:2.c7:/home/coop>sudo ln /bin/bash /bin/rbash Chapter30.txt:c7:/home/coop>sudo useradd -s /bin/rbash fool Chapter30.txt:c7:/home/coop>sudo passwd fool Chapter30.txt:Changing password for user fool. Chapter30.txt:New password: Chapter30.txt:BAD PASSWORD: The password is shorter than 8 characters Chapter30.txt:Retype new password: Chapter30.txt:passwd: all authentication tokens updated successfully. Chapter30.txt:c7:/home/coop>sudo su - fool Chapter30.txt:Last failed login: Tue Oct 25 14:15:54 CDT 2016 on pts/1 Chapter30.txt:There was 1 failed login attempt since the last successful login. Chapter30.txt:Attempting to create directory /home/fool/perl5 Chapter30.txt:[fool@c7 ̃]$ cd /tmp Chapter30.txt:-rbash: cd: restricted Chapter30.txt:[fool@c7 ̃]$ PATH=$PATH:/tmp Chapter30.txt:-rbash: PATH: readonly variable Chapter30.txt:知識チェック Chapter30.txt:「第30章 - ユーザー アカウントの管理」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter30.txt:クイズ開始 Chapter30.txt:問題 30.1 Chapter30.txt:ユーザーごとにパスワードの有効期限の設定・確認が可能なシステムの場合、ユーザー アカウントをロックする有効な方法は次のうちどれですか? 当てはまるものをすべて選択してください。 Chapter30.txt:A. システムからユーザーのファイルをすべて削除します Chapter30.txt:B. ユーザーのパスワードを、管理者だけが知っている暗号に変更します Chapter30.txt:C. エディタを使用して、ユーザーIDの行を/etc/passwdから削除します Chapter30.txt:D. chageツールを使用してパスワードを期限切れにします Chapter30.txt:E. passwdツールを使用してパスワードをロックします Chapter30.txt:問題 30.2 Chapter30.txt:どのコマンドが、ユーザーthaliaとしてシステムmenningerにログインできますか? 当てはまるものをすべて選択してください。 Chapter30.txt:A. ssh -l thalia menninger Chapter30.txt:B. ssh thalia meninger Chapter30.txt:C. ssh thalia@menninger Chapter30.txt:D. ssh -l thalia@meninger Chapter31.txt:グループ管理 Chapter31.txt:はじめに Chapter31.txt:第31章はじめに Chapter31.txt:Linuxシステムでは、グループと呼ばれるユーザーの集合を形成し、そのメンバに複数の共通の目的を持たせることができます。そのために、特定のファイルとディレクトリを共有し、いくつかの共通の特権を維持します。これにより、システム上の他のユーザーとは分けられ、集合的な意味で世界(the world)と呼ばれる場合があります。グループの使用は、共同プロジェクトの時に非常に役立ちます。 Chapter31.txt:学習目標 Chapter31.txt:この章の終わりまでに、次のことができるようになります。 Chapter31.txt:Linuxユーザーを1つ以上のグループに所属させることが有用である理由を説明できます。 Chapter31.txt:groupadd、groupdel、groupmod、usermodなどのユーティリティを使用して、グループとそのメンバシップを作成、削除、操作できます。 Chapter31.txt:ユーザー プライベート グループを説明できます。 Chapter31.txt:グループ メンバシップの概念を説明できます。 Chapter31.txt:グループ管理 Chapter31.txt:グループとは Chapter31.txt:Linuxシステムでは、グループと呼ばれるユーザーの集合を形成し、そのメンバに複数の共通の目的を持たせることができます。そのために、特定のファイルとディレクトリを共有し、いくつかの共通の特権を維持します。これにより、システム上の他のユーザーとは分けられ、集合的な意味で世界(the world)と呼ばれる場合があります。グループの使用は、共同プロジェクトの時に非常に役立ちます。ユーザーは1つ以上のグループに属します。 Chapter31.txt:グループは/etc/groupで定義されます。これは、ユーザー管理における/etc/passwdと同じ役割をグループに対して果たします。ファイルの各行は次のようになります。 Chapter31.txt:groupname:password:GID:user1,user2,... Chapter31.txt:構文の内容は以下のとおりです。 Chapter31.txt:groupnameはグループの名前です。 Chapter31.txt:passwordは、パスワードです。/etc/gshadowが存在する場合のみ、グループ パスワードを設定できます。 Chapter31.txt:GIDはグループ識別子です。0〜99の値はシステム グループ用です。100からGID_MIN(/etc/login.defsで定義され、通常はUID_MINと同じ)の間の値は、特別な値と見なされます。GID_MINを超える値はUPG(User Private Groups)用です Chapter31.txt:user1,user2,...は、グループのメンバであるユーザーをコンマ区切りしたリストです。このグループがユーザーのプリンシパル グループ(プライマリ グループ)である場合、ユーザーをここにリストする必要はありません。 Chapter31.txt:グループ管理 Chapter31.txt:グループ アカウントは、次のユーティリティで管理および保守できます。 Chapter31.txt:groupadd:新しいグループを追加します。 Chapter31.txt:groupmod:グループ情報を変更し、新しいユーザーを追加します。 Chapter31.txt:groupdel:グループを削除します。 Chapter31.txt:usermod:ユーザーのグループ メンバシップを管理・変更します。 Chapter31.txt:これらのグループ操作ユーティリティは、/etc/groupと(存在する場合は)/etc/gshadowを変更します。rootのみが実行できます。例えば以下のように使います。 Chapter31.txt:$ sudo groupadd -r -g 215 staff Chapter31.txt:$ sudo groupmod -g 101 blah Chapter31.txt:$ sudo groupdel newgroup Chapter31.txt:$ sudo usermod -G student,group1,group2 student Chapter31.txt:🚩 Chapter31.txt:usermod -Gコマンドは十分注意して使ってください。引数のグループ リストは、変更するものだけでなく、完全なグループ リストを指定する必要があります。指定されていないグループは削除されます! 安全に使用するには、新しいメンバを追加するときに、既存のグループ メンバシップを保持する-aオプションを使用する必要があります。 Chapter31.txt:ユーザー プライベート グループ Chapter31.txt:Linuxは、ユーザー プライベート グループ(UPG)を機能を提供します。 Chapter31.txt:UPGの背景にある考え方は、各ユーザーが自分のグループを持つことです。ただし、UPGは個人用であるとは限りません。/etc/groupの他の誰かのプライベート グループにメンバとして追加できます。 Chapter31.txt:デフォルトでは、useraddで作成されたアカウントを持つユーザーは、プライマリGID = UIDを持ち、グループ名もユーザー名と同じです。 Chapter31.txt:/etc/profileを見てもわかるように、UPGで作成されたすべてのユーザーのumaskは002に設定されます。したがって、この方式では、ユーザー ファイルはパーミッション664(rw-rw-r--)で、ディレクトリは775(rwxrwxr-x)で作成されます。umaskについては、次のセクションで説明します。 Chapter31.txt:グループのメンバシップ Chapter31.txt:Linuxユーザーは、1つのプライマリ グループを持っています。これは/etc/passwdと/etc/groupに記載されています。また、ユーザーは0〜15個のセカンダリ グループに所属できます。 Chapter31.txt:プライマリ グループのGIDは、ユーザーがファイルまたはディレクトリを作成する時に常に使用されます。それ以外のセカンダリ グループのメンバーシップは、ユーザーにパーミッションを追加で付与します。 Chapter31.txt:グループのメンバシップは、次のコマンドのいずれかを実行することで識別できます。 Chapter31.txt:$ groups [user1 user2 ...] Chapter31.txt:$ id -Gn [user1 user2 ...] Chapter31.txt:引数なしで実行すると、どちらのコマンドも現在のユーザーについての情報を表示します。デフォルト グループは、ディストリビューションによって異なる場合があることに注意してください。 Chapter31.txt:CentOsの場合: Chapter31.txt:[student@CentOS7 ~]$ groups Chapter31.txt:student Chapter31.txt:Ubuntuの場合: Chapter31.txt:student@ubuntu:~$ groups Chapter31.txt:student adm cdrom sudo dip plugdev lpadmin sambashare libvirt Chapter31.txt:演習 Chapter31.txt:課題 31.1: グループ関係の作業 Chapter31.txt:🚩 Chapter31.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter31.txt:【【これ以降は橋本さんの訳を挿入】】 Chapter31.txt:1. Create two new user accounts (rockyandbullwinklein the below) and make sure they have home directories. Chapter31.txt:2. Create two new groups,friends and bosses (with a GID of 490). Look at/etc/group. See what GID was given toeach new group. Chapter31.txt:3. Add rocky to both new groups.Add bullwinkle to groupfriends.Look in /etc/group to see how it changed. Chapter31.txt:4. Login as rocky. Create a directory called somedir and set the group ownership to bosses. (Using chgrp which will be discussed in the next session.)(You will probably need to add execute privileges for all onrocky’s home directory.) Chapter31.txt:5. Login as bullwinkle and try to create a file in /home/rocky/somedir called somefile using the touch command.Can you do this? No, because of the group ownership and the chmod a+xon the directory. Chapter31.txt:6. Add bullwinkle o the bosses group and try again. Note you will have to log out and log back in again for the new group membership to be effective. do the following: Chapter31.txt:Solution 31.1 Chapter31.txt:1.$ sudo useradd -m rocky $ sudo useradd -m bullwinkle $ sudo passwd rocky Chapter31.txt:Enter new UNIX password: Retype new UNIX password: passwd: Chapter31.txt:password updated successfully Chapter31.txt:$ sudo passwd bullwinkle Chapter31.txt:Enter new UNIX password: Retype new UNIX password: passwd: Chapter31.txt:password updated successfully Chapter31.txt:$ ls -l /home Chapter31.txt:total 12 drwxr-xr-x 2 bullwinkle bullwinkle 4096 Oct 30 Chapter31.txt:09:39 bullwinkle drwxr-xr-x 2 rocky rocky 4096 Oct 30 09:39 Chapter31.txt:rocky drwxr-xr-x 20 student student 4096 Oct 30 09:18 Chapter31.txt:student Chapter31.txt:2.$ sudo groupadd friends $ sudo groupadd -g 490 bosses $ grep Chapter31.txt:-e friends -e bosses /etc/group Chapter31.txt:friends:x:1003: bosses:x:490: Chapter31.txt:3.$ sudo usermod -G friends,bosses rocky $ sudo usermod -G Chapter31.txt:friends bullwinkle Chapter31.txt:$ grep -e rocky -e bullwinkle /etc/group Chapter31.txt:rocky:x:1001: bullwinkle:x:1002: Chapter31.txt:friends:x:1003:rocky,bullwinkle bosses:x:490:rocky Chapter31.txt:$ groups rocky bullwinkle Chapter31.txt:rocky : rocky friends bosses bullwinkle : bullwinkle friends Chapter31.txt:4.$ ssh rocky@localhost $ cd ̃ $ mkdir somedir $ chgrp bosses Chapter31.txt:somedir $ ls -l Chapter31.txt:total 16 -rw-r--r-- 1 rocky rocky 8980 Oct 4 2013 Chapter31.txt:examples.desktop drwxrwxr-x 2 rocky bosses 4096 Oct 30 09:53 Chapter31.txt:somedir Chapter31.txt:$ chmod a+x . Chapter31.txt:5.$ ssh bullwinkle@localhost $ touch Chapter31.txt:/home/rocky/somedir/somefile Chapter31.txt:touch: cannot touch /home/rocky/somedir/somefile: Permission Chapter31.txt:denied Chapter31.txt:$ exit Chapter31.txt:6.$ sudo usermod -a -G bosses bullwinkle $ ssh Chapter31.txt:bullwinkle@localhost $ touch Chapter31.txt:/home/rocky/somedir/somefile $ ls -al Chapter31.txt:/home/rocky/somedir Chapter31.txt:(note ownership of files) Chapter31.txt:知識チェック Chapter31.txt:「第31章 - グループ管理」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter31.txt:クイズ開始 Chapter31.txt:問題 31.1 Chapter31.txt:ユーザーを既存のグループに追加する正しい方法は次のうちどれですか? 当てはまるものをすべて選択してください。 Chapter31.txt:A. vigrを使用して/etc/groupを編集し、最後のフィールドのユーザー名の後ろにカンマを追加して新しいユーザー名を追加します。 Chapter31.txt:B. useradd -G を使用して、新しいユーザーを作成します。 Chapter31.txt:C. 既存の新規ユーザーに対して、usermod -G を使用します。 Chapter31.txt:D. groups -add userを使います。 Chapter32.txt:ファイルのパーミッションと所有権 Chapter32.txt:はじめに Chapter32.txt:第32章はじめに Chapter32.txt:このビデオでは、この章で説明するトピックの簡単な概要を示します。 Chapter32.txt:学習目標 Chapter32.txt:この章の終わりまでに、次のことができるようになります。 Chapter32.txt:所有者、グループ、world(もしくはother)の概念を説明できます。 Chapter32.txt:各カテゴリのファイル アクセス権(読み取り、書き込み、実行)を設定できます。 Chapter32.txt:適切なパーミッションを遵守し、ファイル アクセスのリクエストを認証できます。 Chapter32.txt:chmodを使用してファイルのパーミッションを変更し、chownを使用してユーザーの所有権を変更し、chgrpを使用してグループの所有権を変更できます。 Chapter32.txt:新しく作成されたファイルに必要なパーミッションを設定する際の、umaskの役割を理解できます。 Chapter32.txt:ACLを使用して、シンプルな所有ユーザー/グループ/その他のユーザー、そして読み取り/書き込み/実行というモデルを、拡張することができます。 Chapter32.txt:ファイルのパーミッションと所有権 Chapter32.txt:所有者、グループ、その他のユーザー Chapter32.txt:次のようにls -lを実行すると、a_fileの情報が得られます。 Chapter32.txt:$ ls -l a_file Chapter32.txt:-rw-rw-r-- 1 coop aproject 1601 Mar 9 15:04 a_file Chapter32.txt:最初の文字(ファイル オブジェクトの種類を示します。ここでは-(ダッシュ))の後に、ファイル ユーザーに付与されたアクセス権を示すさらに9つの文字があります。これらはそのファイルの3種類に分類された所有権に対し、それぞれ3文字が付与されたものです。その3種類の所有権とは次のとおりです。 Chapter32.txt:owner:ファイルを所有するユーザー(単にユーザーとも呼ばれます) Chapter32.txt:group:アクセス権を持つユーザーのグループ Chapter32.txt:world:その他のユーザー(otherとも呼ばれます)。 Chapter32.txt:上記の出力リストでは、ユーザーはcoopで、グループはaprojectです。 Chapter32.txt:ファイルのアクセス権 Chapter32.txt:例えば以下のような、1つのファイルの情報を得たとします。 Chapter32.txt:$ ls -l /usr/bin/vi Chapter32.txt:-rwxr-xr-x 1 root root 1206144 Jun 14 08:49 /usr/bin/vi Chapter32.txt:3種類の所有権のそれぞれの3つのエンティティには、次の値を設定することができます。 Chapter32.txt:r:読み取りアクセスが許可されます Chapter32.txt:w:書き込みアクセスが許可されます Chapter32.txt:x:実行アクセスが許可されます。 Chapter32.txt:パーミッションがない場合は、これらの文字の代わりに-(ダッシュ)が表示されます。 Chapter32.txt:さらに、setuid/setgidを行うパーミッションなど、カテゴリごとに他の特殊なパーミッションが存在します。 Chapter32.txt:したがって、前の例では、ユーザーcoopとグループaprojectのメンバには読み取りと書き込みのアクセス権があり、その他のユーザーには読み取りのアクセス権しかないことを表しています。 Chapter32.txt:これらのファイル アクセスのパーミッションは、Linuxセキュリティ システムの重要な部分です。ファイルへのアクセス要求では、要求ユーザーの権限と識別情報をファイルの所有者のものと比較する必要があります。 Chapter32.txt:この認証は、要求ユーザーが3種類の所有権のどれに属しているかによって与えられます。その調べ方は以下のとおりです。 Chapter32.txt:要求ユーザーがファイル所有者である場合、ファイル所有者のパーミッションを使用します。 Chapter32.txt:それ以外の場合で、要求ユーザーがファイルを所有するグループに属している場合、グループのパーミッションを調べます。 Chapter32.txt:それ以外の場合、その他のユーザーのパーミッションを調べます。 Chapter32.txt:chmod Chapter32.txt:ファイル パーミッションの変更は、chmodを使用して行います。スーパーユーザーでない限り、変更できるのは自分が所有するファイルのパーミッションのみです。 Chapter32.txt:chmodを使用するには、さまざまな方法があります。たとえば、所有者とその他のユーザーに実行のパーミッションを付与し、グループの書き込みパーミッションを削除する場合: Chapter32.txt:$ ls -l a_file Chapter32.txt:-rw-rw-r-- 1 coop coop 1601 Mar 9 15:04 a_file Chapter32.txt:$ chmod uo+x,g-w a_file Chapter32.txt:$ ls -l a_file Chapter32.txt:-rwxr--r-x 1 coop coop 1601 Mar 9 15:04 a_file Chapter32.txt:ここで、uはユーザー(所有者)を表し、oはその他のユーザー(world/other)を表し、gはグループを表します。 Chapter32.txt:パーミッションは、通常は8進数で書かれたビットマップ、または記号表記で表すことができます。8進数のビットマップは0755のように、記号表記はu+rwx、g+rx、o+rxのように表されます。 Chapter32.txt:8進数 Chapter32.txt:記号表記の構文表記は入力や覚えるのが難しい場合があるため、多くの場合、8進数の短縮形を使用します。これにより、すべてのパーミッションを1ステップで設定できます。これは単純なアルゴリズムで行われ、3種類のグループのエンティティに3種類のパーミッション ビットすべてを指定するには1桁で十分です。8進数表現は、次の3種類の合計です。 Chapter32.txt:4:読み取りのパーミッション Chapter32.txt:2:書き込みのパーミッション Chapter32.txt:1:実行のパーミッション Chapter32.txt:したがって、7は読み取り/書き込み/実行、6は読み取り/書き込み、5は読み取り/実行のパーミッションが付与されていることを意味します。 Chapter32.txt:これをchmodで適用する場合、次のように各エンティティに上記の値を指定する必要があります。 Chapter32.txt:$ chmod 755 a_file Chapter32.txt:$ ls -l a_file Chapter32.txt:-rwxr-xr-x 1 coop coop 1601 Mar 9 15:04 a_file Chapter32.txt:chmodの使用例 Chapter32.txt:chownとchgrp Chapter32.txt:ファイル所有者の変更はchownで行われ、グループの変更はchgrpで行われます。スーパーユーザーのみがファイルの所有者を変更できます。同様に、ファイルのグループを変更できるのは、変更前と変更後の両方のグループに属しているユーザーだけです。 Chapter32.txt:ファイルの所有グループの変更は、次のように簡単です。 Chapter32.txt:$ chgrp cleavers somefile Chapter32.txt:そして、所有者の変更(スーパーユーザーのみがこれを行うことができます)は次のとおりです。 Chapter32.txt:$ chown wally somefile Chapter32.txt:以下のように、両方を同時に変更できます。 Chapter32.txt:$ chown wally:cleavers somefile Chapter32.txt:所有者とグループはコロン(またはピリオド)で区切ります。 Chapter32.txt:これらの3つのプログラムはすべて、再帰を表す-Rオプションを使用できます。例えば、 Chapter32.txt:$ chown -R wally:cleavers ./ Chapter32.txt:$ chown -R wally:wally subdir Chapter32.txt:最初のコマンドで、現在のディレクトリとそのすべてのサブディレクトリ内のすべてのファイルの所有者とグループを変更します。2番目のコマンドでは、subdirとそのすべてのサブディレクトリの所有者とグループを変更します。 Chapter32.txt:umask Chapter32.txt:ファイルを作成するときに与えられるデフォルトのパーミッションは、所有者、グループ、その他のユーザーのすべてに対して読み取り/書き込み(0666)であり、ディレクトリの場合はすべて読み取り/書き込み/実行(0777)です。では、以下を行ってみてください。 Chapter32.txt:$ touch afile Chapter32.txt:$ mkdir adir Chapter32.txt:$ ls -l | grep -e afile -e adir Chapter32.txt:drwxrwxr-x 2 coop coop 4096 Sep 16 11:18 adir Chapter32.txt:-rw-rw-r-- 1 coop coop 0 Sep 16 11:17 afile Chapter32.txt:実際のパーミッションが、ファイルは664に、ディレクトリは775に変更されていることに気付くでしょう。これは、どのパーミッションを許可しないかを決めるumaskによって変更されています。umaskの現在の値は次の方法で表示できます。 Chapter32.txt:$ umask Chapter32.txt:0002 Chapter32.txt:これは、システム管理者がユーザーに設定する最も一般的な値です。この値は、実際の結果を取得するためにファイル作成許可と組み合わされます。つまり、 Chapter32.txt:0666&〜002=0664、すなわち、rw-rw-r--です。 Chapter32.txt:次のように、umaskコマンドを使用して、いつでもumaskの値を変更できます。 Chapter32.txt:$ umask 0022 Chapter32.txt:デモ:umask Chapter32.txt:このビデオは、umaskの簡単なデモを提供します。 Chapter32.txt:ファイルシステムの ACL Chapter32.txt:Linuxには、よりシンプルなユーザー、グループ、その他のユーザー、そして読み取り、書き込み、実行というモデルを拡張する、POSIX ACL(アクセス制御リスト)の完全な実装が含まれています。 Chapter32.txt:特定のオブジェクトまたはオブジェクトのクラスにアクセスするときに、特定のユーザーまたはユーザーのグループに特定の特権を付与します。ファイルとディレクトリは、777パーミッションを使用しなくても共有できます。 Chapter32.txt:LinuxカーネルでACLの使用を有効にする場合、特定のファイルシステムにもACLを実装する必要があります。最新のLinuxディストリビューションで使用されるすべての主要なファイルシステムにはACL拡張が組み込まれています。マウント時にオプション-aclを指定すれば実装できます。ACLのデフォルト設定は、システムのインストール時に作成されます。 Chapter32.txt:ACLを表示する構文: Chapter32.txt:$ getfacl file|directory Chapter32.txt:例えば以下のように使います。 Chapter32.txt:$ getfacl file1 Chapter32.txt:ACLを設定する構文: Chapter32.txt:$ setfacl options permissions file|ディレクトリ Chapter32.txt:例えば以下のように使います。 Chapter32.txt:$ setfacl -m u:isabelle:rx /home/stephane/file1 Chapter32.txt:$ setfacl -x u:isabelle /home/stephane/file Chapter32.txt:新しいファイルは、それらが存在するディレクトリから、(設定されている場合は)デフォルトのACLを継承することに注意してください。また、mvとcp -pはACLを維持することに注意してください。 Chapter32.txt:ACLを削除する場合は以下のように行います。 Chapter32.txt:$ setfacl -x u:isabelle /home/stephane/file1 Chapter32.txt:また、ディレクトリにデフォルトのACLを設定する場合は以下のように行います。 Chapter32.txt:$ setfacl -m d:u:isabelle:rx somedir Chapter32.txt:演習 Chapter32.txt:課題 32.1: chmodの使用例 Chapter32.txt:🚩 Chapter32.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter32.txt:【【これ以降は橋本さんの訳を参照】】 Chapter32.txt:One can use either the octal digit or symbolic methods for specifying permissions when using chmod. Let’s elaborate somemore on the symbolic method. Chapter32.txt:It is possible to either give permissions directly, or add or subtract permissions. The syntax is pretty obvious. Try the followingexamples: Chapter32.txt:$ chmod u=r,g=w,o=x afile Chapter32.txt:$ chmod u=+w,g=-w,o=+rw afile Chapter32.txt:$ chmod ug=rwx,o=-rw afile Chapter32.txt:After each step do: Chapter32.txt:$ ls -l afileto see how the permissions took, and try some variations. Chapter32.txt:課題 32.2: umask Chapter32.txt:🚩 Chapter32.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter32.txt:Exercise 32.2: umask Chapter32.txt:Create an empty file with: Chapter32.txt:$ touch afile Chapter32.txt:$ ls -l afile Chapter32.txt:-rw-rw-r-- 1 coop coop 0 Jul 26 12:43 afile Chapter32.txt:which shows it is created by default with both read and write permissions for owner and group, but only read for world. Chapter32.txt: Chapter32.txt:If you just type umask you get the current value: Chapter32.txt:$ umask Chapter32.txt:0002 Chapter32.txt:これは、システム管理者がユーザーに設定する最も一般的な値です。この値は、実際の結果を取得するためにファイル作成許可と組み合わされます。つまり、 Chapter32.txt:0666 & ̃002 = 0664; i.e., rw-rw-r-- Chapter32.txt:Try modifying the umask and creating new files and see the resulting permissions, as in: Chapter32.txt:$ umask 0022 Chapter32.txt:$ touch afile2 Chapter32.txt:$ umask 0666 Chapter32.txt:$ touch afile3 Chapter32.txt:$ ls -l afile* Chapter32.txt:課題 32.3: アクセス コントロール リストを使う Chapter32.txt:🚩 Chapter32.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter32.txt:Exercise 32.3: Using Access Control Lists Chapter32.txt:1. Create a file using your usual user name and run getfacl on it to see its properties. Chapter32.txt:2. Create a new user account with default properties (or reuse one from previous exercises. Chapter32.txt:3. Login as that user and try to add a line to the file you created in the first step. This should fail. Chapter32.txt:4. User setfacl to make the file writeable by the new user and try again. Chapter32.txt:5. User setfacl to make the file not readable by the new user and try again. Chapter32.txt:6. Clean up as necessary Chapter32.txt:Solution 32.3 Chapter32.txt:It is probably easiest to open two terminal windows, one to work in as your normal user account, and the other as the secondary one. Chapter32.txt:1. In window 1: Chapter32.txt:$ echo This is a file > /tmp/afile Chapter32.txt:$ getfacl /tmp/afile Chapter32.txt:getfacl: Removing leading'/'from absolute path names Chapter32.txt:# file: tmp/afile Chapter32.txt:# owner: coop Chapter32.txt:# group: coop Chapter32.txt:user::rw- Chapter32.txt:group::rw- Chapter32.txt:other::r-- Chapter32.txt:2. In window 1: Chapter32.txt:$ sudo useradd fool Chapter32.txt:$ sudo passwd fool Chapter32.txt:... Chapter32.txt:3. In window 2: Chapter32.txt:$ sudo su - fool Chapter32.txt:$ echo another line > /tmp/afile Chapter32.txt:-bash: /tmp/afile: Permission denied Chapter32.txt:4. In window 1: Chapter32.txt:$ setfacl -m u:fool:rw /tmp/afile Chapter32.txt:$ getfacl /tmp/afile Chapter32.txt:getfacl: Removing leading'/'from absolute path names Chapter32.txt:# file: tmp/afile Chapter32.txt:# owner: coop Chapter32.txt:# group: coop Chapter32.txt:user::rw- Chapter32.txt:user:fool:rw- Chapter32.txt:group::rw-mask::rwx Chapter32.txt:other::r-- Chapter32.txt:In window 2: Chapter32.txt:$ echo another line > /tmp/afile Chapter32.txt:5. In window 1: Chapter32.txt:$ setfacl -m u:fool:w /tmp/afile Chapter32.txt:In window 2: Chapter32.txt:$ echo another line > /tmp/afile Chapter32.txt:-bash: /tmp/afile: Permission denied Chapter32.txt:6. Cleaning up: Chapter32.txt:$ rm /tmp/afile Chapter32.txt:$ sudo userdel -r fool Chapter32.txt:知識チェック Chapter32.txt:「第32章 - ファイルのパーミッションと所有権」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter32.txt:クイズ開始 Chapter32.txt:問題 32.1 Chapter32.txt:ファイルprivのパーミッションを0664から-rwx------に変更するコマンドは次のうちどれですか? 当てはまるものをすべて選択してください。 Chapter32.txt:A. chown 0700 priv Chapter32.txt:B. chmod 0700 priv Chapter32.txt:C. chmod u+x,g-rw,o-r priv Chapter32.txt:問題 32.2 Chapter32.txt:次のコマンドのうち、ファイルprivのパーミッションを-rwx------から0664に変更するのはどれですか? 当てはまるものをすべて選択してください。 Chapter32.txt:A. chown 0664 priv Chapter32.txt:B. chmod 0664 priv Chapter32.txt:C. chmod u-x,g+rw,o+r priv Chapter33.txt:プラグイン可能な認証モジュール(PAM) Chapter33.txt:はじめに Chapter33.txt:第33章はじめに Chapter33.txt:プラグイン可能な認証モジュール(Pluggable Authentication Modules:PAM)は、ユーザーとアプリケーションを適切に識別し認証するための、統一されたメカニズムを提供します。条件付きルールを適用してパーミッションの範囲を制限し、成功または失敗した場合の対処方法を制御します。PAMはLDAPと連携して、ネットワーク全体の認証を集中化することもできます。 Chapter33.txt:学習目標 Chapter33.txt:この章の終わりまでに、次のことができるようになります。 Chapter33.txt:PAMの使用を動機付ける基本概念を説明できます。 Chapter33.txt:認証プロセスに関係するステップをリストできます。 Chapter33.txt:PAM構成ファイルの使用と変更ができます。 Chapter33.txt:PAMルールの解釈と、新しいルールを作成する方法を知ることができます。 Chapter33.txt:LDAPを適用した、ネットワーク上の分散ディレクトリ サービスの使用と管理ができます。 Chapter33.txt:PAM Chapter33.txt:PAM:認証のための統一されたアプローチ Chapter33.txt:従来、ユーザーの認証は個々のアプリケーションが個別に実行していました。つまり、su, login, sshは、それぞれ独立してユーザー アカウントを認証して成立させていました。 Chapter33.txt:最新のLinuxアプリケーションのほとんどは、PAMを活用するように記述または書き直されており、libpamを使用して一様な方法で認証を行うことができます。 Chapter33.txt:このモジュールのライブラリは、認証、パスワード、セッション、アカウント サービスに関して、非常に高い柔軟性と一貫性を提供します。 Chapter33.txt:PAMには次のコンポーネントが組み込まれています。 Chapter33.txt:PAM対応アプリケーション Chapter33.txt:/etc/pam.d/内の構成ファイル Chapter33.txt:libpam*ライブラリのPAM モジュール。Linuxディストリビューションに応じて異なる場所にあります。 Chapter33.txt:各PAM対応アプリケーションまたはサービスは、/etc/pam.d内のそれぞれの構成ファイルによってPAMに関する設定ができます。 Chapter33.txt:認証と構成ファイル Chapter33.txt:認証にはいくつかの手順が含まれています。 Chapter33.txt:まず、ユーザーは、login、ssh、suなどのPAM対応アプリケーションを呼び出します。 Chapter33.txt:アプリケーションはlibpamを呼び出します。 Chapter33.txt:libpamライブラリは、/etc/pam.d内のファイルをチェックします。これらにはsystem-authを含め、どのPAMモジュールを呼び出すかが設定されています。 Chapter33.txt:参照される各モジュールは、そのアプリケーションに関連する構成ファイルのルールに従って実行されます。 Chapter33.txt:/etc/pam.dの各ファイルはサービスに対応しており、ファイル内の各(コメント化されていない)行は認証に関するルールを指定します。ルールは、スペースで区切られたトークンのリストとして設定されます。最初の2つのトークンは大文字と小文字が区別されません。 Chapter33.txt:type control module-path module-arguments Chapter33.txt:以下は例です。このスクリーンショットは、RHELシステムの/etc/pam.d/suの内容を示しています。 Chapter33.txt:PAM構成ファイル Chapter33.txt:これはスタックであることに注意してください。suにはsystem-authなどをロードする必要があります。 Chapter33.txt:PAMルール Chapter33.txt:PAMモジュールのtypeには、モジュールを関連付けた管理グループを指定します。 Chapter33.txt:auth:ユーザーに識別情報(ユーザー名、パスワードなど)を要求するようにアプリケーションに指示します。そして認証情報を認定し、権限を付与します。 Chapter33.txt:account:パスワードの有効期限、アクセス制御など、ユーザーのアカウントの状況を確認します。 Chapter33.txt:password:ユーザー認証トークンの更新を行うために必要なものです。通常はパスワードです。 Chapter33.txt:session:セッションが確立される前後に行われる機能を提供するために使用されます(環境のセットアップ、ログの記録など)。 Chapter33.txt:controlフラグは、モジュールの成功または失敗を認証プロセス全体がどう対処するのかを制御します。 Chapter33.txt:required:サービスに権限を付与するためには、許可されたモジュールが "success"(成功)を返す必要があります。そのモジュールがスタックの一部である場合、他のすべてのモジュールは引き続き実行されます。どのモジュールが失敗したかは、アプリケーションに通知されません。 Chapter33.txt:requisite:いずれかのモジュールがエラーで失敗すると,スタック内のほかのモジュールはそれ以上実行されず、戻り値がアプリケーションに送信されます。それ以外はrequiredと同じです。 Chapter33.txt:optional:モジュールは要求されません。そのモジュールがサービスに関連付けられた唯一のモジュールである場合、その戻り値が失敗の原因になる可能性があります。 Chapter33.txt:sufficient:このモジュールが成功すると、スタック内の後続のモジュールは実行されません。失敗した場合、スタック内の唯一のものでない限り、必ずしもスタックが失敗するわけではありません。 Chapter33.txt:includeやsubstackなど、他にも制御フラグがあります。詳細については、man pam.dを参照してください。 Chapter33.txt:module-pathは、絶対パスまたは相対パスの形式で/lib */securityにあるライブラリのファイル名を指定します。 Chapter33.txt:module-argumentsで、PAMモジュールの動作を変更できます。 Chapter33.txt:LDAP認証 Chapter33.txt:LDAP(Lightweight Directory Access Protocol)は、ネットワーク上で分散ディレクトリ サービスを使用および管理するための業界標準プロトコルであり、オープンでベンダーに中立なものです。 Chapter33.txt:集中型の認証にLDAPを使用する場合、各システム(またはクライアント)は、ユーザー認証のために集中型のLDAPサーバーに接続します。TLSは、安全性を高めるオプションになるため、使用をお勧めします。 Chapter33.txt:LDAPはPAMとsystem-config-authenticationまたはauthconfig-tuiを使用します。サーバー、検索のベースDN(domain name)、 TLS(Transport Layer Security)を指定する必要があります。また、openldap-clients、pam ldap、nss-pam-ldapdも必要です。 Chapter33.txt:LDAP認証用にシステムを構成すると、5つのファイルが変更されます。 Chapter33.txt:/etc/openldap/ldap.conf Chapter33.txt:/etc/pam_ldap.conf Chapter33.txt:/etc/nslcd.conf Chapter33.txt:/etc/sssd/sssd.conf Chapter33.txt:/etc/nsswitch.conf Chapter33.txt:これらのファイルの編集には、手動、ユーティリティ プログラム(system-config-authentication、または authconfig-tui)を使用できます。 Chapter33.txt:知識チェック Chapter33.txt:「第33章 - プラグイン可能な認証モジュール(PAM)」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter33.txt:クイズ開始 Chapter33.txt:問題 33.1 Chapter33.txt:controlフラグのrequiredとrequisiteの違いは、requisiteフラグの方が制御がより緩やかであることです。スタックで必須として設定されているモジュールが失敗した場合でも、他のすべてのモジュールは実行されます。True or False? Chapter33.txt:A. True Chapter33.txt:B. False Chapter33.txt:問題 33.2 Chapter33.txt:モジュールが成功した場合、controlフラグのoptionalとsufficientの違いは、optionalのモジュールの成功はスタック上の他のモジュールの実行を妨げませんが、sufficientのモジュールの成功は他のモジュールの実行を妨げるということです。True or False? Chapter33.txt:A. True Chapter33.txt:B. False Chapter34.txt:ネットワーク アドレス Chapter34.txt:はじめに Chapter34.txt:第34章はじめに Chapter34.txt:このビデオでは、この章で説明するトピックの概要を簡単に説明します。 Chapter34.txt:学習目標 Chapter34.txt:この章の終わりまでに、次のことができるようになります。 Chapter34.txt:異なる種類であるIPv4アドレスとIPv6アドレスを区別できます。 Chapter34.txt:ネットマスクの役割を理解できます。 Chapter34.txt:使用しているシステムにおいて、ホスト名の取得、設定、および変更ができます。 Chapter34.txt:ネットワーク アドレス Chapter34.txt:IPアドレス Chapter34.txt:IPアドレスは、インターネット上のノードを一意に識別するために使用されます。これらはISP(Internet Service Providers)へ申請すれば登録されます。 Chapter34.txt:IPアドレスは、ネットワーク上でシステムを識別する番号です。2種類あります。 Chapter34.txt:クリックして各ボックスを展開し、2種類のIPアドレスについて学習します。 Chapter34.txt:IPアドレスの種類 Chapter34.txt:IPv4 Chapter34.txt:IPv4は、4オクテットで構成される32ビット アドレスです(1オクテットは8ビットまたは1バイトです)。 Chapter34.txt:例:148.114.252.10 Chapter34.txt:IPv6 Chapter34.txt:IPv6は、8つの16ビット オクテット ペアで構成される128ビット アドレスです。 Chapter34.txt:例:2003:0db5:6123:0000:1f4f:0000:5529:fe23 Chapter34.txt:いずれの場合も、予約済みのアドレスがあります。今、最も一般的に使用されているので、IPv4にもう少し焦点を当てます。 Chapter34.txt:IPアドレス Chapter34.txt:IPv4アドレスの種類 Chapter34.txt:クリックして各ボックスを展開し、IPv4アドレスの種類について学習します。 Chapter34.txt:IPv4アドレスの種類 Chapter34.txt:ユニキャスト Chapter34.txt:特定のホストに関連付けられたアドレス。140.211.169.4や64.254.248.193のようになります。 Chapter34.txt:ネットワーク Chapter34.txt:ホスト部分がすべて2進数のゼロに設定されているアドレス。例:192.168.1.0 (後で説明しますが、ホスト部分は最後の1〜3オクテットで表すことができます。ここでは、最後のオクテットのみです。) Chapter34.txt:ブロードキャスト Chapter34.txt:特定のネットワークの各メンバに対して通信するアドレス。172.16.255.255、148.114.255.255、192.168.1.255のように、ホスト部分はすべて1ビットに設定されます。(ホスト部分は、最初の2つの例では最後の2オクテットであり、3番目の例では最後のオクテットのみです。) Chapter34.txt:マルチキャスト Chapter34.txt:特定の複数のノードに対して通信するアドレス。アドレス224.0.0.2は、マルチキャスト アドレスの例です。特定のマルチキャスト アドレスを認識するように設定されたノードだけが、そのマルチキャスト グループへのパケットを解釈します。 Chapter34.txt:予約済みアドレス Chapter34.txt:特定のアドレスとアドレス範囲は、特別な目的のために予約されています。 Chapter34.txt:クリックして各ボックスを展開し、予約アドレスの詳細をご覧ください。 Chapter34.txt:予約済みアドレスの例 Chapter34.txt:127.x.x.x Chapter34.txt:ループバック インターフェイス用に予約されています。xは0 <= x <= 254の範囲の値です。通常、127.0.0.1と表されます。 Chapter34.txt:0.0.0.0 Chapter34.txt:まだ自分のアドレスを保有していないシステムによって使用されます。DHCPやBOOTPなどのプロトコルは、サーバーと通信しようとするときにこのアドレスを使用します。 Chapter34.txt:255.255.255.255 Chapter34.txt:内部使用のために予約されている汎用ブロードキャスト プライベート アドレスです。これらのアドレスは、誰にも割り当てられたり登録されたりすることはありません。通常、これらはルーティングできません。 Chapter34.txt:その他の予約済みアドレス Chapter34.txt:予約されたアドレス範囲の他の例として、 Chapter34.txt:10.0.0.0 - 10.255.255.255 Chapter34.txt:172.16.0.0 - 172.31.255.255 Chapter34.txt:192.168.0.0 - 192.168.255.255 Chapter34.txt:などがあります。 Chapter34.txt:これらにはそれぞれ目的があります。たとえば、なじみのあるアドレス範囲の192.168.x.xは、プライベート ネットワーク内のローカル通信にのみ使用されます。 Chapter34.txt:IPv4とIPv6の両方の予約済みアドレスの長い説明は、Reserved IP addressesのウィキペディアのページで確認できます。 Chapter34.txt:IPv6アドレスの種類 Chapter34.txt:クリックして各ボックスを展開し、IPv6vアドレスの種類について学習します。 Chapter34.txt:IPv6アドレスの種類 Chapter34.txt:ユニキャスト Chapter34.txt:パケットは1つのインターフェイスに配信されます。パケットの到着範囲には以下があります。 Chapter34.txt:リンクローカル:全てのインターフェイスに自動的に割り当てられます。ルーティングはできません。 Chapter34.txt:グローバル:全てのIPv6ネットワークで一意となるように、動的または手動で割り当てられます。ルーティングできます。 Chapter34.txt:ドキュメントの閲覧用などに予約されます。 Chapter34.txt:マルチキャスト Chapter34.txt:パケットは複数のインターフェイスに対して配信されます。 Chapter34.txt:エニーキャスト Chapter34.txt:パケットは、複数のインターフェイスに配信され、(ルーティング距離の観点から)最も近いインターフェイスに配信されます。 Chapter34.txt:IPv4射影アドレス Chapter34.txt:IPv4アドレスが埋め込まれたIPv6アドレス。たとえば、::FFFF:a.b.c.d/96 Chapter34.txt:さらに、IPv6には、::1/128のように loインターフェイスに割り当てられるループバックなどの特別な種類のアドレスがあります。 Chapter34.txt:IPv4アドレス クラス Chapter34.txt:歴史的に見て、IPアドレスはいくつかのクラスに分類されています。クラスA、B、Cは、アドレスのネットワーク部分とアドレスのホスト部分を区別するために使用されます。これはルーティングの目的で使用されます。 Chapter34.txt:クラスAのアドレスは、アドレスのネットワーク部分に8ビット、ホスト部分に24ビットを使用します。クラスBのアドレスは、ネットワーク部分に16ビット、ホスト部分に16ビットを使用し、クラスCのアドレスはネットワーク部分に24ビット、ホスト部分に8ビットを使用します。 Chapter34.txt:クラスDのアドレスは、マルチキャストに使用されます。クラスEのアドレスは現在使用されていません。 Chapter34.txt:表:アドレス クラス Chapter34.txt:ネットワーク クラス  最高次数のオクテット レンジ  備考 Chapter34.txt:A 0-127 ネットワーク数は128、1ネットワークあたり最大16,777,214のホストに対応、127.x.x.x はループバック用に予約 Chapter34.txt:B 128-191 ネットワーク数は16,384、1ネットワークあたり最大65,534のホストに対応 Chapter34.txt:C 192-223 ネットワーク数は2,097,152、1ネットワークあたり最大254のホストに対応 Chapter34.txt:D 224-239 マルチキャスト アドレス Chapter34.txt:E 240-255 予約済みアドレス範囲 Chapter34.txt:ネットマスク Chapter34.txt:これまで見てきたように、ネットマスクはネットワーク部分に使用されるアドレスの値とホスト部分に使用される値を決定するために使用されます。また、ネットワークとブロードキャスト アドレスの決定にも使用されます。 Chapter34.txt:表:アドレス クラスとネットマスク Chapter34.txt:ネットワーク クラス 10進数 16進数 2進数 Chapter34.txt:A 255.0.0.0 ff:00:00:00 11111111 00000000 00000000 00000000 Chapter34.txt:B 255.255.0.0 ff:ff:00:00 11111111 11111111 00000000 00000000 Chapter34.txt:C 255.255.255.0 ff:ff:ff:00 11111111 11111111 11111111 00000000 Chapter34.txt: Chapter34.txt:ネットワーク アドレスは、ネットマスクとIPアドレスで計算(AND演算)することにより取得されます。同じメディアを介して接続し同じネットワーク アドレスを共有するノード群を構成するローカル ネットワークを定義できる点でも、ネットワーク アドレスは興味深いです。同じネットワーク上のすべてのノードは、お互いを直接見ることができます。 Chapter34.txt:例えば以下のように使います。 Chapter34.txt:172.16.2.17 ip address Chapter34.txt:&255.255.0.0 netmask Chapter34.txt:----------------- Chapter34.txt:172.16.0.0 network address Chapter34.txt:ホスト名の取得と設定 Chapter34.txt:ホスト名は、ネットワーク上のデバイスを識別してネットワーク上の他の要素と区別するために使用されるラベルです。歴史的に見ると、これはノード名とも呼ばれていました。 Chapter34.txt:DNSにより、ホスト名にピリオド(ドット)とドメイン名が追加されるため、ホスト名がantjeのマシンはantje.linuxfoundation.orgの完全修飾ドメイン名(FQDN)を持つことができます。 Chapter34.txt:通常、ホスト名はインストール時に設定され、後からいつでも変更できます。 Chapter34.txt:現在のホスト名の確認は次のように簡単にできます。 Chapter34.txt:$ hostname Chapter34.txt:wally Chapter34.txt:ホスト名を変更するには、パラメータの指定とroot権限が必要です。 Chapter34.txt:$ sudo hostname lumpy Chapter34.txt:lumpy Chapter34.txt:現在のホスト名は、ほとんどのLinuxディストリビューションで/etc/hostnameに常に保存されています。 Chapter34.txt:したがって、このコマンドでホスト名を変更しても恒久的に変更されるわけではありません。システムを再起動すると、変更前のホスト名に戻ります。恒久的な変更を行うには、/etcディレクトリ ツリー内の構成ファイルを変更する必要があります。これは、systemdというデーモンが実行するhostnamectlユーティリティを使用すると適切に行えます。 Chapter34.txt:ホスト名の恒久的な変更(再起動後も変更を維持)は、次のように簡単に行うことができます。 Chapter34.txt:$ sudo hostnamectl set-hostname MYPC Chapter34.txt:大多数のディストリビューションでは、「pretty」クラスのホスト名はどこにも使用しません。 Chapter34.txt:ほとんどすべてのLinuxシステムでは、ファイル/etc/hostnameを(rootになって)編集し、新しい名前を付けることができます。 Chapter34.txt:$ hostnamectl Chapter34.txt: Static hostname: c8 Chapter34.txt: Icon name: computer-desktop Chapter34.txt: Chassis: desktop Chapter34.txt: Machine ID: ce0c82382a8a4c80bbd6931a917a2f1c Chapter34.txt: Boot ID: 1c06c8bb4f8243fd9ff32e3c9081e604 Chapter34.txt: Operating System: Red Hat Enterprise Linux 8.0 (Ootpa) Chapter34.txt: CPE OS Name: cpe:/o:redhat:enterprise_linux:8.0:GA Chapter34.txt: Kernel: Linux 5.3.1 Chapter34.txt: Architecture: x86-64 Chapter34.txt:以下を使えば、使用方法のメッセージを表示できます。 Chapter34.txt:$ hostnamectl --help Chapter34.txt:hostnamectl [OPTIONS...] COMMAND ... Chapter34.txt:Query or change system hostname Chapter34.txt:-h --help Show this help Chapter34.txt:--version Show package version Chapter34.txt:--no-ask-password Do not prompt for password Chapter34.txt:-H --host=[USER@]HOST Operate on remote host Chapter34.txt:-M --machine=CONTAINER Operate on local container Chapter34.txt:--transient Only set transient hostname Chapter34.txt:--static Only set static hostname Chapter34.txt:--pretty Only set pretty hostname Chapter34.txt:Commands: Chapter34.txt:status Show current hostname settings Chapter34.txt:set-hostname NAME Set system hostname Chapter34.txt:set-icon-name NAME Set icon name for host Chapter34.txt:set-chassis NAME Set chassis type for host Chapter34.txt:set-deployment NAME Set deployment environment for host Chapter34.txt:set-location NAME Set location for host Chapter34.txt:知識チェック Chapter34.txt:「第34章 - ネットワーク アドレス」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter34.txt:クイズ開始 Chapter34.txt:問題 34.1 Chapter34.txt:IPアドレスが同じクラスにある場合、ネットマスクは重要ではありません。アドレスが192.168.1.10と192.168.1.100のホスト間の通信では、ネットマスク設定は無視されます。True or False? Chapter34.txt:A. True Chapter34.txt:B. False Chapter34.txt:問題 34.2 Chapter34.txt:IPv4にはIPv6よりも多くのアドレスがあります。True or False? Chapter34.txt:A. True Chapter34.txt:B. False Chapter34.txt:問題 34.3 Chapter34.txt:192.168.128.255は、ネットマスクが255.255.255.0に設定されている場合は、ローカル ネットワーク上のホストの有効なIPアドレスです。True or False? Chapter34.txt:A. True Chapter34.txt:B. False Chapter35.txt:ネットワーク デバイスと構成 Chapter35.txt:はじめに Chapter35.txt:第35章はじめに Chapter35.txt:同じ種類のデバイスが複数ある場合は、イーサネットやワイヤレス接続などのネットワーク デバイスを慎重に構成する必要があります。このような状況では、一貫性のある恒久的なデバイス名が複雑になる場合があります。最近、新しい命名スキームが採用され、名付けられる名前が予測しやすくなりました。新しいスキームは、いくつかの重要なユーティリティを使用して、デバイスの起動、停止、プロパティの設定、ルートの確立などを行います。システム管理者は、これらの使用に精通する必要があります。 Chapter35.txt:学習目標 Chapter35.txt:この章の終わりまでに、次のことができるようになります。 Chapter35.txt:ネットワーク デバイスを識別し、オペレーティング システムがデバイスに名前を付け、特定の処理に結び付ける方法を理解できます。 Chapter35.txt:ipユーティリティを使用して、デバイス、ルーティング、ポリシーベースのルーティング、トンネリングの表示と制御ができます。 Chapter35.txt:昔からあるifconfigを使用して、コマンド ラインまたはシステム構成スクリプトを使って、ネットワーク インターフェイス パラメータの設定、制御、照会ができます。 Chapter35.txt:予測可能なネットワーク インターフェイス デバイスの命名スキームを理解できます。 Chapter35.txt:/etcのメインのネットワーク構成ファイルを確認できます。 Chapter35.txt:Network Manager (nmtuiとnmcli)を使用して、ディストリビューションに依存しない方法でネットワーク インターフェイスを設定できます。 Chapter35.txt:デフォルト ルートと静的ルートの設定方法を理解できます。 Chapter35.txt:名前解決を行い、診断ユーティリティを実行できます。 Chapter35.txt:ネットワーク デバイスと構成 Chapter35.txt:ネットワーク デバイス Chapter35.txt:ブロック デバイスやキャラクタ デバイスとは異なり、ネットワーク デバイスは、デバイス ノードとも呼ばれる特別なデバイス ファイルとは関連付けられていません。/devディレクトリのエントリを関連付けるのではなく、名前で認識されています。 Chapter35.txt:これらの名前は、デバイスの種類の識別子とそれに続く番号で構成されます。 Chapter35.txt:イーサネット デバイスの場合、eth0、eth1、eno1、eno2などがあります。 Chapter35.txt:ワイヤレス デバイスの場合、wlan0、wlan1、wlan2、wlp3s0、wlp3s2などがあります。 Chapter35.txt:ブリッジ インターフェイスの場合、br0、br1、br2などがあります。 Chapter35.txt:仮想クライアントと通信するための仮想デバイスの場合、vmnet0、vmnet1、vmnet2などがあります。 Chapter35.txt:従来、複数の仮想デバイスを単一の物理デバイスに関連付けることができました。これらはコロンと数字で命名されました。つまり、eth0:0はeth0デバイスの最初の別名になります。これは、1つのネットワーク カードで複数のIPアドレスをサポートするために行われました。ただし、ifconfigの代わりにipを使用する場合にはこのメソッドは推奨できませんので、これ以上は説明しません。さらに、これはIPv6と互換性がありません。 Chapter35.txt:特に、同じ種類の複数のインターフェイスが存在する場合では、デバイスの命名は古典的な方法で行うのは難しくなりました。たとえば、2枚のネットワーク カードがあるとします。古典的な方法では、1つはeth0、もう1つはeth1という名前になります。でも、それぞれの名前に、どの物理デバイスを関連付ければ良いでしょうか? Chapter35.txt:最も簡単な方法は、最初のデバイスをeth0に、2番目をeth1にすることです。残念ながら、最新のシステムではデバイスの検出は確定的ではなく、デバイスは予測できない順序で配置されたり接続されたりする場合があります。したがって、ローカル インターフェイスとインターネット インターフェイスの順序が、入れ替わってしまう可能性があります。ハードウェアが変更されない場合でも、インターフェイスが配置される順序は、カーネルのバージョンと構成によって異なることがわかっています。 Chapter35.txt:多くのシステム管理者は、システム構成ファイルと起動スクリプトの中で、ハードウェア(MAC)アドレスとデバイス名との関連付けをハード コーディングするという簡単な方法で、この問題を解決しています。この方法は長年にわたって使われてきましたが、手動調整が必要で、MACアドレスが固定されていない場合など、他にも問題がありました。これは組み込みシステムと仮想化システムの両方で発生する可能性があります。 Chapter35.txt:ip Chapter35.txt:ipは、インターフェイス パラメータの構成、制御、クエリ、そしてデバイスの制御、ルーティングなどに使用される、コマンド ライン ユーティリティです。ioctlシステムコールではなくnetlinkソケットを使用するため、より汎用性が高く効率的であり、次に説明する昔からあるifconfigよりも使われています。 Chapter35.txt:ipは、さまざまなタスクに使用できます。制御とインターフェイス パラメータとクエリ デバイスの設定だけでなく、ルーティング、ポリシーベースのルーティング、トンネリングの操作にも使用できます。 Chapter35.txt:基本的な構文は次のとおりです。 Chapter35.txt:ip [ OPTIONS ] OBJECT { COMMAND | help } Chapter35.txt:ip [ -force ] -batch filename Chapter35.txt:2番目の構文は、指定されたファイルからコマンドを読み取ることができます。 Chapter35.txt:ipは複合型ユーティリティです。OBJECT引数は、実行されるアクションの種類を指定します。サブコマンドであるCOMMANDは、選択されているOBJECTによって異なります。 Chapter35.txt:OBJECTの主な値の一部を以下に見ることができます。 Chapter35.txt:表:ipの主なOBJECT Chapter35.txt:OBJECT 意味 Chapter35.txt:address IPv4またはIPv6のプロトコル デバイス アドレス Chapter35.txt:link ネットワーク デバイス Chapter35.txt:maddress  マルチキャスト アドレス Chapter35.txt:monitor  netlinkメッセージの監視 Chapter35.txt:route ルーティング テーブルのエントリ Chapter35.txt:rule ルーティング ポリシー データベースに登録されているルール Chapter35.txt:tunnel IPトンネル Chapter35.txt:ipの使用の例 Chapter35.txt:ipユーティリティはさまざまな使い方ができます。いくつかの例を以下に示します。 Chapter35.txt:すべてのネットワーク インターフェイスの情報を表示する場合: Chapter35.txt:$ ip link show Chapter35.txt:統計情報など、eth0ネットワーク インターフェイスの情報を表示する場合: Chapter35.txt:$ ip -s link show eth0 Chapter35.txt:eth0のIPアドレスを設定する場合: Chapter35.txt:$ sudo ip addr add 192.168.1.7 dev eth0 Chapter35.txt:eth0を停止する場合: Chapter35.txt:$ sudo ip link set eth0 down Chapter35.txt:eth0のMTUを1480バイトに設定する場合: Chapter35.txt:$ sudo ip link set eth0 mtu 1480 Chapter35.txt:ネットワーク ルートを設定する場合: Chapter35.txt:$ sudo ip route add 172.16.1.0/24 via 192.168.1.5 Chapter35.txt:ipの使用例 Chapter35.txt:ifconfig Chapter35.txt:ifconfigは、UNIXライクなオペレーティング システムで長い間使用されてきたシステム管理ユーティリティです。コマンド ラインまたはシステム構成スクリプトで、ネットワーク インターフェイス パラメータの構成、制御、照会を行うために使用されています。ipconfigはipに置き換わって行き、一部のLinuxディストリビューションではデフォルトではインストールされなくなりました。 Chapter35.txt:すべてのインターフェイスに関する情報を表示する場合: Chapter35.txt:$ ifconfig Chapter35.txt:eth0のみに関する情報を表示する場合: Chapter35.txt:$ ifconfig eth0 Chapter35.txt:インターフェイスeth0のIPアドレスを192.168.1.50に設定する場合: Chapter35.txt:$ sudo ifconfig eth0 192.168.1.50 Chapter35.txt:ネット マスクを24ビットに設定する場合: Chapter35.txt:$ sudo ifconfig eth0 netmask 255.255.255.0 Chapter35.txt:インターフェイスeth0を起動する場合: Chapter35.txt:$ sudo ifconfig eth0 up Chapter35.txt:インターフェイスeth0を停止する場合: Chapter35.txt:$ sudo ifconfig eth0 down Chapter35.txt:インターフェイスeth0のMTU(最大転送単位)を1480バイトに設定する場合: Chapter35.txt:$ sudo ifconfig eth0 mtu 1480 Chapter35.txt:ifconfigの出力例 Chapter35.txt:予測可能なネットワーク インターフェイス デバイス名 Chapter35.txt:予測可能なネットワーク インターフェイス デバイス名(Predictable Network Interface Device Names:PNIDN)は、udevの使用とsystemdとの統合に、強く関係しています。現在、デバイスに指定できる名前は5種類あります。 Chapter35.txt:ファームウェアやBIOSがオンボード デバイスに対して提供する、索引番号を組み入れた名前 Chapter35.txt:例:eno1 Chapter35.txt:ファームウェアや BIOS が提供している、PCI Expressホットプラグ スロットの索引番号を組み込んだ名前 Chapter35.txt:例:ens1 Chapter35.txt:ハードウェア接続の物理的か地理的、もしくはその両方の場所を組み込んだ名前 Chapter35.txt:例:enp2s0 Chapter35.txt:MACアドレスを組み込んだ名前 Chapter35.txt:例:enx7837d1ea46da Chapter35.txt:従来型のメソッドを使用した名前 Chapter35.txt:例:eth0 Chapter35.txt:たとえば、2つのオンボードPCIネットワーク インターフェイスがeth0とeth1であるマシンを調べてみましょう。 Chapter35.txt:q7:/home/coop>ip link show | grep enp Chapter35.txt:2: enp4s2: mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000 Chapter35.txt:3: enp2s0: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 Chapter35.txt:q7:/home/coop>ifconfig | grep enp Chapter35.txt:enp2s0: flags=4163 mtu 1500 Chapter35.txt:enp4s2: flags=4099 mtu 1500 Chapter35.txt:これらの名前は、PCIシステム上のハードウェアの物理的な位置と関係しています。 Chapter35.txt:q7:/home/coop>lscpi | grep Ethernet Chapter35.txt:02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8056 PCI-E Gigabit Ethernet Controller (rev 12) Chapter35.txt:04:02.0 Ethernet controller: Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller (rev 14) Chapter35.txt:lspci出力の各行の先頭にある3組の数字は、バス番号、デバイス番号(またはスロット番号)、デバイス機能の番号です。したがって、物理的な位置が明らかになります。 Chapter35.txt:同様に、以前は単にwlan0という名前だった無線デバイスを調べます。 Chapter35.txt:l7:/home/coop>ip link show | grep wl Chapter35.txt:3: wlp3s0: mtu 1500 qdisc mq state UP mode DORMANT qlen 1000 Chapter35.txt:l7:/home/coop>lspci | grep Centrino Chapter35.txt:03:00.0 Network controller: Intel Corporation Centrino Advanced-N 6205 [Taylor Peak] (rev 34) Chapter35.txt:同じパターンが見られます。新しい命名スキームをオフにすれば、簡単に古典的な名前に戻すことができます。これは研究プロジェクトとして残す予定です。これ以降では、明確かつ単純に説明するために、古典的な名前を使っていきます。 Chapter35.txt:NIC設定ファイル Chapter35.txt:ネットワーク インターフェイスは、ipまたはifconfigユーティリティを使用して複数の処理をまとめて設定できますが、これらの設定は恒久的ではありません。Linuxディストリビューションに依存するファイルの多くは、恒久的なネットワーク インターフェイスとデバイス設定情報が保存されています。 Chapter35.txt:各ディストリビューションには、独自のファイルやディレクトリがあります。それらはディストリビューションのバージョンによってわずかに異なる場合があります。 Chapter35.txt:各ボックスをクリックして展開し、各ディストリビューションにあるファイルやディレクトリを確認しましょう。 Chapter35.txt:NIC設定ファイル Chapter35.txt:Red Hat Chapter35.txt:/etc/sysconfig/network Chapter35.txt:/etc/sysconfig/network-scripts/ifcfg-ethX Chapter35.txt:/etc/sysconfig/network-scripts/ifcfg-ethX:Y Chapter35.txt:/etc/sysconfig/network-scripts/route-ethX Chapter35.txt:Debian Chapter35.txt:/etc/network/interfaces Chapter35.txt:SUSE Chapter35.txt:/etc/sysconfig/network Chapter35.txt:systemdを使用する場合、これらのテキスト ファイルを設定するよりも、Network Managerを使用することをお勧めします。実際、新しいLinuxディストリビューションでは、これらのファイルの多くは、存在しないか、空であるか、もしくははるかに小さくなっており、後方互換性の理由でのみ存在しています。 Chapter35.txt:NetworkManager Chapter35.txt:昔は、ネットワーク接続はほぼすべて有線(イーサネット)であり、ハードウェア、ソフトウェア、またはネットワーク構成のいずれかに大幅な変更がない限り変更されませんでした。システムの起動中に/etc内のファイルを調べて、すべてのデバイス構成を決定していました。 Chapter35.txt:システムの起動時に、システムは/etcディレクトリ サブツリーのネットワーク構成ファイルを調べて、静的または動的(DCHP)アドレス構成やデバイスをブート時に開始するかなどの、インターフェイス プロパティを決定しました。 Chapter35.txt:複数のネットワーク デバイスが存在する場合には、どの順序で起動するか、どのネットワークに接続するか、何を呼び出すかなどに関するポリシーを決定する必要がありました。 Chapter35.txt:ワイヤレス接続(およびUSBアダプターなどのホットプラグ ネットワーク デバイス)がより一般的になるにつれ、ハードウェアの一時的な性質と接続されている特定のネットワークの性質の両方が原因で、設定がはるかに複雑になりました。 Chapter35.txt:また一方で、最新のシステムには多くの場合、動的な設定があります。 Chapter35.txt:デバイスがあちこちに移動すると、ネットワークが変化する場合があります。 Chapter35.txt:ワイヤレス デバイスでは、接続するネットワークの選択肢が多い場合があります。 Chapter35.txt:ワイヤレス デバイスなどのハードウェアが接続されたり、電源がオンやオフに変わったりすると、デバイスが変わる可能性があります。 Chapter35.txt:前述の設定ファイルは、より静的な状況に対処するために作成されたものであり、ディストリビューションに大きく依存しています。 Chapter35.txt:NetworkManagerも構成ファイルを使用しますが、管理者はそれらを直接操作することはありません。その使用方法は異なるシステムであってもほぼ同じです。 Chapter35.txt:NetworkManagerインターフェイス Chapter35.txt:ホテルの部屋やコーヒー ショップでラップトップを使用している場合は、Linuxディストリビューションのデスクトップが提供するグラフィカル インターフェースを使用していると思います。これを使用すれば、異なるネットワークを選択したり、セキュリティとパスワードを構成したり、デバイスのオン/オフを切り替えたりできます。 Chapter35.txt:しばらく使い続ける可能性があるシステムへの構成変更を行う場合には、nmtuiを使うと良いです。これは学習曲線などほとんど関係なく、すぐに基本の設定ファイルの編集ができます。 Chapter35.txt:ネットワーク構成の変更スクリプトを実行する必要がある場合は、nmcliを使用します。または、コマンド ラインが良い場合は、nmtuiの代わりにこのnmcliを使用することもできます。 Chapter35.txt:GUIが適切に設定されていれば、これらの3つの方法のいずれかを使用してタスクを実行できるはずです。ここでは、ディストリビューションへの依存や基本の設定ファイルの違いを意識したくないので、nmtuiとnmcliに焦点を当てて説明します。 Chapter35.txt:nmtui Chapter35.txt:nmtuiはかなり簡単に使用できます。矢印キーまたはタブ キーを使用して移動できます。 Chapter35.txt:接続をアクティブにしたり、編集したりすることに加えて、システムのホスト名も設定できます。ただし、このような一部の操作は一般のユーザーでは実行することはできず、行うためにはrootのパスワードの入力を求められます。 Chapter35.txt:nmtuiのメイン画面 Chapter35.txt:nmtuiの編集画面 Chapter35.txt:nmtuiのワイヤレス構成 Chapter35.txt:nmcli Chapter35.txt:nmcliは、NetworkManagerへのコマンド ライン インターフェイスです。直接コマンドを発行できますが、インタラクティブ モードもあります。 Chapter35.txt:詳細情報や多くの使用例は、Networking/CLI Fedora wikiのウェブ ページにアクセスするか、次のように入力すれば得られます。 Chapter35.txt:$ man nmcli-examples Chapter35.txt:演習でnmcliを使用する方法を体験しましょう。 Chapter35.txt:Ubuntuでのnmcli 使用例 Chapter35.txt:ルーティング Chapter35.txt:ルーティングは、ネットワーク トラフィックを送信するネットワーク内のルート(経路)を選択するプロセスです。ルーティング テーブルは、システムが管理する他のネットワークへのルートのリストです。すべてのネットワークとホストへのルートを定義し、リモート トラフィックをルーターに送信します。 Chapter35.txt:現在のルーティング テーブルを表示するには、routeまたはipを使用します。 Chapter35.txt:$ route -n Chapter35.txt:$ ip route Chapter35.txt:routeとip routeの使用例 Chapter35.txt:デフォルト ルート Chapter35.txt:デフォルト ルートは、指定されたネットワークに到達するためのルーティング テーブルに、一致するものがない場合のパケットの送信方法です。 Chapter35.txt:デフォルト ルートは、DHCPを使用して動的に取得できます。一方で、手動で設定することもできます(静的)。nmcliを使って次の方法で設定できます。 Chapter35.txt:$ sudo nmcli con mod virbr0 ipv4.routes 192.168.10.0/24 +ipv4.gateway 192.168.122.0 Chapter35.txt:$ sudo nmcli con up virbr0 Chapter35.txt:または、設定ファイルを直接変更できます。Red Hatベースのシステムでは、/etc/sysconfig/networkを編集して、次の行を入力します。 Chapter35.txt:GATEWAY=x.x.x.x Chapter35.txt:または、個々のNICのデバイス固有の設定ファイルである、/etc/sysconfig/network-scripts/ifcfg-ethXに設定します。Debianベースのシステムでは、/etc/network/interfacesに次を入力します。 Chapter35.txt:gateway=x.x.x.x Chapter35.txt:  Chapter35.txt:いずれのシステムでも、実行時にデフォルト ゲートウェイを設定できます。 Chapter35.txt:$ sudo route add default gw 192.168.1.10 enp2s0 Chapter35.txt:$ route Chapter35.txt:Kernel IP routing table Chapter35.txt:Destination Gateway Genmask Flags Metric Ref Use Iface Chapter35.txt:default 192.168.1.10 0.0.0.0 UG 0 0 0 enp2s0 Chapter35.txt:default 192.168.1.1 0.0.0.0 UG 1024 0 0 enp2s0 Chapter35.txt:172.16.132.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1 Chapter35.txt:192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 enp2s0 Chapter35.txt:192.168.113.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8 Chapter35.txt:これはネットワーク接続を一掃する可能性があるので注意してください!ネットワークをリセットするか、上記の例で次のように変えれば復元できます。 Chapter35.txt:$ sudo route add default gw 192.168.1.1 enp2s0 Chapter35.txt:これらの変更は恒久的ではなく、システムの再起動すると反映はされません。 Chapter35.txt:静的ルート Chapter35.txt:静的ルートは、複数のルーターやルートがある場合に、パケット フローを制御するために使用されます。これらはインターフェイスごとに定義され、恒久的にも非恒久的にもできます。 Chapter35.txt:システムが複数のルーターにアクセスできる場合、または複数のインターフェイスがある場合は、どのパケットがどのルーターに送信されるかを選択する形で制御することは有用です。 Chapter35.txt:routeまたはipコマンドを使用して、次のように非恒久的なルートを設定できます。 Chapter35.txt:$ sudo ip route add 10.5.0.0/16 via 192.168.1.100 Chapter35.txt:Red Hat ベースのシステムでは、次のように/etc/sysconfig/network-scripts/route-ethXに設定しておくと、恒久的なルートになります。 Chapter35.txt:$ cat /etc/sysconfig/network-scripts/route-eth0 Chapter35.txt: 10.5.0.0/16 via 172.17.9.1 Chapter35.txt:Debianベースのシステムでは、次のような行を/etc/network/interfacesに追加する必要があります。 Chapter35.txt:iface eth1 inet dhcp Chapter35.txt: post-up route add -host 10.1.2.51 eth1 Chapter35.txt: post-up route add -host 10.1.2.52 eth1 Chapter35.txt:SUSEベースのシステムでは、次のような行を含む/etc/sysconfig/network/ifroute-eth0などのファイルを追加または作成する必要があります。 Chapter35.txt:# Destination Gateway Netmask Interface [Type] [Options] Chapter35.txt:192.168.1.150 192.168.1.1 255.255.255.255 eth0 Chapter35.txt:10.1.1.150 192.168.233.1.1 eth0 Chapter35.txt:10.1.1.0/24 192.168.1.1 - eth0 Chapter35.txt:各フィールドはタブで区切られています。 Chapter35.txt:名前解決 Chapter35.txt:名前解決とは、ホスト名をホストのIPアドレスに変換することです。たとえば、ブラウザまたは電子メール クライアントは、training.linuxfoundation.orgとの間で送受信するために、training.linuxfoundation.orgにサービスを提供しているサーバー(もしくは複数のサーバー)の名前を解決してIPアドレスに変換します。 Chapter35.txt:この変換を行う2つの機能があります。 Chapter35.txt:静的な名前解決(/etc/hostsを使用) Chapter35.txt:動的な名前解決(DNSサーバーを使用) Chapter35.txt:ホスト名のIPアドレスの解決に使用できるコマンド ライン ツールとして、以下があります。 Chapter35.txt:$ [dig | host | nslookup] linuxfoundation.org Chapter35.txt:dig:最も多くの情報を取得でき、多くのオプションがあります。 Chapter35.txt:host:簡潔な情報を取得できます。 Chapter35.txt:nslookup:昔からあるユーティリティです。 Chapter35.txt:digは最新のユーティリティです。その他は非推奨と見なされる場合がありますが、hostの出力は読みやすく、基本情報が含まれています。 Chapter35.txt:逆引きの解決も必要になる場合があります。IPアドレスをホスト名に変換することです。これら3つのユーティリティに、ホスト名ではなく既知のIPアドレスを入力して、出力を調べてください。 Chapter35.txt:/etc/hosts Chapter35.txt:/etc/hostsは、ホスト名とIPアドレスのローカル データベースを保持します。これには、IPアドレスを対応するホスト名と別名にマッピングする、レコードのセット(それぞれ1行ずつ)が含まれています。 Chapter35.txt:典型的な/etc/hostsファイルは次のようになります。 Chapter35.txt:$ cat /etc/host Chapter35.txt:127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 Chapter35.txt:::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 Chapter35.txt:192.168.1.100 hans hans7 hans64 Chapter35.txt:192.168.1.150 bethe bethe7 bethe64 Chapter35.txt:192.168.1.2 hp-printer Chapter35.txt:192.168.1.10 test32 test64 oldpc Chapter35.txt:このような静的な名前解決は、主にローカルの小規模な分離されたネットワークに使用されます。通常、これはDNSがアドレスを解決しようとする前にチェックされます。ただし、この優先順位は /etc/nsswitch.confで制御できます。 Chapter35.txt:/etc内の他のホスト関連ファイルには、/etc/hosts.denyと/etc/hosts.allowがあります。これらは自己文書化されており、その目的は名前を見れば明らかです。allowファイルが最初に検索され、クエリがそこに見つからない場合にのみdenyファイルが検索されます。 Chapter35.txt:/etc/host.confには一般的な構成情報が含まれています。めったに使用されません。 Chapter35.txt:DNS Chapter35.txt:/etc/hostsを使用した名前解決をローカルで実行できない場合、システムはDNS(Domain Name system)サーバーに照会します。 Chapter35.txt:DNSは動的に名前解決を行い、クライアントが名前を検索するために使用するサーバーのネットワークを構成します。サービスは分配されます。各々のDNSサーバーには、その権限ゾーンに関する情報のみを持ちます。ただし、それらがお互いに協力して、任意の名前を解決します。 Chapter35.txt: DNSの使用方法に関する情報は/etc/resolv.confで設定されます。これは、次のように設定されています。 Chapter35.txt:search example.com aps.org Chapter35.txt:nameserver 192.168.1.1 Chapter35.txt:nameserver 8.8.8.8 Chapter35.txt:この/etc/resolv.confについては、以下のとおりです。 Chapter35.txt:検索する特定のドメインを指定できます。 Chapter35.txt:照会するネームサーバーの厳密な順序を定義します。 Chapter35.txt:DHCP(Dynamic Host Configuration Protocol)などのサービスから、手動で設定または更新できます。 Chapter35.txt:最近のほとんどのシステムでは、次のような/etc/hosts.resolvファイルが自動的に生成されます。 Chapter35.txt:# Generated by NetworkManager Chapter35.txt:192.168.1.1 Chapter35.txt:これは、プライマリ ネットワーク インターフェイスでDHCPを呼び出している、NetworkManagerが生成しています。 Chapter35.txt:DNSゾーン Chapter35.txt:ネットワーク診断 Chapter35.txt:多くの基本的なネットワーク ユーティリティが、全てのシステム管理者のツールボックスにあります。 Chapter35.txt: Chapter35.txt:クリックして各ボックスを展開し、利用可能な基本的なネットワーク ユーティリティについて学習します。 Chapter35.txt:ネットワーク ユーティリティ Chapter35.txt:ping Chapter35.txt:64バイトのテスト パケットを指定されたネットワーク ホストに送信し、(見つかった場合)到達に必要な時間(ミリ秒単位)、失われたパケット、およびその他のパラメーターについての情報を報告します。正確な出力は対象となるホストによって異なりますが、少なくともネットワークが機能しており、ホストに到達できていることがわかります。 Chapter35.txt:traceroute Chapter35.txt:このユーティリティは、宛先へのネットワーク経路を調べるために使用されます。ホストに到達するために通過するルーター パケットと、到達にかかる各時間を示します。 Chapter35.txt:mtr Chapter35.txt:pingとtracerouteの機能を組み合わせて、topのように継続的に更新する表示を作成します。 Chapter35.txt:dig Chapter35.txt:DNS機能のテストに役立ちます。hostまたはnslookupを使用することもできます。これは、ホストに関するDNS情報を返す、昔からあるプログラムです。 Chapter35.txt:🚩 Chapter35.txt:一部のディストリビューション(RHEL 7など)では、最初の3つの診断ユーティリティを実行するためにroot権限(sudoと同様)が必要です。 Chapter35.txt:例えば以下のように使います。 Chapter35.txt:$ ping -c 10 linuxfoundation.org Chapter35.txt:$ traceroute linuxfoundation.org Chapter35.txt:$ mtr linuxfoundation.org Chapter35.txt:pingの使用例 Chapter35.txt:tracerouteの使用例 Chapter35.txt:mtrの使用例 Chapter35.txt:演習 Chapter35.txt:課題 25.1: ネットワーク インターフェイスを静的に構成する Chapter35.txt:🚩 Chapter35.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter35.txt:【【これ以降は橋本さんの訳を参照】】 Chapter35.txt:Please Note Chapter35.txt:You may have to use a different network interface name than eth0. You can most easily do this exercise with nmtui or your system’s graphical interface. We will present a command line solution, but beware details may not exactly fit your distribution flavor or fashion. Chapter35.txt:1. Show your current IP address, default route and DNS settings for eth0. Keep a copy of them for resetting later. Chapter35.txt:2. Bring down eth0 and reconfigure to use a static address instead of DCHP, using the information you just recorded. Chapter35.txt:3. Bring the interface back up, and configure the nameserver resolver with the information that you noted before. Chapter35.txt:Verify your hostname and thenpingit. Chapter35.txt:4. Make sure your configuration works after a reboot. Chapter35.txt:You will probably want to restore your configuration when you are done. Chapter35.txt:Solution 35.1 Chapter35.txt:1.$ ip addr show eth0 Chapter35.txt:$ ip route Chapter35.txt:$ cp /etc/resolv.conf resolv.conf.keep Chapter35.txt:または Chapter35.txt:$ ifconfig eth0 Chapter35.txt:$ route -n Chapter35.txt:$ cp /etc/resolv.conf resolv.conf.keep Chapter35.txt:2.$ sudo ip link set eth0 down Chapter35.txt:または Chapter35.txt:$ sudo ifconfig eth0 down Chapter35.txt:On RedHat / CentOS Chapter35.txt:Make sure the following is in /etc/sysconfig/network-scripts/ifcfg-eth0 on Red Hat-based systems: Chapter35.txt:in /etc/sysconfig/network-scripts/ifcfg-eth0 Chapter35.txt:DEVICE=eth0 Chapter35.txt:BOOTPROTO=static Chapter35.txt:ONBOOT=yes Chapter35.txt:IPADDR=noted from step1 Chapter35.txt:NETMASK=noted from step1 Chapter35.txt:GATEWAY=noted from step1 Chapter35.txt:On openSUSE , SLES, OpenSUSE, and Debian-based systems Chapter35.txt:On SUSE-based systems edit the file in /etc/sysconfig/network in the same way, and on Debian-based systems edit /etc/networking/interfaces to include: Chapter35.txt:in /etc/sysconfig/networkor/etc/networking/interfaces Chapter35.txt:iface eth0 inet static Chapter35.txt:address noted from step1 Chapter35.txt:netmask noted from step1 Chapter35.txt:gateway noted from step1 Chapter35.txt:3.$ sudo ip link set eth0 up Chapter35.txt:または Chapter35.txt:$ sudo ifconfig eth0 up Chapter35.txt:$ sudo cp resolv.conf.keep /etc/resolv.conf Chapter35.txt:$ cat /etc/sysconfig/network Chapter35.txt:$ cat /etc/hosts Chapter35.txt:$ ping yourhostname Chapter35.txt:4.$ sudo reboot Chapter35.txt:$ ping hostname Chapter35.txt:課題 35.2: 静的にホスト名を追加する Chapter35.txt:🚩 Chapter35.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter35.txt:Exercise 35.2: Adding a Static Hostname Chapter35.txt:In this exercise we will add entries to the local host database. Chapter35.txt:1. Open /etc/hosts and add an entry for mysystem.mydomain that will point to the IP address associated with your network card. Chapter35.txt:2. Add a second entry that will make all references to ad.doubleclick.net point to 127.0.0.1. Chapter35.txt:3. As an optional exercise, download the host file from: http://winhelp2002.mvps.org/hosts2.htm or more directly from http://winhelp2002.mvps.org/hosts.txt, and install it on your system. Do you notice any difference using your browser with and without the new host file in place? Chapter35.txt:Solution 35.2 Chapter35.txt:1.$ sudo sh -c "echo 192.168.1.180 mysystem.mydomain >> /etc/hosts" Chapter35.txt:$ ping mysystem.mydomain Chapter35.txt:2.$ sudo sh -c "echo 127.0.0.1 ad.doubleclick.net >> /etc/hosts" Chapter35.txt:$ ping ad.doubleclick.net Chapter35.txt:3.$ wget http://winhelp2002.mvps.org/hosts.txt Chapter35.txt:--2014-11-01 08:57:12-- http://winhelp2002.mvps.org/hosts.txt Chapter35.txt:Resolving winhelp2002.mvps.org (winhelp2002.mvps.org)... 216.155.126.40 Chapter35.txt:Connecting to winhelp2002.mvps.org (winhelp2002.mvps.org)|216.155.126.40|:80... connected.HTTP request sent, awaiting response... 200 OK Chapter35.txt:Length: 514744 (503K) [text/plain] Chapter35.txt:Saving to: hosts.txt Chapter35.txt:100%[======================================>] 514,744 977KB/s in 0.5s Chapter35.txt:2014-11-01 08:57:13 (977 KB/s) - hosts.txt saved [514744/514744] Chapter35.txt:$ sudo sh -c "cat hosts.txt >> /etc/hosts" Chapter35.txt:課題 35.3: : nmcli を使い、ネットワーク インタフェースに別名/アドレスをつける Chapter35.txt:🚩 Chapter35.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter35.txt:Exercise 35.3: Adding a Network Interface Alias/Address using nmcli Chapter35.txt:We are going to add an additional IPv4 address to your system and make it persistent. We will do this without editing files under /dev directly, using nmcli. Chapter35.txt:1. First obtain your current internet address and interface name: Chapter35.txt:$ sudo nmcli con Chapter35.txt:NAME UUID TYPE DEVICE Chapter35.txt:Auto Ethernet 1c46bf37-2e4c-460d-8b20-421540f7d0e2 802-3-ethernet ens33 Chapter35.txt:virbr0 a84a332f-38e3-445a-a377-4363a8eb963f bridge virbr0 Chapter35.txt:shows the name of the connection is Auto Ethernet. Chapter35.txt:$ sudo nmcli con show "Auto Ethernet" | grep Chapter35.txt:IP4.ADDRESSIP4.ADDRESS[1]: 172.16.2.135/24 Chapter35.txt:shows the address as 172.16.2.135 Note that this command shows all information about the connection and you couldhave specified the UUID instead of the NAME as in: Chapter35.txt:$ nmcli con show 1c46bf37-2e4c-460d-8b20-421540f7d0e2 Chapter35.txt:2. Add a new address that your machine can be seen by: Chapter35.txt:$ sudo nmcli con modify "Auto Ethernet" +ipv4.addresses 172.16.2.140/24 Chapter35.txt:3. Activate it and test to see if it is there: Chapter35.txt:$ sudo nmcli con up "Auto Ethernet" Chapter35.txt:Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6) Chapter35.txt:$ ping -c 3 172.16.2.140 Chapter35.txt:PING 172.16.2.140 (172.16.2.140) 56(84) bytes of data. Chapter35.txt:64 bytes from 172.16.2.140: icmp_seq=1 ttl=64 time=0.038 ms Chapter35.txt:64 bytes from 172.16.2.140: icmp_seq=2 ttl=64 time=0.034 ms Chapter35.txt:64 bytes from 172.16.2.140: icmp_seq=3 ttl=64 time=0.032 ms Chapter35.txt:--- 172.16.2.140 ping statistics --- Chapter35.txt:3 packets transmitted, 3 received, 0% packet loss, time 1998ms Chapter35.txt:rtt min/avg/max/mdev = 0.032/0.034/0.038/0.007 ms Chapter35.txt:4. Clean up by removing the alias: Chapter35.txt:$ sudo nmcli con modify "Auto Ethernet" -ipv4.addresses 172.16.2.140/24 Chapter35.txt:... Chapter35.txt:$ sudo nmcli con up "Auto Ethernet" Chapter35.txt:... Chapter35.txt:課題 35.4: nmcli を使い、静的ルートを追加する Chapter35.txt:🚩 Chapter35.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter35.txt:Exercise 35.4: Adding a Static Route using nmcli Chapter35.txt:We are going to add a static IPv4 route address to your system and make it persistent. We will do this without editing filesunder /dev directly, using nmcli. Chapter35.txt:1. Begin by examining your current routing tables, using both route and ip: Chapter35.txt:$ route Chapter35.txt:Kernel IP routing table Chapter35.txt:Destination Gateway Genmask Flags Metric Ref Use Iface Chapter35.txt:default 172.16.2.2 0.0.0.0 UG 100 0 0 ens33 Chapter35.txt:link-local * 255.255.0.0 U 1000 0 0 ens33 Chapter35.txt:172.16.2.0 * 255.255.255.0 U 100 0 0 ens33 Chapter35.txt:192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0 Chapter35.txt:$ ip route Chapter35.txt:default via 172.16.2.2 dev ens33 proto static metric 100 Chapter35.txt:169.254.0.0/16 dev ens33 scope link metric 1000 Chapter35.txt:172.16.2.0/24 dev ens33 proto kernel scope link src 172.16.2.135 metric 100 Chapter35.txt:192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown Chapter35.txt:2. Add a new route using nmcli: Chapter35.txt:$ sudo nmcli conn mod "Auto Ethernet" +ipv4.routes "192.168.100.0/24 172.16.2.1" Chapter35.txt:3. Note it has not yet taken effect: Chapter35.txt:$ route Chapter35.txt:Kernel IP routing table Chapter35.txt:Destination Gateway Genmask Flags Metric Ref Use Iface Chapter35.txt:default 172.16.2.2 0.0.0.0 UG 100 0 0 ens33 Chapter35.txt:link-local * 255.255.0.0 U 1000 0 0 ens33 Chapter35.txt:172.16.2.0 * 255.255.255.0 U 100 0 0 ens33 Chapter35.txt:192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0 Chapter35.txt:4. Reload the interface to have it take effect and show it has: Chapter35.txt:$ sudo nmcli conn up "Auto Ethernet" Chapter35.txt:Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/25) Chapter35.txt:$ route Chapter35.txt:Kernel IP routing table Chapter35.txt:Destination Gateway Genmask Flags Metric Ref Use Iface Chapter35.txt:default 172.16.2.2 0.0.0.0 UG 100 0 0 ens33 Chapter35.txt:link-local * 255.255.0.0 U 1000 0 0 ens33 Chapter35.txt:172.16.2.0 * 255.255.255.0 U 100 0 0 ens33 Chapter35.txt:192.168.100.0 172.16.2.1 255.255.255.0 UG 100 0 0 ens33 Chapter35.txt:192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0 Chapter35.txt:5. Reboot and verify the route has taken effect (i.e., it is persistent: If so remove it: Chapter35.txt:$ route Chapter35.txt:Kernel IP routing table Chapter35.txt:Destination Gateway Genmask Flags Metric Ref Use Iface Chapter35.txt:default 172.16.2.2 0.0.0.0 UG 100 0 0 ens33 Chapter35.txt:link-local * 255.255.0.0 U 1000 0 0 ens33 Chapter35.txt:172.16.2.0 * 255.255.255.0 U 100 0 0 ens33 Chapter35.txt:192.168.100.0 172.16.2.1 255.255.255.0 UG 100 0 0 ens33 Chapter35.txt:192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0 Chapter35.txt:$ sudo nmcli conn mod "Auto Ethernet" -ipv4.routes "192.168.100.0/24 172.16.2.1" Chapter35.txt:$ sudo nmcli conn up "Auto Ethernet" Chapter35.txt:Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3) Chapter35.txt:$ route Chapter35.txt:Kernel IP routing table Chapter35.txt:Destination Gateway Genmask Flags Metric Ref Use Iface Chapter35.txt:default 172.16.2.2 0.0.0.0 UG 100 0 0 ens33 Chapter35.txt:link-local * 255.255.0.0 U 1000 0 0 ens33 Chapter35.txt:172.16.2.0 * 255.255.255.0 U 100 0 0 ens33 Chapter35.txt:192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0 Chapter35.txt:6. Note you can set a route with eitherrouteoripfrom the command line but it won’t survive a reboot as in: Chapter35.txt:$ sudo ip route add 192.168.100.0/24 via 172.16.2.1 Chapter35.txt:$ sudo route Chapter35.txt:.... Chapter35.txt:You can verify that a route established this way is not persistent. Chapter35.txt:知識チェック Chapter35.txt:「第35章 - ネットワーク デバイスと構成」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter35.txt:クイズ開始 Chapter35.txt:問題 35.1 Chapter35.txt:最近のシステムで使用できる、より新しいネットワーク インターフェイスのコマンド ライン ユーティリティはどれですか? Chapter35.txt:A. ip Chapter35.txt:B. ifconfig Chapter35.txt:問題 35.2 Chapter35.txt:/etc内のファイルを直接変更する場合は、NetworkManagerを使用することをお勧めします。その理由を以下から選んでください。 Chapter35.txt:A. 変更は恒久的で、再起動後も継続されます Chapter35.txt:B. 提供されるグラフィカル インターフェイスは、すべてのディストリビューションで同じです Chapter35.txt:C. /etcのディストリビューションに依存するファイルは変更しません Chapter35.txt:D. nmtuiとnmcliの用途は、すべてのLinuxディストリビューションで同じでなければなりません Chapter35.txt:問題 35.3 Chapter35.txt:ワークステーションは、Acme Companyのローカル ネットワークに接続されています。ローカル ネットワークには、他のワークステーション、DNSサーバー、およびドメインがhttp://intranet.acme.comのウェブ サーバーがあります。インターネット接続は、ローカル ネットワークにも提供されています。ワークステーションからゲートウェイ構成を削除しても、ローカル ネットワーク上のリソースへのアクセスには影響しません。True or False? Chapter35.txt:A. True Chapter35.txt:B. False Chapter35.txt:問題 35.4 Chapter35.txt:ワークステーションは、Acme Companyのローカル ネットワークに接続されています。ローカル ネットワークには、他のワークステーション、DNSサーバー、およびドメインがhttp://intranet.acme.comのウェブ サーバーがあります。インターネット接続は、ローカル ネットワークにも提供されています。ワークステーションからゲートウェイ構成を削除しても、インターネット上のリソースへのアクセスには影響しません。True or False? Chapter35.txt:A. True Chapter35.txt:B. False Chapter35.txt:問題 35.5 Chapter35.txt:ワークステーションは、Acme Companyのローカル ネットワークに接続されています。ローカル ネットワークには、他のワークステーション、DNSサーバー、およびドメインがhttp://intranet.acme.comのウェブ サーバーがあります。インターネット接続は、ローカル ネットワークにも提供されています。ワークステーションから DNS構成を削除しても、ローカル ネットワーク上のリソースへのアクセスには影響しません。True or False? Chapter35.txt:A. True Chapter35.txt:B. False Chapter35.txt:問題 35.6 Chapter35.txt:ワークステーションは、Acme Companyのローカル ネットワークに接続されています。ローカル ネットワークには、他のワークステーション、DNSサーバー、およびドメインがhttp://intranet.acme.comのウェブ サーバーがあります。インターネット接続は、ローカル ネットワークにも提供されています。ワークステーションから DNS構成を削除しても、インターネット上のリソースへのアクセスには影響しません。True or False? Chapter35.txt:A. True Chapter35.txt:B. False Chapter35.txt:問題 35.7 Chapter35.txt:ワークステーションは、Acme Companyのローカル ネットワークに接続されています。ローカル ネットワークには、他のワークステーション、DNSサーバー、およびドメインがhttp://intranet.acme.comのウェブ サーバーがあります。インターネット接続は、ローカル ネットワークにも提供されています。/etc/hostsにエントリを追加すると、DNSサーバーが機能していないときに、ワークステーションがhttp://intranet.acme.comにアクセスできるようになります。True or False? Chapter35.txt:A. True Chapter35.txt:B. False Chapter36.txt:ファイアウォール Chapter36.txt:はじめに Chapter36.txt:第36章はじめに Chapter36.txt:ファイアウォールは、システムおよびローカル ネットワークへの受信と発信の両方のアクセスを制御するために使用されます。インターネットに接続されたコンピュータへの侵入や他の種類の攻撃が現実となっている現代のネットワークにおいて、セキュリティは重要な機能です。特定のインターフェイスを介したトラフィックや特定のネットワーク アドレスを使用したトラフィックに与える信頼レベルを制御できます。 Chapter36.txt:学習目標 Chapter36.txt:この章の終わりまでに、次のことができるようになります。 Chapter36.txt:ファイアウォールとは何か、なぜ必要なのかを理解できます。 Chapter36.txt:コマンド ラインとグラフィカル インターフェイスの両方で使用可能なツールを把握できます。 Chapter36.txt:firewalldとfirewall-cmdプログラムについて説明できます。 Chapter36.txt:ゾーン、ソース、サービス、ポートの操作方法を知ることができます。 Chapter36.txt:ファイアウォール Chapter36.txt:ファイアウォールとは? Chapter36.txt:ファイアウォールは、すべてのネットワーク トラフィックの監視と制御を行うネットワーク セキュリティ システムです。受信と発信の両方のネットワーク接続とパケットにルールを適用し、特定の接続の信頼レベルとネットワーク トポロジに応じた、柔軟なバリア(ファイアウォールなど)を構築します。 Chapter36.txt:ファイアウォールは、ハードウェア ベースでもソフトウェア ベースでもかまいません。これらは、ネットワーク ルーターだけでなく、個々のコンピュータやネットワーク ノードにもあります。多くのファイアウォールにはルーティング機能もあります。 Chapter36.txt:パケット フィルタリング Chapter36.txt:ほとんどすべてのファイアウォールはパケット フィルタリングを行っています。 Chapter36.txt:情報はパケット形式でネットワークを介して送信されます。これらの各パケットには次のものが含まれます。 Chapter36.txt:ヘッダ Chapter36.txt:ペイロード Chapter36.txt:フッター Chapter36.txt:ヘッダーとフッターには、宛先と送信元のアドレス、パケットの種類、従うプロトコルの種類、さまざまなフラグ、ストリーム内のパケット番号、そして転送に関するその他のあらゆるメタデータに関する情報が含まれています。実際のデータはペイロードにあります。 Chapter36.txt:パケット フィルタリングは、アプリケーション、トランスポート、ネットワーク、データリンクなど、ネットワーク伝送の複数の階層でパケットをインターセプトします。 Chapter36.txt:ファイアウォールは、各パケットが次のことを行うための、一連のルールを確立します。 Chapter36.txt:内容、アドレスなどに基づいて承認または拒否します Chapter36.txt:何らかの方法で破棄します Chapter36.txt:別のアドレスにリダイレクトします Chapter36.txt:セキュリティの理由などに関して調査をします Chapter36.txt:パケット フィルタリングの結果として行われるルールとアクションを決定するための、さまざまなユーティリティが存在します。 Chapter36.txt:ファイアウォールの歴史 Chapter36.txt:初期のファイアウォール(1980 年代後半に遡ります)はパケット フィルタリングに基づくものでした。各ネットワーク パケットのコンテンツを検査し、ドロップ(応答せずに破棄)、拒否、または送信しました。接続状態については管理されていませんでした。パケットは複数あるトラフィック ストリームのどれかに属しているという解釈でした。 Chapter36.txt:次の世代のファイアウォールはステートフル フィルタに基づいており、パケットの接続状態も調査して、新しい接続であるか、既存の接続の一部であるか、または一部でもないのかを確認します。Dos攻撃は、この種のファイアウォールを攻撃して、過剰な負荷をかけようとします。 Chapter36.txt:ファイアウォールの第3世代はアプリケーション層のファイアウォールと呼ばれ、接続で使用しているアプリケーションとプロトコルの種類を認識します。通常のフローの一部ではないものは、すべて拒否できます。 Chapter36.txt:ファイアウォールのインターフェイスとツール Chapter36.txt:システムのファイアウォールの設定は、次の方法で実施できます。 Chapter36.txt:/etcのさまざまな構成ファイルの編集と組み合わせて、コマンド ラインから比較的低レベルのツールを使用 Chapter36.txt:堅牢なグラフィカル インターフェイスの使用。system-config-firewall、firewall-config、gufw、yastなど Chapter36.txt:ここでは、以下の理由により、低レベルのツールを使用します。 Chapter36.txt:グラフィカルなツールほど頻繁には変更されません。 Chapter36.txt:どちらかというとより多くの機能があります。 Chapter36.txt:グラフィカルなツールは多様であり、しかもGUIに依存しています。低レベルのツールはディストリビューションによって変わることはほとんどありません。ディストリビューションにとって唯一のファミリーと言えます。 Chapter36.txt:欠点は、最初は習得が難しいように思えることです。以下では、firewall-cmdとfirewall-configの両方を含む、最新のfirewalldパッケージに絞って説明します。デフォルトでそれを持たないディストリビューションの場合、演習で行うために、必要に応じてソースからインストールしてください。簡単にできます。 Chapter36.txt:iptablesを使用しない理由 Chapter36.txt:最近のほとんどのファイアウォールのインストールでは、実はユーザー側でiptablesパッケージを使用します。iptablesは現状、firewalldと同じく、カーネル ファイアウォールの実装コードをインターフェイスにしています。firewalldについては、後で詳しく説明します。 Chapter36.txt:ここではiptablesを説明しません。有用な機能の習得に時間がかかるからです。 Chapter36.txt:なお、iptablesについては、The Linux Foundationのシステム管理者シーケンスの次のコース、「LFS311-Linux for System Engineers/LFS211-Linux Networking and Administration」で詳しく説明しています。 Chapter36.txt:firewalldとfirewall-cmd Chapter36.txt:firewalldは、 Dynamic Firewall Managerと呼ばれています。ネットワーク インターフェイスや接続の信頼レベルが定義されている、ネットワーク/ファイアウォール ゾーンを利用します。これは、IPv4プロトコルとIPv6プロトコルの両方をサポートします。 Chapter36.txt:さらに、構成情報のランタイムな変更と恒久的な(持続的な)変更を分け、ファイアウォール ルールを追加するためのサービスまたはアプリケーションのインターフェイスも持っています。 Chapter36.txt:設定ファイルは/etc/firewalldと/usr/lib/firewalldに保存されます。/etc/firewalld内のファイルは他のディレクトリ内のファイルを上書きしますので、システム管理者が作業する必要があります。 Chapter36.txt:コマンド ライン ツールは、firewall-cmdです。さらに進む前に、以下を実行することをお勧めします。 Chapter36.txt:$ firewall-cmd --help Chapter36.txt:Usage: firewall-cmd [OPTIONS...].... Chapter36.txt:Status Options Chapter36.txt: --state Return and print firewalld state Chapter36.txt: --reload Reload firewall and keep state information Chapter36.txt: --complete-reload Reload firewall and loose state information Chapter36.txt: --runtime-to-permanent Create permanent from runtime configuration.... Chapter36.txt:約200行表示されて長いので、ここには書きません。 Chapter36.txt:ただし、ほとんどのオプションは名前が内容を示しており、かなりわかりやすいです。サービスの1つとして、firewalldは古いiptablesを置き換えます。firewalldとiptablesの両方のサービスを同時に実行するとエラーになります。 Chapter36.txt:firewalldサービスの状態 Chapter36.txt:firewalldは、ファイアウォールの使用と構成を実行するサービスであり、通常の方法で有効化/無効化、開始/停止を行うことができます。 Chapter36.txt:$ sudo systemctl [enable/disable] firewalld Chapter36.txt:$ sudo systemctl [start/stop] firewalld Chapter36.txt:次のいずれかの方法で現在の状態を表示できます。 Chapter36.txt:$ sudo systemctl status firewalld Chapter36.txt:firewalld.service - firewalld - dynamic firewall daemon Chapter36.txt: Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) Chapter36.txt: Active: active (running) since Tue 2015-04-28 12:00:59 CDT; 5min ago Chapter36.txt: Main PID: 777 (firewalld) Chapter36.txt:... Chapter36.txt:$ sudo firewall-cmd --state Chapter36.txt:running Chapter36.txt:IPv4を使用するときに1つ以上のネットワーク インターフェイスを持っている場合は、IP転送をオンにする必要があることに注意してください。ランタイム時にこれを行うには、次のいずれかを実行します。 Chapter36.txt:$ sudo sysctl net.ipv4.ip_forward=1 Chapter36.txt:$ echo 1 > /proc/sys/net/ipv4/ip_forward Chapter36.txt:echoを正しく実行させるには、2番目のコマンドをrootとして実行する必要があります。ただし、これは恒久的ではありません。恒久的にするには、次の行を/etc/sysctl.confに追加する必要があります。 Chapter36.txt:net.ipv4.ip_forward=1 Chapter36.txt:その後、再起動します。もしくは、再起動せずに新しい設定を読み込むためには次を入力します。 Chapter36.txt:$ sudo sysctl -p Chapter36.txt: Chapter36.txt:ゾーン Chapter36.txt:firewalldはゾーンと連携して動作します。それぞれのゾーンには、信頼レベルと受信/発信パケットに対する特定の動作が定義されています。各インターフェイスは特定のゾーンに属します(通常は、NetworkManagerが該当するゾーンをfirewalldに通知します)。ゾーンは、firewall-cmdまたはfirewall-config GUIで変更できます。 Chapter36.txt:ゾーンの詳細については、各ボックスをクリックして展開してください。 Chapter36.txt:ゾーン Chapter36.txt:drop Chapter36.txt:すべての受信パケットは応答せずに破棄されます。発信接続のみが許可されます。 Chapter36.txt:block Chapter36.txt:すべての受信ネットワーク接続が拒否されます。許可される接続は、システム内からの接続のみです。 Chapter36.txt:public Chapter36.txt:ネットワーク上のコンピュータを信頼しません。意識的に選択された特定の着信接続のみが許可されます。 Chapter36.txt:external Chapter36.txt:ルーターなどでマスカレードが使用されている場合に使用されます。信頼レベルは、publicゾーンと同じです。 Chapter36.txt:dmz (Demilitarized Zone) Chapter36.txt:一部の(すべてではない)サービスへのアクセスを公開する場合に使用します。特定の受信接続のみが許可されます。 Chapter36.txt:work Chapter36.txt:接続されたノードを(完全ではありませんが)無害であると信頼します。特定の受信接続のみが許可されます。 Chapter36.txt:home Chapter36.txt:ほとんどの場合、他のネットワーク ノードを信頼しますが、許可する受信接続を選択します。 Chapter36.txt:internal Chapter36.txt:workゾーンに似ています。 Chapter36.txt:trusted Chapter36.txt:すべてのネットワーク接続が許可されます。 Chapter36.txt:システム インストール時に、すべてではないにしても、ほとんどのLinuxディストリビューションは、すべてのインターフェイスのデフォルトとしてpublicゾーンを選択します。 Chapter36.txt:説明したいくつかのゾーンの違いは、確実なものではありません。ここで詳細に説明することはしませんが、必要以上にオープンなゾーンを使用しないでください。 Chapter36.txt:ゾーン管理の例 Chapter36.txt:firewall-cmdで利用可能なオプションを確認する場合: Chapter36.txt:$ firewall-cmd --help Chapter36.txt:.... Chapter36.txt:Zone Options Chapter36.txt:--get-default-zone Print default zone for connections and interfaces Chapter36.txt:--set-default-zone= Set default zone Chapter36.txt:--get-active-zones Print currently active zones Chapter36.txt:--get-zones Print predefined zones [P] Chapter36.txt:--get-services Print predefined services [P} Chapter36.txt:--get-icmptypes Print predefined icmptypes [P] Chapter36.txt:--get-zone-of-interface= Print name of the zone the interface is bound to [P] Chapter36.txt:--get-zone-of-source=[/] Print name of the zone the source[/mask] is bound to [P] Chapter36.txt:--list-all-zones List everything added for or enabled in all zones [P] Chapter36.txt:--new-zone= Add a new zone [P only] Chapter36.txt:--delete-zone= Delete an existing zone [P only] Chapter36.txt:--zone= Use this zone to set or query options, else default zone Chapter36.txt: Usable for options marked with [Z] Chapter36.txt:--get-target Get the zone target [P] [Z] Chapter36.txt:--set-target= Set the zone target [P] [Z] Chapter36.txt:デフォルト ゾーンを取得する場合: Chapter36.txt:$ sudo firewall-cmd --get-default-zone Chapter36.txt:public Chapter36.txt:現在使用されているゾーンのリストを取得する場合: Chapter36.txt:$ sudo firewall-cmd --get-active-zones Chapter36.txt:public Chapter36.txt: interfaces: eno16777736 Chapter36.txt:利用可能なすべてのゾーンをリストする場合: Chapter36.txt:$ sudo firewall-cmd --get-zones Chapter36.txt:block dmz drop external home internal public trusted work Chapter36.txt:デフォルト ゾーンをtrustedに変更し、それを元に戻す場合: Chapter36.txt:$ sudo firewall-cmd --set-default-zone=trusted Chapter36.txt:success Chapter36.txt:$ sudo firewall-cmd --set-default-zone=public Chapter36.txt:success Chapter36.txt:インターフェイスを特定のゾーンに一時的に割り当てる場合: Chapter36.txt:$ sudo firewall-cmd --zone=internal --change-interface=eno1 Chapter36.txt:success Chapter36.txt:インターフェイスを特定のゾーンに恒久的に割り当てる場合: Chapter36.txt:$ sudo firewall-cmd --permanent --zone=internal --change-interface=eno1 Chapter36.txt:success Chapter36.txt:これにより、ファイル/etc/firewalld/zones/internal.xmlが作成されます。 Chapter36.txt:特定のインターフェイスに関連付けられたゾーンを確認する場合: Chapter36.txt:$ sudo firewall-cmd --get-zone-of-interface=eno1 Chapter36.txt:public Chapter36.txt:最後に、特定のゾーンに関するすべての詳細を取得する場合: Chapter36.txt:$ sudo firewall-cmd --zone=public --list-all Chapter36.txt:public (default, active) Chapter36.txt: interfaces: eno16777736 Chapter36.txt: sources: Chapter36.txt: services: dhcpv6-client ssh Chapter36.txt: ports: Chapter36.txt: masquerade: no Chapter36.txt: forward-ports: Chapter36.txt: icmp-blocks: Chapter36.txt: rich rules: Chapter36.txt:firewalldの制御は、firewall-cmdプログラムを介して行います。より詳細な情報は次の方法で取得できます。 Chapter36.txt:man firewalld-cmd Chapter36.txt:ソース管理 Chapter36.txt:どのゾーンも、ネットワーク インターフェイスだけでなく、特定のネットワーク アドレスにも結び付けることができます。次の場合、パケットはそのゾーンに割り当てられます。 Chapter36.txt:パケットをすでにそのゾーンに結び付けられているアドレスから取得している場合。もしそうでなければ、 Chapter36.txt:パケットをそのゾーンに結び付けられたインターフェイスから取得している場合。 Chapter36.txt:上記の取得方法に当てはまらないパケットは、デフォルト ゾーン(通常はpublic)に割り当てられます。 Chapter36.txt:ソースをゾーンに(恒久的に)設定する場合には、次のようにします。 Chapter36.txt:$ sudo firewall-cmd --permanent --zone=trusted --add-source=192.168.1.0/24 Chapter36.txt:success Chapter36.txt:これは、192.168.1.xのIPアドレスを持つソースをすべてtrustedゾーンに追加することを意味します。 Chapter36.txt:--remove-sourceオプションを使用すれば、以前に割り当てられたソースをゾーンから削除することができます。また、--change-sourceを使用すれば、ゾーンを変更できることも覚えておいてください。 Chapter36.txt:以下を使用して、ゾーンに結び付けられたソースをリストできます。 Chapter36.txt:$ sudo firewall-cmd --permanent --zone=trusted --list-sources Chapter36.txt:192.168.1.0/24 Chapter36.txt:上記の両方のコマンドで、--permanentオプションを省略すると、現在のランタイム動作のみに適用されます。 Chapter36.txt:サービス管理 Chapter36.txt:これまで、特定のインターフェイスやアドレスをゾーンに割り当てましたが、ゾーン内でアクセスできるサービスやポートについては説明していませんでした。 Chapter36.txt:これらについて利用可能なすべてのサービスは以下のコマンドで表示できます。 Chapter36.txt:$ sudo firewall-cmd --get-services Chapter36.txt:RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https Chapter36.txt:また、特定のゾーンで現在利用可能なサービスを表示する場合: Chapter36.txt:$ sudo firewall-cmd --list-services --zone=public Chapter36.txt:dhcpv6-client ssh Chapter36.txt:ゾーンにサービスを追加する場合: Chapter36.txt:$ sudo firewall-cmd --permanent --zone=home --add-service=dhcp Chapter36.txt:success Chapter36.txt:$ sudo firewall-cmd --reload Chapter36.txt:--reloadを指定した2番目のコマンドは、変更を有効にするために必要です。/etc/firewalld/servicesのファイルを編集して、新しいサービスを追加することもできます。 Chapter36.txt:ポート管理 Chapter36.txt:ポート管理はサービス管理に非常に似ています。 Chapter36.txt:$ sudo firewall-cmd --zone=home --add-port=21/tcp Chapter36.txt:success Chapter36.txt:$ sudo firewall-cmd --zone=home --list-ports Chapter36.txt:21/tcp Chapter36.txt:/etc/servicesを見ると、port 21がftpに対応していることが確認できます。 Chapter36.txt:$ grep " 21/tcp" /etc/services Chapter36.txt:ftp 21/tcp Chapter36.txt:演習 Chapter36.txt:課題 36.1: firewalldのインストール Chapter36.txt:🚩 Chapter36.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter36.txt:【【これ以降は橋本さん訳を参照】】 Chapter36.txt:While most Linux distributions now have the firewalld package (which includes the firewall-cmd multi-purpose utility) avail-able, it might not be installed on your system. Chapter36.txt:First you should check to see if it is already installed, with Chapter36.txt:$ which firewalld firewall-cmd Chapter36.txt:/usr/sbin/firewalld Chapter36.txt:/usr/bin/firewall-cmd Chapter36.txt:If you fail to find the program, then you need to install with one of the following, depending on your distribution in the usual way: Chapter36.txt:$ sudo yum install firewalld Chapter36.txt:$ sudo zypper install firewalld Chapter36.txt:$ sudo apt install firewalld Chapter36.txt:If this fails, the firewalld package is not available for your distribution. In this case you will have to install from source. Chapter36.txt:To do this, go to https://fedorahosted.org/firewalld/ and you can get the git source repository, or you can easily download the most recent tarball. Chapter36.txt:Then you have to follow the common procedure for installing from source (using whatever the current version is): Chapter36.txt:$ tar xvf firewalld-0.3.13.tar.bz2 Chapter36.txt:$ cd firewalld-0.3.13 Chapter36.txt:$ ./configure Chapter36.txt:$ make Chapter36.txt:$ sudo make install Chapter36.txt:Note this source also has an uninstall target: Chapter36.txt:$ sudo make uninstall Chapter36.txt:in case you have regrets. Chapter36.txt:You will have to deal with any inadequacies that come up in the./configure step, such as missing libraries etc. When you install from a packaging system, the distribution takes care of this for you, but from source it can be problematic. If you have run the Linux Foundation’s ready-for.sh script on your system, you are unlikely to have problems. Chapter36.txt:課題 36.2: firewall-cmdを使う Chapter36.txt:🚩 Chapter36.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter36.txt:Exercise 36.2: Examining firewall-cmd Chapter36.txt:We have only scratched the surface of how you can use the firewalld package. Almost everything is done by deploying firewall-cmd which is empowered to do a large variety of tasks, using options with very clear names. Chapter36.txt:To get a sense of this, there is really no substitute for just doing: Chapter36.txt:$ firewall-cmd --help Chapter36.txt:Usage: firewall-cmd [OPTIONS...] Chapter36.txt:.... Chapter36.txt:Service Options Chapter36.txt:--new-service= Chapter36.txt:Add a new service [P only] Chapter36.txt:--delete-service= Chapter36.txt:Delete and existing service [P only] Chapter36.txt:.... Chapter36.txt:which we will not reproduce here as it is 409 lines on an RHEL 8 system. Chapter36.txt:For more detailed explanation of anything which piques your interest, doman firewall-cmd which explains things more deeply,and man firewalld which gives an overview, as well as a listing of other manpages that describe the various configuration files in /etc, and elucidate concepts such as zones and services. Chapter36.txt:課題 36.3: ゾーンにサービスを追加する Chapter36.txt:🚩 Chapter36.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter36.txt:Exercise 36.3: Adding Services to a Zone Chapter36.txt:Add the http and https services to the public zone and verify that they are currently listed. Chapter36.txt:Solution 36.3 Chapter36.txt:$ sudo firewall-cmd --zone=public --add-service=http Chapter36.txt:success Chapter36.txt:$ sudo firewall-cmd --zone=public --add-service=http Chapter36.txt:ssuccess Chapter36.txt:$ sudo firewall-cmd --list-services --zone=public Chapter36.txt:dhcpv6-client http https ssh Chapter36.txt:Note if you had run Chapter36.txt:$ sudo firewall-cmd --reload Chapter36.txt:$ sudo firewall-cmd --list-services --zone=public Chapter36.txt:dhcpv6-client ssh Chapter36.txt:after adding the new services, they would disappear from the list! This curious behavior is because we did not include the --permanent flag when adding the services, and the --reload option reloads the known persistent services only. Chapter36.txt:演習 36.4. ファイアウォールGUIを使用する Chapter36.txt:🚩 Chapter36.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter36.txt:Exercise 36.4: Using the firewall GUI Chapter36.txt:Each distribution has its own graphical interface for firewall administration. On Red Hat-based systems you can run firewall-config, on Ubuntu it is called gufw, and on openSUSE you can find it as part of yast on the graphical menu system. Chapter36.txt:We have concentrated on the command line approach simply because we want to be distribution-flexible. However, for mostrelatively simple firewall configuration tasks, you can probably do them efficiently with less memorization from the GUI. Chapter36.txt:Once you launch the firewall configuration GUI, do the previous exercise of adding http and https to the public zone, and verify that it has taken effect. Chapter36.txt:Make sure you take the time to understand the graphical interface. Chapter36.txt:知識チェック Chapter36.txt:「第36章 - ファイアウォール」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter36.txt:クイズ開始 Chapter36.txt:問題 36.1 Chapter36.txt:次のうち、正しいものはどれですか? 当てはまるものをすべて選択してください。 Chapter36.txt:A. iptablesパッケージは、firewalldのより新しい代替品です Chapter36.txt:B. firewalldパッケージは、iptablesのより新しい代替品です Chapter36.txt:C. firewalld-cmdは非恒久的な変更のみを行うことができます Chapter36.txt:D. /etc/firewalldの構成ファイルは、/usr/lib/firewalldの構成ファイルを上書きします。 Chapter37.txt:システムの起動とシャットダウン Chapter37.txt:はじめに Chapter37.txt:第37章はじめに Chapter37.txt:このビデオでは、この章で説明するトピックの概要を簡単に説明します。 Chapter37.txt:学習目標 Chapter37.txt:この章の終わりまでに、次のことができるようになります。 Chapter37.txt:起動プロセスを説明できます。 Chapter37.txt:いくつかの種類のブートローダーを特定できます。 Chapter37.txt:BIOSの機能を説明できます。 Chapter37.txt:関連する構成ファイルを特定できます。 Chapter37.txt:システムがシャットダウンして再起動する方法を説明できます。 Chapter37.txt:システムの起動とシャットダウン Chapter37.txt:ブート シーケンス Chapter37.txt:ブート シーケンスの基本的な手順は次のとおりです。 Chapter37.txt:BIOS/UEFIは、ブート プログラムまたはブートローダーを見つけて実行します。 Chapter37.txt:ブートローダーはカーネルをロードします。 Chapter37.txt:カーネルは initプロセスを開始します(pid=1)。 Chapter37.txt:initは、systemdまたは比較的古いUpstartやSysVinit起動スクリプトを使用して、システムの初期化を処理します。 Chapter37.txt:コンピュータに電源が供給されると、コンピュータはBIOS(Basic Input Output System)が命令した操作を実行します。 Chapter37.txt:まず、BIOSはPOST(Power On Self Test)を実行します。POSTは、メモリとハードウェアをチェックし、特定の場所またはデバイスでブート プログラムを探します。通常、ブート プログラムはデバイスのMBR(マスター ブート レコード)にあります。コンピュータの制御は、このブート プログラム(通常は GRUB)に移ります。 Chapter37.txt:次に、ブート プログラムがカーネルをメモリにロードし、実行します。x86プラットフォーム(および他の多くのプラットフォーム)では、最初にカーネルを適切な場所で解凍する必要があります。次に、ハードウェア チェックを実行し、重要な周辺機器ハードウェアにアクセスし、最終的にinitプロセスを実行します。この最初のプロセスは、システムの起動を継続し、systemdまたはUpstartを管理します。またはSysVinitが使用されている場合は適切なinitスクリプトを実行します。 Chapter37.txt:最近のコンピュータは、BIOSの代替として、多くの同じ機能を実行するUEFIに移行しています。 Chapter37.txt:ブート シーケンス Chapter37.txt:BIOS Chapter37.txt:x86アーキテクチャでは、BIOSには、キーボード、ディスプレイ画面、ディスク ドライブ、シリアル通信、およびその他のさまざまな機能への、初期アクセスに必要なすべてのコードが含まれています。全システムが実行されると、これらのデバイスのほとんどは、専用のデバイス ドライバをロードして処理を引き継がせることで機能を強化します。 Chapter37.txt:BIOSは通常、コンピュータ付属のROMチップに書き込まれています(多くの場合、ROM BIOSと呼ばれます)。これにより、BIOSは常に使用可能になり、ディスク障害によって損傷することはありません。そして、コンピュータが自分自身でブートすることも可能になります。 Chapter37.txt:ブート プロセス中に、BIOSはMBRからブートローダーをロードします。 Chapter37.txt:ブートローダー Chapter37.txt:クリックして各ボックスを展開し、Linuxで使用されるさまざまなブートローダーについて学習します。 Chapter37.txt:ブートローダー Chapter37.txt:GRUB Chapter37.txt:事実上、(非組み込みの)すべての最新LinuxディストリビューションはGRUB(GRand Unified Boot Loader)を使用します。GRUBの機能には、複数のオペレーティング システムを起動する機能、シリアル ケーブルでの使いやすさを可能にするグラフィカルおよびテキスト ベースのインターフェイス、インタラクティブな設定のための強力なコマンド ライン インターフェイス、ネットワーク ベースのディスクレス ブート、およびその他の高度な機能が含まれます。 Chapter37.txt:efibootmgr Chapter37.txt:efibootmgrは、実際にはブートローダーではなく、ブート マネージャーであり、マルチ ブートのEFIシステムでGRUBと組み合わせて使用されます。 Chapter37.txt:LILO Chapter37.txt:Linux Loader(LILO)は古くて時代遅れです。 Chapter37.txt:Das U-Boot Chapter37.txt:Das U-Bootは、組み込みLinuxシステム向けとして最も一般的なローダーです。他にもbarebootなどいくつかのブートローダーがあります。ただし、このコースでは組み込みに関しては説明しませんので省略します。 Chapter37.txt:/etcの構成ファイル Chapter37.txt:以前に、Linuxディストリビューション同士の協力関係について説明しましたが、特定の種類のファイルをシステムの標準の場所に置くという合意に従うのもその1つと考えます。 Chapter37.txt:特に、システム全体の構成ファイルは、通常/etcとそのサブディレクトリに置かれますが、ユーザー固有の構成ファイルは、多くの場合、個々のホーム ディレクトリに置かれます。でも、これは完全に正しいとは言えません。たとえば、デフォルトの構成情報は/usr/lib/systemdに保存されている場合がありますが、/etc/systemd内のファイルによって上書きされる可能性があるのです。 Chapter37.txt:歴史的な経緯を見ると、Linuxディストリビューションは、/etcのどこに情報を置くかについて、独自のルールを進化させました。たとえば、すべてのRed Hat派生のシステムでは/etc/sysconfigを広範囲に使用していますが、Debianベースのシステムでは/etc/defaultを使用しています。興味深いことに、RHELとSUSEはその両方を使用しています。 Chapter37.txt:/etc/sysconfig Chapter37.txt:このディレクトリとそのサブディレクトリ内のファイルは、多くのシステム ユーティリティ サービスが使用します。それらは、システムがサービスを開始したり停止したりするとき、または状態を照会するときに、問合せたり呼び出されたりします。 Chapter37.txt:RHELシステムの場合: Chapter37.txt:$ ls /etc/sysconfig Chapter37.txt:/etc/sysconfig on RHEL 8の例 Chapter37.txt:ここでは1つのファイルのスクリーンショットを示します。このファイルは、システムの起動時にこのファイルを読み取り、selinuxの設定をします。selinuxの設定を読み取って表示しています。 Chapter37.txt:$ cat /etc/sysconfig/selinux Chapter37.txt:構成例:/etc/sysconfig/selinux Chapter37.txt:/etc/default Chapter37.txt:スクリーンショットは、Ubuntuシステムの/etc/defaultディレクトリを示しています。 Chapter37.txt:このディレクトリの用途は、Red Hatの/etc/sysconfigの用途に似ています。 Chapter37.txt:ファイルは、サービスを開始するときに追加のオプションを提供するために使用されます。 Chapter37.txt:通常、環境変数を設定するコードが含まれています。 Chapter37.txt:たとえば、ファイル/etc/default/useraddは、新しいユーザー アカウントの作成時に使用されるデフォルトを設定します。Red Hatベースのものを含むすべての重要なLinuxディストリビューションは、/etc/sysconfigがまだあるとしても/etc/defaultを使います。 Chapter37.txt:/etc/defaultの例 Chapter37.txt:シャットダウンと再起動 Chapter37.txt:shutdownコマンドは、システムを安全な方法で停止するために使用します。システムが停止することをすべてのユーザーに通知してから、正常かつ安全な方法で停止します。シャットダウン後に、システムは停止または再起動されます。ここでいくつかのshutdownの例を示します。 Chapter37.txt:$ sudo shutdown -h +1 "Power Failure imminent" Chapter37.txt:$ sudo shutdown -h now Chapter37.txt:$ sudo shutdown -r now Chapter37.txt:$ sudo shutdown now Chapter37.txt:オプションは、内蔵のヘルプ メッセージで簡単に表示できます。 Chapter37.txt:shutdownコマンドの例 Chapter37.txt:オプションの指定がない場合(たとえば、shutdown now)、デフォルトではシステムの電源を完全に切ります。Ubuntuなどの一部のディストリビューションはこれとは違い、電源を切る代わりにシングル ユーザー モードに移行します。 Chapter37.txt:よくある間違いの1つは、時間の引数(nowや実際の時刻など)を指定しないことです。これは必須です。 Chapter37.txt:また、多くのベテラン ユーザーが頻繁に使用する従来のコマンド、reboot、halt、poweroffも、このコマンドでできます。 Chapter37.txt:演習 Chapter37.txt:課題 37.1: シャットダウン vs. 停止(Halt) vs. リブート Chapter37.txt:🚩 Chapter37.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter37.txt:【【これ以降は橋本さんの訳を参照】】 Chapter37.txt:NOTE: This exercise requires that it be run from the console (i.e., not over the network through SSH). Chapter37.txt:1. Reboot the system using shutdown. Chapter37.txt:2. Power off the system using shutdown. Chapter37.txt:3. Power the system back up. Chapter37.txt:Solution 37.1 Chapter37.txt:1.$ sudo shutdown -r now Chapter37.txt:2.$ sudo shutdown -h now Chapter37.txt:3. Press the power button, or restart your virtual machine. Chapter37.txt:知識チェック Chapter37.txt:「第37章 - システムの起動とシャットダウン」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter37.txt:クイズ開始 Chapter37.txt:問題 37.1 Chapter37.txt:ブート シーケンスの基本ステップはどの順序が正しいですか? Chapter37.txt:i. initプロセスを開始します Chapter37.txt:ii. Linuxカーネルとinitrdまたはinitramfsのイメージがメモリにロードされ、カーネルが実行されます Chapter37.txt:iii. 追加のカーネル モジュール(デバイス ドライバを含む)が読み込まれ、システム サービスが開始されます Chapter37.txt:iv. ブートローダーが実行されます Chapter37.txt:A. i, ii, iv, iii Chapter37.txt:B. iv, ii, i, iii Chapter37.txt:C. iv. iii, i, ii Chapter37.txt:D. i, ii, iii, iv Chapter38.txt:GRUB Chapter38.txt:はじめに Chapter38.txt:第38章はじめに Chapter38.txt:単独で起動できないシステムは、役に立ちません。Linuxシステムには、ブート方法に多くの柔軟性があります。カーネルのバージョンやオプションを選択したり、マルチ ブートでオペレーティング システムを選択したりすることもできます。組み込み以外のほとんどのシステムは、Grand Unified Boot Loaderを使用して、システム初期化の最初の手順を実行します。GRUBには、インタラクティブな機能と安全なパスワード機能もあります。 Chapter38.txt:学習目標 Chapter38.txt:この章の終わりまでに、次のことができるようになります。 Chapter38.txt:GRUBの役割を説明できます。 Chapter38.txt:GRUBバージョン1とGRUBバージョン2の違いを理解できます。 Chapter38.txt:起動時に行えるインタラクティブな選択について説明できます。 Chapter38.txt:GRUBをインストールできます。 Chapter38.txt:GRUBが必要とする構成ファイルが、どのように使用および変更されるかを説明できます。 Chapter38.txt:GRUB Chapter38.txt:GRUBとは? Chapter38.txt:すべてのx86ベースのLinuxシステム(組み込み分野以外)は現在、システム起動の初期段階の処理に GRUB(GRand Unified Bootloader)を使用しています。他のプラットフォームにも、IA64(Itanium)などのEFIシステムで使用されるELILOや、多くの組み込み構成で使用されるDas U-BOOTなど、同等のものがあります。 Chapter38.txt:GRUBのいくつかの重要な機能は次のとおりです。 Chapter38.txt:ブート時に代替のオペレーティング システムを選択できます。 Chapter38.txt:代替カーネルや初期RAMディスクは、特定のオペレーティング システムのブート時に選択できます。 Chapter38.txt:ブート パラメータは、事前に構成ファイルなどを編集することなく、ブート時に簡単に変更できます。 Chapter38.txt:GRUBのバージョン Chapter38.txt:GRUBバージョン2は、バージョン1の後継として、最新のすべてのLinuxディストリビューションで使われています。詳細はバージョンによって異なりますが、基本的な考え方は同じです。したがって、ここではバージョン2を中心に説明します。 Chapter38.txt:ブート時に、基本構成ファイルである、/boot/grub/grub.cfg、/boot/grub2/grub.cfg、/boot/efi/EFI/redhat/grub.cfgのいずれかが読み取られます。 Chapter38.txt:このファイルは、/etc/grub.dディレクトリと/etc/default/grubにある構成ファイルに基づいて、update-grub(またはgrub2-mkconfig)によって自動生成されます。決して手動で編集しないでください。通常、これらのユーティリティは、Linuxカーネルの更新やコンパイルで使用される、他のディストリビューション スクリプトを使って実行します。 Chapter38.txt:GRUBを使用したブート時の対話型による選択 Chapter38.txt:システムのブート時に、最初のPOSTとBIOSのステージの後、GRUBが開始され、メニューが表示されます。このメニューには、(少なくとも背景のスプラッシュ画面に対して)グラフィック表示が含まれている場合と含まれていない場合があります。 Chapter38.txt:メニューには、1つ以上のLinuxディストリビューションまたはオペレーティング システムからブート可能なイメージのリストが含まれています。さらに多くの選択肢があるサブ メニューもあります。 Chapter38.txt:上矢印、下矢印、Enterキーを使用して、正しいブート オプションを選択するか、デフォルトの選択肢が入力されるまで待つこともできます。この待ち時間は設定可能です。 Chapter38.txt:さらに多くのことができます。エントリを選択した後、eを入力すればインタラクティブ シェルに入り、対話型で編集することができます。このシェルでは、特定のブート オプションを記述する構成ファイルのスタンザを変更できます。通常、これはカーネル コマンド ラインを変更するために使います。たとえば、コマンド ラインの最後にsingleという単語を追加すると、その修正は反映され、シングル ユーザー モードでシステムを起動します。目的の変更が行われたら、正しいキーを押してシステムをブート起動します。 Chapter38.txt:画面の一番下には、正確なキー ストロークに関する情報が表示されるので、覚える必要はありません。 Chapter38.txt:🚩 Chapter38.txt:構成に加えた変更は恒久的ではないため、次回の起動時に失われます。恒久的な変更を行うには、適切なユーティリティを使用して、マシン上の実際のファイルを変更する必要があります。 Chapter38.txt:特定のスタンザを編集するのではなく、シェルを使用することもできます。さまざまなコマンドを実行し、GRUBを再インストールまたは修復することもできます。構成ファイルが見つからないなどの重大な問題がある場合は、GRUBはこのコマンド ライン モードに戻るので、利用者はレスキュー メディアに頼らずにシステムを救うことができる場合があります。 Chapter38.txt:GRUBのインストール Chapter38.txt:インストールという言葉は、GRUBに関していくつかの異なる意味を持ちます。 Chapter38.txt:grubプログラムと関連ユーティリティの、適切な場所へのインストール。GRUB 1には実際にはgrubと呼ばれるプログラムがありますが、GRUB 2にはgrub2-*やgrub-*などの名前のユーティリティがたくさんあります。パッケージ化の方法は、ディストリビューションによって違います。 Chapter38.txt:ブート時に必要なGRUBの設定ファイルのインストール。これらは/boot/grubまたは/boot/grub2の下にある必要があります。これは、/bootディレクトリに存在する必要がある、Linuxカーネルが必要とするファイル(vmlinuz-*、initramfs-*)とは別のものです。 Chapter38.txt:GRUBをシステムのブートローダーとしてインストール。通常、ハードディスク全体の先頭セクタ(MBR)にインストールしますが、パーティション内にインストールし、1つのGRUBから別のGRUBへチェーンロードすることもできます。 Chapter38.txt:システムのインストール中にGRUBをインストールしない場合、または後で再インストールする必要がある場合、そのための正確な手順はGRUBのバージョンによって異なります。どちらのバージョンでも、関連する重要な構成ファイルには、いくつかのグローバル パラメータと、各オペレーティング システムまたはカーネルの構成に関するスタンザが含まれています。 Chapter38.txt:バージョン2 の場合、インストール手順は次のように簡単です。 Chapter38.txt:$ sudo grub2-install /dev/sda Chapter38.txt:このようなコマンドを実行する前に、manページを注意して読んでください。多くのオプションがあります。GRUBを台無しにすると、システムが起動できなくなる可能性があります。特に、/bootディレクトリがどのパーティションに存在するかは、システムに伝える必要があります。 Chapter38.txt:EFIマルチ ブート システムでは、より複雑になる可能性があるため、efibootmgrも実行する必要があります。詳細については、manページを参照してください。 Chapter38.txt:GRUBデバイスの命名規則 Chapter38.txt:どのバージョンのGRUBでも、最初のハードドライブはhd0、2番目はhd1、などと表示されます。ただし、バージョン1ではパーティションは0からカウントを開始し、バージョン2 では1 からカウントを開始します。 Chapter38.txt:sda1 は GRUB 2 では(hd0,1)ですが、GRUB 1では(hd0,0)です。 Chapter38.txt:sdc4 は GRUB 2では(hd2,4)ですが、GRUB 1では(hd2,3)です。 Chapter38.txt:これに関する混乱は、破壊的なことになると強調するほどのものではありません。ただ、GRUBの両方のバージョンは、sda#表記や(hd0,#)を使用することもあるため、さらに混乱する可能性があります。 Chapter38.txt:構成ファイル内で、各スタンザはルート パーティションを指定する必要があります。これは、システムのルート ディレクトリとは意味が異なります。ここでは、パーティションはカーネル自体を(/bootディレクトリに)含んでいるという意味です。たとえば、/bootを独自のパーティションに置くことは非常に一般的です。ここではそれを/dev/sda1とします。 Chapter38.txt:この場合、kernel (hd0,0)/vmlinuz ...を実行しても問題ありません。代わりに、ルートの行を省略します。 Chapter38.txt:grub.cfgを見てみれば、上記が明らかです。 Chapter38.txt:GRUB構成ファイル Chapter38.txt:grub.cfgは直接編集すべきではないことを思い出してください。/etcディレクトリには注意が必要な2つのファイルなどがあります。これらは、システムが新しいカーネルで変更されたり、関連する更新プログラム(update-grubやgrubbyなど)が手動で実行される時に、 grub.cfgを再構築するために使用されます。 Chapter38.txt:1つはファイルで、/etc/default/grubです。下のスクリーンショットは、あるRHEL 7システムで/etc/default/grubがどのように見えるかを示しています。Red Hatは、他のディストリビューションと比べるとこのファイルをスリム化しています。 Chapter38.txt:RHEL 8の/etc/default/grubの例 Chapter38.txt:注目すべきもう1つはディレクトリで、/etc/grub.dです。下のスクリーンショットは、Ubuntu 19.10でどう見えるかを示しています。 Chapter38.txt:2つのファイルとディレクトリ(/etc/default/grubと/etc/grub.d)は、構成ファイルが更新された時に昇順で実行されます。それらは自己文書化されているため、ここでは説明しません。それらを参照することをお勧めします。 Chapter38.txt:/etc/grub.dのコンテンツの例 Chapter38.txt:Boot Loader Specification構成ファイル(BLSCFG) Chapter38.txt:BLSCFGで構成されたシステムでは、カーネルのインストールや更新などの際にはgrubコマンドを使用します。ブートしても同じ対話型のgrub画面が表示されるので、いつものように使用できます。 Chapter38.txt:ただし、いくつか重要な違いがあります。たとえば、/boot/grub2/grub.cfgはまだ存在しますが、選択できる各カーネルの詳細情報とオプションはそこにはありません。それらは/boot/loader/entriesにあり、選択肢ごとに1つのファイルが存在します。 Chapter38.txt:grub2-switch-to-blscfgプログラムを実行すると、新しいスキームに切り替えることができます。/etc/default/grubにある変数GRUB_ENABLE_BLSCFGS=[true|false]を変更することで、この新しいスキームの方法をオンまたはオフにすることもできます。たとえば、RHEL 8システムの場合: Chapter38.txt:$ sudo cat /etc/default/grub Chapter38.txt:GRUB_TIMEOUT=5 Chapter38.txt:GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" Chapter38.txt:GRUB_DEFAULT=saved Chapter38.txt:GRUB_DISABLE_SUBMENU=true Chapter38.txt:GRUB_TERMINAL_OUTPUT="console" Chapter38.txt:GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet" Chapter38.txt:GRUB_DISABLE_RECOVERY="true" Chapter38.txt:GRUB_ENABLE_BLSCFG=true Chapter38.txt:/boot/loader/entries Chapter38.txt:Boot Loader Specification構成のスキームを使用すると、ブート可能な各カーネルは/boot/loader/entriesにエントリを取得します。 Chapter38.txt:/boot/grub2/grubenvには、次のようないくつかの環境変数を設定できます。 Chapter38.txt:kernelopts Chapter38.txt:tuned_initrd Chapter38.txt:tuned_params Chapter38.txt:grub_users Chapter38.txt:/boot/grub2/grubenvは、デフォルトのブート カーネルも設定します。 Chapter38.txt:# GRUB Environment Block Chapter38.txt:kernelopts=root=UUID=6921b738-1e36-429a-89be-8b97cf2f0556 ro crashkernel=auto rhgb quiet Chapter38.txt:boot_success=1 Chapter38.txt:boot_indeterminate=0 Chapter38.txt:saved_entry=ce0c82382a8a4c80bbd6931a917a2f1c-5.5.11.0˜custom Chapter38.txt:################################################################################..... Chapter38.txt:デモ:GRUBの使用 Chapter38.txt:このビデオでは、GRUBを使用してさまざまなオペレーティング システム、カーネルを選択する方法、またはシステムをブートするカーネル コマンド ライン パラメータを指定する方法について簡単に説明します。 Chapter38.txt:演習 Chapter38.txt:課題 38.1: GRUBを使用した非グラフィカル モードへのブート Chapter38.txt:🚩 Chapter38.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter38.txt:【【これ以降は橋本さんの訳を参照】】 Chapter38.txt:Please Note Chapter38.txt:This exercise requires that it be run from the console (i.e., not over SSH). Chapter38.txt:1. Reboot your machine and go into the GRUB interactive shell by hitting e (or whatever other key is required as listed onyour screen.) Chapter38.txt:2. Make your system boot into non-graphical mode. How you do this depends on the system. Chapter38.txt:On traditional systems that respect runlevels (which we will talk about in the next section) you can append a 3 to the kernel command line in the specific entry you pick from the GRUB menu of choices. This will still work on systemd systems that still bother to emulate SysVinit runlevels. Chapter38.txt:On some other systems you may need to append text instead. Chapter38.txt:3. Hit the proper key to make system continue booting. Chapter38.txt:4. After the system is fully operational in non-graphical mode, bring it up to graphical mode. Depending on your system,one of the following commands should do it: Chapter38.txt:$ sudo systemctl start gdm Chapter38.txt:$ sudo systemctl start lightdm Chapter38.txt:$ sudo telinit 5 Chapter38.txt:$ sudo service gdm restart Chapter38.txt:$ sudo service lightdm restart Chapter38.txt:知識チェック Chapter38.txt:「第38章 - GRUB」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter38.txt:クイズ開始 Chapter38.txt:問題 38.1 Chapter38.txt:GRUBなどのブートローダーは、Linuxだけで必要です。他のオペレーティング システム、特にプロプライエタリなものは、起動にブートローダーを必要としません。True or False? Chapter38.txt:A. True Chapter38.txt:B. False Chapter38.txt:問題 38.2 Chapter38.txt:GRUBは、Linux、FreeBSD、Microsoft Windowsなどの複数のオペレーティング システムを起動できます。True or False? Chapter38.txt:A. True Chapter38.txt:B. False Chapter38.txt:問題 38.3 Chapter38.txt:システムのブート時にGRUBをインタラクティブ モードで使用することはできません。True or False? Chapter38.txt:A. True Chapter38.txt:B. False Chapter38.txt:問題 38.4 Chapter38.txt:ブートローダーの構成は、システム セキュリティに重要な影響を与える可能性があります。True or False? Chapter38.txt:A. True Chapter38.txt:B. False Chapter38.txt:問題 38.5 Chapter38.txt:GRUBは、オペレーティング システムごとに1つの構成だけをサポートできます。したがって、単一のLinuxインストールの場合、これを使用して、異なるカーネル、カーネル オプション、またはルート ファイルシステムから選択することはできません。True or False? Chapter38.txt:A. True Chapter38.txt:B. False Chapter38.txt:問題 38.6 Chapter38.txt:GRUB 2の主要な構成ファイルであるgrub.cfgは、直接編集する必要があります。True or False? Chapter38.txt:A. True Chapter38.txt:B. False Chapter39.txt:System Initについて:systemd、SystemVとUpstart Chapter39.txt:はじめに Chapter39.txt:第39章はじめに Chapter39.txt:このビデオでは、この章で説明するトピックの概要を簡単に説明します。 Chapter39.txt:学習目標 Chapter39.txt:この章の終わりまでに、次のことができるようになります。 Chapter39.txt:初期化プロセスの重要性を理解できます。 Chapter39.txt:systemd(およびUpstart)がどのように起動し、どのように機能するかを理解できます。 Chapter39.txt:systemctlを使用して、systemdを構成および制御できます。 Chapter39.txt:従来のSysVinitメソッドがどのように機能し、ランレベルがどのように組み込まれ、それぞれで何が起こるかを説明できます。 Chapter39.txt:SysVinitを使用している時に、chkconfigとservice(および代替ユーティリティ)を使用して、サービスの開始・停止や再起動後の設定の恒久化を行うことができます。 Chapter39.txt:System Init Chapter39.txt:initプロセス Chapter39.txt:/sbin/init(通常は単にinitと呼ばれます)は、システムで実行される最初のユーザー レベルのプロセス(またはタスク)であり、システムがシャットダウンされるまで実行を続けます。従来、すべてのユーザー プロセスの親と見なされてきましたが、技術的にはそうではありません。一部のプロセスはカーネルによって直接開始されるためです。 Chapter39.txt:initは、ブート プロセス後の処理を統合し、あらゆる環境を設定し、システムへのログインに必要なプロセスを開始します。initは、プロセス終了後にクリーン アップを行う際にもカーネルと密接に連携します。 Chapter39.txt:従来、ほぼすべてのディストリビューションは、UNIXの由緒あるSysVinitソフトウェアのinitプロセスをベースにしていました。しかしながら、このスキームは数十年前に、かなり異なる状況下で開発されたものでした。 Chapter39.txt:ターゲットはマルチ ユーザー メインフレーム システムでした(パーソナル コンピュータ、ラップトップ、その他のデバイスではありませんでした) Chapter39.txt:さらにターゲットはシングル プロセッサ システムでした。 Chapter39.txt:そのため、起動(およびシャットダウン)時間は重要な問題ではありませんでした。物事を正しく動作させる方がはるかに重要でした。 Chapter39.txt:起動は、一連の順次処理に分割された連続プロセスと見なされていました。次のステップに進む前に、現在のステージを完了する必要がありました。したがって、起動処理に、複数のプロセッサまたはコアで実行する並列処理を、簡単には活用できませんでした。 Chapter39.txt:さらに、シャットダウン/再起動は比較的まれなイベントと見なされており、正確にどのくらい時間がかかるかは重要ではありませんでした。 Chapter39.txt:最新のシステムでは、機能を強化した新しいメソッドが必要です。 Chapter39.txt:起動方法の選択肢 Chapter39.txt:SysVinitにおける、これらの固有の制限に対処するために、システムの起動を制御する新しい方法が開発されました。他にもありますが、エンタープライズ ディストリビュータは、upstartとsystemdの2つの主要なスキームを採用しました。 Chapter39.txt:クリックして各ボックスを展開し、upstartとsystemdについて学習します。 Chapter39.txt:起動方法の選択肢 Chapter39.txt:Upstart Chapter39.txt:UpstartはUbuntuによって開発され、2006年の6.10リリースで最初に組み込まれ、2009年の9.10リリースでデフォルトになりました。また、Fedora 9(2008年)、RHEL 6やそのクローン(CentOS、Scientific Linux、Oracle Linuxなど)とopenSUSEでも採用されました。さまざまな組み込み機器やモバイル機器でも使用されています。 Chapter39.txt:systemd Chapter39.txt:systemdはもっとも最近開発されたものであり、主要なディストリビューションの中では、Fedoraが 最初に2011年に採用しました。RHELとSUSEは 今ではSystemdを採用しており、Ubuntu 16.04はUpstartをsystemdに置き換えました。 Chapter39.txt:他のすべての主要な Linux ディストリビューションもsystemdを採用し、デフォルトとして設定しています。systemdの主要開発者は、Linuxカーネル コミュニティと密接に連携しています。今では、Ubuntuでさえ、Upstartを廃止しました。 Chapter39.txt:systemdへの移行は簡単ではなく、バグや欠落している機能が無効になる可能性があるため、必須なものとして互換性レイヤーが採用されました。したがって、SysVinitのユーティリティとメソッドは、たとえ内部の状況がまったく異なっていても存続しています。 Chapter39.txt:systemdの開発と採用の歴史はかなり複雑であり、変化にとんだ個性は、すべての議論が技術的な性質のものではなかったことを物語っています。 Chapter39.txt:次は、systemdとSysVinit中心に説明します。もはやほとんど使用されなくなったUpstartは説明しません。 Chapter39.txt:systemdの機能 Chapter39.txt:Linuxのsystemdシステムとセッション マネージャは、今やすべての主要なディストリビューションで主流です。次の機能が含まれています。 Chapter39.txt:以前のinitシステムよりも高速に起動します。 Chapter39.txt:積極的に並列化機能を提供します。 Chapter39.txt:サービスの開始にソケットとD-Busアクティベーションを使用します。 Chapter39.txt:シェル スクリプトをプログラムに置き換えます。 Chapter39.txt:デーモンのオンデマンド起動を提供します。 Chapter39.txt:cgroupsを使用してプロセスを追跡します。 Chapter39.txt:マウントと自動マウントのポイントを保持します。 Chapter39.txt:精巧なトランザクションの依存関係に基づくサービス制御ロジックを実装します。 Chapter39.txt:SysVinitの一時的な代替として機能し、SysVinitスクリプトと互換性があります。 Chapter39.txt:bashスクリプトの代わりに、systemdは.serviceファイルを使用します。さらに、systemdはすべてのデーモンを独自のLinux cgroup(制御グループ)に分類します。 Chapter39.txt:systemdはSysVinitと後方互換性があり、systemdではランレベルの概念はランレベル ターゲットを介してサポートされていることに注意してください。telinitプログラムは、ランレベルで動作するようにエミュレートされます。 Chapter39.txt:systemdの構成ファイル Chapter39.txt:systemdは標準化された構成ファイルのセットを使用することを推奨していますが、代替としてディストリビューション依存のレガシー構成ファイルを使用することもできます。 Chapter39.txt:新しい構成ファイルの例は/etc/hostnameで、Red Hatの/etc/sysconfig/network、SUSEの/etc/HOSTNAME、Debianの/etc/hostname(標準として採用)を置き換えます。 Chapter39.txt:他のファイルとして、次のものがあります。 Chapter39.txt:/etc/vconsole.conf:デフォルトのキーボード マッピングとコンソール フォント。 Chapter39.txt:/etc/sysctl.d/*.conf:カーネル sysctlパラメーターのドロップイン ディレクトリ。 Chapter39.txt:/etc/os-release:ディストリビューションIDファイル。 Chapter39.txt:systemdはSysVinitと後方互換性があるため、古いコマンドを使用してもほとんどの場合機能します。ランレベル ターゲットのメカニズムを介して、概念的にはランレベルの使用をサポートしています。さらに、telinitはランレベルで動作するようにエミュレートされます。 Chapter39.txt:systemctl Chapter39.txt:systemctlは、サービスを管理するための主要なユーティリティです。基本的な構文は次のとおりです。 Chapter39.txt:$ systemctl [options] command [name] Chapter39.txt:以下に、systemctlの使用方法の例をいくつか示します。 Chapter39.txt:systemdが制御するすべての状態を表示する場合: Chapter39.txt:$ systemctl Chapter39.txt:利用可能なすべてのサービスを表示する場合: Chapter39.txt:$ systemctl list-units -t service --all Chapter39.txt:アクティブなサービスのみを表示する場合: Chapter39.txt:$ systemctl list-units -t service Chapter39.txt:1つ以上のユニットを開始(アクティブ化)または停止(非アクティブ化)する場合: Chapter39.txt:$ sudo systemctl start foo Chapter39.txt:$ sudo systemctl start foo.service Chapter39.txt:$ sudo systemctl start /path/to/foo.service Chapter39.txt:$ sudo systemctl stop foo.service Chapter39.txt:ユニットはサービスまたはソケットにあたります。 Chapter39.txt:サービスを有効/無効にする場合: Chapter39.txt:$ sudo systemctl enable sshd.service Chapter39.txt:$ sudo systemctl disable sshd.service Chapter39.txt:これらのコマンドは、実際にはサービスを開始したり停止したりしません。システムの起動時に起動するかどうかを制御します。 Chapter39.txt:ほとんどのコマンドでは、サービス名に付加された.serviceを省略できます。 Chapter39.txt:💡 Chapter39.txt:上記の例の一部のsystemctlコマンドはrootユーザー以外でも実行できますが、それ以外のコマンドはrootまたはsudoで実行する必要があります。 Chapter39.txt:SysVinitからsystemdへの移行方法については、SysVinitからSystemdへのチートシートを参照してください。 Chapter39.txt:デモ:systemctlの使用 Chapter39.txt:このビデオでは、systemdでサービスを開始、停止、有効化、無効化する方法、およびsystemctlユーティリティの使用方法を示します。 Chapter39.txt:SysVinitのスロー フェード アウト Chapter39.txt:SysVinitは長年にわたって、システムの起動とシャットダウンの、そしてサービス管理の、標準的な方法でした。 Chapter39.txt:しかし、すべての主要なLinuxディストリビューションではsystemdへの置き換えが進んでいます。置き換えが進む中でも、SysVinitの動作をカバーすることはまだ必要です。古いメソッドを引き続き使用できるようにするため、互換レイヤーが設けられています。サード パーティのソフトウェアが、systemdのsystemctlメソッドを使用するように更新されていない場合もあるためです。 Chapter39.txt:この後、ランレベルや他の構成要素の説明に加えて、chkconfigコマンドとserviceコマンドも説明していきます。 Chapter39.txt:SysVinitのランレベル Chapter39.txt:SysVinitシステムが起動すると、さまざまなシステム状態を定義するランレベルのシーケンスを通過します。それらには0から6までの番号が付けられています。 Chapter39.txt:ランレベル0はシステム停止状態用、ランレベル1はシングル ユーザー モード用、ランレベル6はシステム リブート用に予約されています。他のランレベルは、通常のシステムで実行されているサービスを定義するために使用されます。たとえば、Red Hatベースのシステムでは、ランレベル2はネットワークまたはXを使用しない実行中のシステムとして定義されています。ランレベル3はネットワークを含んだもの、ランレベル5はネットワークとXを含んだものになります。以下の表は、SystemVinitのランレベルをまとめたものです。 Chapter39.txt:表:SysVinit のランレベル Chapter39.txt:ランレベル  意味 Chapter39.txt:S,s   1と同じ Chapter39.txt:0 システムをシャットダウンして電源を切る Chapter39.txt:1 シングル ユーザー モード Chapter39.txt:2 マルチ ユーザー、NFSなし、テキスト ログインのみ Chapter39.txt:3 マルチ ユーザー、NFSとネットワークあり、テキスト ログインのみ Chapter39.txt:4 未使用 Chapter39.txt:5 マルチ ユーザー、NFSとネットワークあり、Xによるグラフィカル ログイン Chapter39.txt:6 再起動 Chapter39.txt: Chapter39.txt:現在のランレベルは、次のようにランレベル コマンドで簡単に表示できます。 Chapter39.txt:$ runlevel Chapter39.txt:N 5 Chapter39.txt:ここで、最初の文字は1つ前のランレベルです。Nは不明を意味します。 Chapter39.txt:telinitを使用して、システムのランレベルを変更できます。たとえば、ランレベル3からランレベル5に変更するには、次のように入力します。 Chapter39.txt:$ sudo /sbin/telinit 5 Chapter39.txt:systemdはランレベルではなくターゲットで動作しますが、多くの経験豊富なユーザーと管理者は(SysVinitの)命名法に慣れているため、systemdはほとんどの場合、同等の後方互換言語に対応できるようになっています。 Chapter39.txt:SysVinit起動スクリプト Chapter39.txt:従来の方法では、最初にrc.sysinitスクリプトを実行します。このスクリプトは、LVMの起動、ファイルシステムのマウントなど、多くの機能を実行します。このスクリプトは/etcディレクトリにありますが、/etcへのシンボリックリンクを持つ/etc/rc.dにある可能性も高いです。 Chapter39.txt:次に、(同じディレクトリにある)rcスクリプトが、希望するランレベルを引数にして実行されます。これにより、システムはrc.d/rc[0-6].dディレクトリに移動し、そこにあるすべてのスクリプトを次のように実行します。 Chapter39.txt:$ ls -lF /etc/rc.d/rc5.d Chapter39.txt:total 0l Chapter39.txt:rwxrwxrwx. 1 root root 14 Sep 3 10:05 K05pmcd -> ../init.d/pmcd* Chapter39.txt:lrwxrwxrwx. 1 root root 14 Sep 3 10:05 K05pmie -> ../init.d/pmie* Chapter39.txt:.... Chapter39.txt:lrwxrwxrwx. 1 root root 17 Sep 3 09:39 S10network -> ../init.d/network* Chapter39.txt:lrwxrwxrwx 1 root root 16 Sep 6 08:50 S19vmware -> ../init.d/vmware* Chapter39.txt:rc.localスクリプトを使用して、システム固有のアプリケーションを起動します。 Chapter39.txt:: Chapter39.txt:実際のスクリプトはすべて/etc/init.dにあります。各ランレベル ディレクトリは、それらにリンクが張られています。 Chapter39.txt:そのランレベルになったときに実行されるスクリプトは、名前の頭文字がSになっています。 Chapter39.txt:そのランレベルになったときに終了されるスクリプトは、名前がKで始まります。 Chapter39.txt:ランレベル ディレクトリにスクリプトのシンボリックリンクが存在するかどうかによって、そのランレベルでスクリプトが実行されるかどうかが決まります。 Chapter39.txt:各スクリプト名のKまたはSに続く番号は、スクリプトが呼び出される順序です。スクリプト名はサービスの名前でもあります。 Chapter39.txt:各ランレベルへの入り口で実行される初期化スクリプトの制御には、シンボリックリンクの管理が含まれます。これらのリンクを手動で管理することは可能ですが、それを一貫してより簡単に行えるように設計されたユーティリティとして、chkconfigなどがあります。 Chapter39.txt:chkconfig Chapter39.txt:chkconfigは、実行するランレベルに応じてさまざまなシステム サービスを照会したり構成したりするために使用されます。以下にいくつかのchkconfigの例を示します。 Chapter39.txt:特定のサービスをチェックして、現在のランレベルで実行するように設定されているかどうかを確認する場合: Chapter39.txt:$ chkconfig some_service Chapter39.txt:この場合、サービスが実行されるように構成されていればtrueが、そうでなければfalseが返ります。実行するように構成されていても、現在停止している可能性があることに注意してください。 Chapter39.txt:各ランレベルで実行するように構成されているサービスを確認する場合: Chapter39.txt:$ chkconfig --list [service names] Chapter39.txt:次回のシステム ブート時に特定のサービスを有効にする場合: Chapter39.txt:$ sudo chkconfig some_service on Chapter39.txt:次回のシステム ブート時に特定のサービスを無効にする場合: Chapter39.txt:$ chkconfig some_service off Chapter39.txt:サービスを開始または停止にしても、この有効と無効の指定は現在の状態に影響しないことに注意してください。すぐに状態を変えたい場合: Chapter39.txt:$ sudo service some_service [stop | start] Chapter39.txt:独自のサービスを追加して独自の起動スクリプトを作成することは難しくありません。特定の機能を持つ(先頭からの数行のみ!)スクリプトを/etc/init.dに置くだけです。そして、chkconfig --addを使用して有効にするか、chkconfig --delを使用して有効/無効の指示ができないようにします。 Chapter39.txt:chkconfigは、シンボリックリンクでSまたはKの後に表示される番号を実際にどのように決定するのでしょうか? そして、どのランレベルを有効または無効に設定し、どの状態でシンボリック リンクを設定するかを、どのようにして知るのでしょうか? その情報はスクリプトの中にあり、最初の方に次のような行が含まれています。 Chapter39.txt:# chkconfig: 2345 10 90 Chapter39.txt:chkconfig:の後の最初の引数は、デフォルトでサービスを有効にするランレベルを定義しています。上記の例では、レベル2、3、4、5を意味します。2番目と3番目の数字は、起動スクリプトと停止スクリプトの数値プレフィックスです。上記の例では、S10とK90で始まるスクリプトを意味します。 Chapter39.txt:service Chapter39.txt:すべてのオペレーティング システムには、通常、システムの初期化時に開始されるサービスがあり、多くの場合、シャットダウンするまで実行され続けます。このようなサービスはいつでも開始、停止、再起動でき、通常はroot権限が必要です。SysVinitを使用する、またはエミュレートするLinuxシステムでは、サービスは/etc/init.dディレクトリにあるサービスを指します。 Chapter39.txt:特定のサービスの現在の状態を確認するには、次を実行します。 Chapter39.txt:$ sudo service network status Chapter39.txt:Configured devices: Chapter39.txt:lo eth0 eth1 eth2 wlan0 Chapter39.txt:Currently active devices: Chapter39.txt:lo eth0 Chapter39.txt:$ sudo service vsftpd status< Chapter39.txt:vsftpd (pid 5284) is running... Chapter39.txt:serviceにはいくつかのオプションがあり、サービスによって異なります。以下に例を示します。 Chapter39.txt:$ sudo service network Chapter39.txt:Usage: /etc/init.d/network {start|stop|restart|reload|status} Chapter39.txt:$ sudo service iptables Chapter39.txt:Usage: /etc/init.d/iptables {start|stop|restart|condrestart|status|panic|save} Chapter39.txt:どのserviceでも実際に行うことは、ディレクトリを/etc/init.dに変更し、指定されたオプションを使用してそのディレクトリにある適切なスクリプトを実行することです。 Chapter39.txt:システム上のすべてのサービスの状態は、次の方法で確認できます。 Chapter39.txt:$ sudo service --status-all Chapter39.txt:acpid (pid 4170) is running... Chapter39.txt:anacron (pid 4540) is running... Chapter39.txt:atd (pid 4553) is running... Chapter39.txt:.... Chapter39.txt:smartd (pid 4614) is running... Chapter39.txt:smbd is stopped Chapter39.txt:...... Chapter39.txt:serviceによるサービスの開始と停止は、システムで現在操作中の場合にのみ有効です。すべての変更は再起動時に失われます。システムの初期化中に特定のサービスを有効または無効にするには、前述のように、Red Hatベースのシステムではchkconfigを使用する必要があります。 Chapter39.txt:演習 Chapter39.txt:課題 39.1: SysVinitを使って新たなスタートアップ サービスを追加する Chapter39.txt:🚩 Chapter39.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter39.txt:【【これ以降は橋本さんの訳を参照】】 Chapter39.txt:In this and the following exercise, we will create a simple startup service. First we will do it for a SysVinit system. Note that if you are using a systemd-based system everything should still work because of the backwards compatibility layer that alldistributions utilize. However, in the next exercise we will do natively for systemd. Chapter39.txt:On Debian -based Distributions Chapter39.txt:If you are on a Debian-based system like Ubuntu, make sure you have installed the sysvinit-utils and chkconfig packages. However, recent versions of Ubuntu no longer package chkconfig; you’ll have to use the update-rc.d utility instead. Chapter39.txt:First we have to create the service-specific script; you can create one of your own for fun, or to get the procedure down just (as root) create a file named /etc/init.d/fake_service (which can be extract from your downloaded SOLUTIONS file as fake_service) containing the following: Chapter39.txt:/etc/init.d/fakeservice Chapter39.txt:#!/bin/bash Chapter39.txt:# fake_service Chapter39.txt:# Starts up, writes to a dummy file, and exits Chapter39.txt:# Chapter39.txt:# chkconfig: 35 69 31 Chapter39.txt:# description: This service doesn't do anything. Chapter39.txt:# Source function library. Chapter39.txt:/etc/sysconfig/fake_service Chapter39.txt:case "$1" in Chapter39.txt:start) echo "Running fake_service in start mode..." Chapter39.txt:touch /var/lock/subsys/fake_service Chapter39.txt:echo "$0 start at $(date)" >> /var/log/fake_service.log Chapter39.txt:if [${VAR1} ="true" ] Chapter39.txt:then Chapter39.txt:echo"VAR1 set to true" >> /var/log/fake_service.log Chapter39.txt:fi Chapter39.txt:echo Chapter39.txt:;; Chapter39.txt:stop) Chapter39.txt:echo "Running the fake_service script in stop mode..." Chapter39.txt:echo "$0stop at$(date)" >> /var/log/fake_service.log Chapter39.txt:if [${VAR2} ="true" ] Chapter39.txt:then Chapter39.txt:echo "VAR2 = true" >> /var/log/fake_service.log Chapter39.txt:fi Chapter39.txt:rm -f /var/lock/subsys/fake_service Chapter39.txt:echo Chapter39.txt:;; Chapter39.txt:*) Chapter39.txt:echo "Usage: fake_service {start | stop}" Chapter39.txt:exit 1 Chapter39.txt:esac Chapter39.txt:exit 0 Chapter39.txt:If you are taking the online self-paced version of this course, the script is available for download from your Lab screen. Chapter39.txt:Make the file above executable and give other proper permissions: Chapter39.txt:$ sudo chmod 755 /etc/init.d/fake_service Chapter39.txt:You’ll notice the script includes the file /etc/sysconfig/fakeservice. (On non-RHEL systems you should change this to /etc/default/fake_service.) Create it and give it the following contents: Chapter39.txt:/etc/sysconfig/fakeserviceor/etc/default/fakeservice Chapter39.txt:VAR1="true" Chapter39.txt:VAR2="true" Chapter39.txt:Test to see if the script works properly by running the following commands: Chapter39.txt:$ sudo service fake_service Chapter39.txt:$ sudo service fake_service start Chapter39.txt:$ sudo service fake_service stop Chapter39.txt:Look at the file named/var/log/fake_service.log. What does it contain? Chapter39.txt:For fun you can add additional modes like restart to the script file; look at other scripts in the directory to get examples of what to do. Chapter39.txt:Next we will want to have the ability to start fake_service whenever the system starts, and stop it when it shuts down. If you do: Chapter39.txt:$ sudo chkconfig --list fake_service Chapter39.txt:you will get an error as it hasn’t been set up yet for this. You can easily do this with: Chapter39.txt:$ sudo chkconfig --add fake_service Chapter39.txt:and you can turn it on or off at boot time with Chapter39.txt:$ sudo chkconfig fake_service on Chapter39.txt:$ sudo chkconfig fake_service off Chapter39.txt:To test this completely you’ll have to reboot the system to see if it comes on automatically. You can also try varying the runlevels in which the service is running. Chapter39.txt:課題 39.2: systemdを使って新たなスタートアップ サービスを追加する Chapter39.txt:🚩 Chapter39.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter39.txt:Exercise 39.2: Adding a New Startup Service with systemd Chapter39.txt:As mentioned in the previous exercise, you can still use the SysVinit startup script procedure with systemd but this is deprecated. Chapter39.txt:The analogous procedure is to create (as root) a file directly under /etc/systemd/system or somewhere else in that directory tree; distributions have some varying tastes on this. For example a very minimal file named /etc/systemd/system/fake2.service (which can be extracted from your downloaded SOLUTIONS file as fake2.service) containing the following: Chapter39.txt:fake2.service Chapter39.txt:[Unit] Chapter39.txt:Description=fake2 Chapter39.txt:After=network.target Chapter39.txt:[Service] Chapter39.txt:ExecStart=/bin/sh -c'/bin/echo I am starting the fake2 service ; /bin/sleep 30' Chapter39.txt:ExecStop=/bin/echo I am stopping the fake2 service Chapter39.txt:[Install] Chapter39.txt:WantedBy=multi-user.target Chapter39.txt:Now there are many things that can go in thisunitfile. The After=network.target means the service should start only after the network does, while the WantedBy=multi-user.target means it should start when we reach multiple-user mode. Thisis equivalent to runlevels 2 and 3 in SysVinit. Note graphical.target would correlate with runlevel 5. Chapter39.txt:Now all we have to do to start, stop and check the service status are to issue the commands: Chapter39.txt:$ sudo systemctl start fake2.service Chapter39.txt:$ sudo systemctl status fake2.service Chapter39.txt:$ sudo systemctl stop fake2.service Chapter39.txt:If you are fiddling with the unit file while doing this you’ll need to reload things with: Chapter39.txt:$ sudo systemctl daemon-reload Chapter39.txt:as the system will warn you. Chapter39.txt:To keep an eye directly on the output you can do: Chapter39.txt:$ sudo tail -f /var/log/messages Chapter39.txt:(use/var/log/syslog on Ubuntu) either in background or in another windows while the service is running. Chapter39.txt:To set things up so the service turns on or off on system boot: Chapter39.txt:$ sudo systemctl enable fake2.service Chapter39.txt:$ sudo systemctl disable fake2.service Chapter39.txt:Once again, you really need to reboot to make sure it has taken effect. Chapter39.txt:知識チェック Chapter39.txt:「第39章 - System Initについて:systemd、SystemVとUpstart」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter39.txt:クイズ開始 Chapter39.txt:問題 39.1 Chapter39.txt:最近まで、ほぼすべてのディストリビューションはSysVinitを使用していました。しかし、SysVinitには問題があり、それがsystemdの開発を後押ししました。その問題について、次のうち正しいものはどれですか? Chapter39.txt:A. SysVinitは、デスクトップ、組み込みシステム、モバイル プラットフォームとは異なる要件を持つメインフレーム用に設計されました。 Chapter39.txt:B. SysVinitはマルチコア システム用に設計されました。 Chapter39.txt:C. 現在では、起動時間とシャットダウン時間は重要ではありません。 Chapter39.txt:D. SysVinitは信頼できません。 Chapter39.txt:E. systemdはモジュラー設計とOSの互換性を目的としていますが、SysVinitでは不可能です。 Chapter39.txt:問題 39.2 Chapter39.txt:SysVinitを使用する場合、システムをシャットダウンして電源を切ることに対応するランレベルはどれですか? Chapter39.txt:A. 0 Chapter39.txt:B. 1 Chapter39.txt:C. 2 Chapter39.txt:D. 3 Chapter39.txt:E. 5 Chapter39.txt:問題 39.3 Chapter39.txt:SysVinitを使用する場合、シングル ユーザー モードに対応するランレベルはどれですか? Chapter39.txt:A. 0 Chapter39.txt:B. 1 Chapter39.txt:C. 3 Chapter39.txt:D. 5 Chapter39.txt:E. 6 Chapter39.txt:問題 39.4 Chapter39.txt:SysVinitを使用する場合、通常のグラフィック モードに対応するランレベルはどれですか? Chapter39.txt:A. 0 Chapter39.txt:B. 1 Chapter39.txt:C. 2 Chapter39.txt:D. 3 Chapter39.txt:E. 5 Chapter39.txt:F. 6 Chapter39.txt:問題 39.5 Chapter39.txt:システムの実行中にnfsを有効にするコマンドはどれですか? Chapter39.txt:A. sudo systemctl status nfs Chapter39.txt:B. sudo systemctl enable nfs Chapter39.txt:C. sudo systemctl stop nfs Chapter39.txt:D. sudo systemctl start nfs Chapter39.txt:問題 39.6 Chapter39.txt:システムの起動時にnfsを有効にするコマンドはどれですか? Chapter39.txt:A. sudo systemctl status nfs Chapter39.txt:B. sudo systemctl enable nfs Chapter39.txt:C. sudo systemctl stop nfs Chapter39.txt:D. sudo systemctl start nfs Chapter4.txt:シグナル Chapter4.txt:はじめに Chapter4.txt:第4章はじめに Chapter4.txt:シグナルは、プロセスが予測不可能なイベントに対する処理を実行するための通知として使用されます。シグナルは、プロセス自体の中から、または他プロセスなどの外部イベントから発生します。シグナルの多くは重大な通知であり、結果としてプロセスが終了します。ただし、プログラムの設計者が特定の終了シグナルを処理(破棄)することを決定した場合、終了が回避されることがあります。一方で無害のシグナルも多くあります。単なる参考情報か、他の種類のアクションを要求するものです。kill、killall、pkillを使用して、コマンドラインからシグナル(終了を引き起こすシグナルを含む)を送信することができます。 Chapter4.txt:学習目標 Chapter4.txt:この章の終わりまでに、次のことができるようになります。 Chapter4.txt:シグナルとは何か、どのように使用されるかを説明できるようになります。 Chapter4.txt:Linuxで利用可能なシグナルとシグナルの種類について説明できるようになります。 Chapter4.txt:kill、killall、pkillを使用して、コマンド ラインからシグナルを送信できるようになります。 Chapter4.txt:シグナル Chapter4.txt:シグナルとは? Chapter4.txt:シグナルはプロセス間通信(IPC)の最も古い方法の1つであり、非同期イベント(または例外)をプロセスに通知するために使用されます。 Chapter4.txt:非同期とは、シグナルを受信するプロセスが以下であることを意味します。 Chapter4.txt:イベントが発生することを予期していないこと。 Chapter4.txt:イベントの受信を予期しているが、いつ発生するするかわからないこと。 Chapter4.txt:たとえば、ユーザーが実行中のプログラムを終了することを決定した場合、カーネルを介してプロセスにシグナルを送信し、プロセスを中断して強制終了できます。 Chapter4.txt:シグナルがプロセスに送信される経路は2つあります。 Chapter4.txt:例外またはプログラミング エラーの結果として、カーネルからユーザー プロセスへ送信。 Chapter4.txt:(システムコールを使用して)ユーザー プロセスからカーネルへ送信し、そしてカーネルからユーザー プロセスへ送信。シグナルを送信するプロセスと受信するプロセスを同じにすることができます。 Chapter4.txt:シグナルは、同じユーザーが所有するプロセス間、またはスーパーユーザーが所有するプロセスから任意のプロセスにのみ、送信できます。 Chapter4.txt:プロセスがシグナルを受信して行う処理は、プログラムに書かれた内容によって異なります。プログラムにコード化されている特定のアクションを実行して信号を処理することも、システムのデフォルトに従って応答することもできます。2つのシグナル(SIGKILL と SIGSTOP)は処理はせず、常にプログラムを終了します。 Chapter4.txt:シグナルの種類 Chapter4.txt:シグナルにはさまざまな種類があります。カーネルによって送信された特定のシグナルは、発生したイベント(または例外)の種類を表しています。一般に、シグナルは次の2つのことを処理するために使用されます。 Chapter4.txt:ハードウェアによって検出された例外(不正なメモリ参照など) Chapter4.txt:環境によって生成された例外(ユーザーの端末からのプロセスの早期終了など)。 Chapter4.txt:Linuxのシグナルのリストとその番号を表示するには、このスクリーンショットに示されているように、kill -l を実行します。 Chapter4.txt:利用可能なシグナル Chapter4.txt:SIGRTMINから後のシグナルはリアルタイム シグナルと呼ばれ、比較的最近追加されました。これらには事前に定義された目的はなく、いくつかの重要な点で通常のシグナルとは異なります。キューに入れることができ、FIFO(First In First Out)の順序で処理されます。 Chapter4.txt:シグナルの種類は、(カーネルから送信されたときに)シグナルが送信される原因となったイベントを示しています。ユーザーは、プロセスの1つに任意の種類のシグナルを明示的に送信できますが、シグナル番号やその種類が示す意味に関係なく、プロセスが望む任意の方法で処理できます。 Chapter4.txt:man 7 signalを入力すると、より多くのドキュメントが表示されます。 Chapter4.txt:表:x86プラットフォームで利用可能なシグナル Chapter4.txt:シグナル 値 デフォルトの動作 POSIXか?  意味 Chapter4.txt:SIGHUP  1 終了 Yes 制御端末でハングアップが検出されたか、制御プロセスの終了 Chapter4.txt:SIGINT  2  終了  Yes キーボードからの割り込み Chapter4.txt:SIGQUIT  3 コア ダンプ Yes キーボードから終了 Chapter4.txt:SIGILL  4 コア ダンプ Yes 不正な命令 Chapter4.txt:SIGTRAP  5 コア ダンプ No デバッグ用のトレース/ブレークポイント トラップ Chapter4.txt:SIGABTR Chapter4.txt:SIGIOT  6 コア ダンプ Yes 異常終了 Chapter4.txt:SIGBUS   7 コア ダンプ Yes バス エラー Chapter4.txt:SIGFPE  8 コア ダンプ Yes 浮動小数点例外 Chapter4.txt:SIGKILL  9  終了 Yes Killシグナル(キャッチや無視はできません) Chapter4.txt:SIGUSR1  10 終了 Yes ユーザー定義シグナル1 Chapter4.txt:SIGSEGV  11 コア ダンプ Yes 不正なメモリ参照の発生 Chapter4.txt:SIGUSR2  12 終了 Yes ユーザー定義シグナル2 Chapter4.txt:SIGPIPE  13 終了 Yes 破損したパイプ:読み手のないパイプへの書き込み Chapter4.txt:SIGALRM  14 終了 Yes アラームからのタイマー シグナル Chapter4.txt:SIGTERM  15 終了 Yes プロセスの終了 Chapter4.txt:SIGSTKFLT  16 終了 No 数値演算コプロセッサでスタック フォルト Chapter4.txt:SIGCHLD  17 無視 Yes 子プロセスが停止または終了 Chapter4.txt:SIGCONT  18 継続 Yes プロセスが停止中の場合は実行再開 Chapter4.txt:SIGSTOP  19 停止 Yes プロセスの停止(捉えたり無視することはできません) Chapter4.txt:SIGTSTP  20  停止 Yes  端末より入力された停止 Chapter4.txt:SIGTTIN  21  停止  Yes バックグランド プロセスの端末入力 Chapter4.txt:SIGTTOU  22  停止  Yes バックグランド プロセスの端末出力 Chapter4.txt:SIGURG  23 無視 No ソケットの緊急状態(4.2 BSD) Chapter4.txt:SIGXCPU  24 コア ダンプ Yes CPU時間制限を超過(4.2 BSD) Chapter4.txt:SIGXFSZ  25 コア ダンプ Yes ファイル サイズの制限を超過(4.2 BSD) Chapter4.txt:SIGVTALRM  26 終了 Yes 仮想アラーム クロック(4.2 BSD) Chapter4.txt:SIGPROF  27 終了 No プロファイリング アラーム クロック(4.2 BSD) Chapter4.txt:SIGWINCH  28 無視 No ウィンドウ リサイズ シグナル(4.3 BSD、Sun) Chapter4.txt:SIGIO Chapter4.txt:SIGPOLL  29 終了 No  I/Oが可能(4.2 BSD)(System V) Chapter4.txt:SIGPWR  30  終了  No  電源喪失(System V) Chapter4.txt:SIGSYS Chapter4.txt:SIGUNUSED  31 終了 No 不正なシステムコール未使用シグナル Chapter4.txt:kill Chapter4.txt:プロセスは、別のプロセスに直接シグナルを送信できません。システムコールを実行して、シグナルを送信するようカーネルに要求する必要があります。ユーザー(スーパーユーザーを含む)は、次のように kill を使用してコマンド ラインまたはスクリプトから他のプロセスにシグナルを送信できます。 Chapter4.txt:$ kill 1991 Chapter4.txt:$ kill -9 1991 Chapter4.txt:$ kill -SIGKILL 1991 Chapter4.txt:これにより、PID = 1991 のプロセスにシグナルを送信します。(最初の例のように)シグナル番号が指定されていない場合、デフォルトでは、処理可能な終了シグナルのSIGTERM(15) が送信されます。プログラムはすぐに終了するのではなく、何らかのアクションを実行したり、終了のための後処理をすることができます。このシグナルが無視される場合は、ユーザーは無視できない SIGKILL(9) を送信して強制的に終了させることができます。 Chapter4.txt:killという名前は明らかに印象が悪い名称で、歴史的な理由で生き残っている誤った呼び名です。多くの場合、プロセスを殺す(終了させる)ために使用されますが、このコマンドの本当の機能はあらゆるシグナルをプロセスに送信することです。 Chapter4.txt:killallとpkill Chapter4.txt:killallは指定された名前を持つすべてのプロセスを強制終了します。ユーザーが十分な特権を持つと想定しています。プロセスIDではなくコマンド名を使用し、次のように実行します。 Chapter4.txt:$ killall bash Chapter4.txt:$ killall -9 bash Chapter4.txt:$ killall -SIGKILL bash Chapter4.txt:pkillは、選択対象の基準を指定してプロセスにシグナルを送信します。 Chapter4.txt:$ pkill [-signal] [options] [pattern] Chapter4.txt:例えば、 Chapter4.txt:$ pkill -u libby foobar Chapter4.txt:これは、libbyユーザーのfoobarという名前がつくプロセスをすべて強制終了します。 Chapter4.txt:別の例として、 Chapter4.txt:$ pkill -HUP rsyslogd Chapter4.txt:これは、rsyslogに構成ファイルを再読み込みさせます。 Chapter4.txt:演習 Chapter4.txt:演習 4.1: シグナルの優先順位と実行 Chapter4.txt:🚩 Chapter4.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter4.txt:Exercise 4.1: Examining Signal Priorities and Execution Chapter4.txt:We give you aCprogram that includes a signal handler that can handle any signal. The handler avoids making any systemcalls (such as those that might occur while doing I/O). This file can be extracted from your downloaded SOLUTIONS file as signals.c Chapter4.txt:signals.c Chapter4.txt:You will need to compile it and run it as in: Chapter4.txt:$ gcc -o signals signals.c Chapter4.txt:$ ./signals Chapter4.txt:When run, the program: Chapter4.txt:• Does not send the signals SIGKILL or SIGSTOP, which can not be handled and will always terminate a program. Chapter4.txt:• Stores the sequence of signals as they come in, and updates a counter array for each signal that indicates how manytimes the signal has been handled. Chapter4.txt:• Begins by suspending processing of all signals and then installs a new set of signal handlers for all signals. Chapter4.txt:• Sends every possible signal to itself multiple times and then unblocks signal handling and the queued up signal handlerswill be called. Chapter4.txt:• Prints out statistics including: Chapter4.txt:–The total number of times each signal was received. Chapter4.txt:–The order in which the signals were received, noting each time the total number of times that signal had beenreceived up to that point. Chapter4.txt:Note the following: Chapter4.txt:• If more than one of a given signal israisedwhile the process has blocked it, does the processreceiveit multiple times?Does the behavior ofreal timesignals differ from normal signals? Chapter4.txt:• Are all signals received by the process, or are some handled before they reach it? Chapter4.txt:• What order are the signals received in? Chapter4.txt:One signal,SIGCONT(18 onx86) may not get through; can you figure out why? Chapter4.txt:Please Note Chapter4.txt:On someLinuxdistributions signals 32 and 33 can not be blocked and will cause the program to fail. Even though system header files indicate SIGRTMIN=32, the command kill -l indicates SIGRTMIN=34. Chapter4.txt:Note that POSIX says one should use signal names, not numbers, which are allowed to be completely implementation dependent. Chapter4.txt:You should generally avoid sending these signals. Chapter4.txt:知識チェック Chapter4.txt:「第4章 - シグナル」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter4.txt:クイズ開始 Chapter4.txt:問題 4.1 Chapter4.txt:kill、killall、pkill allは、プロセス名をパラメータとして指定できます。True or False? Chapter4.txt:A. True Chapter4.txt:B. False Chapter4.txt:問題 4.2 Chapter4.txt:kill -9とkill -SIGKILLは、ターゲット プロセスにおいて同じ効果があります。True or False? Chapter4.txt:A. True Chapter4.txt:B. False Chapter4.txt:問題 4.3 Chapter4.txt:引数を指定しない場合、killはデフォルトでSIGTERMシグナルを送信します。True or False? Chapter4.txt:A. True Chapter4.txt:B. False Chapter4.txt:問題 4.4 Chapter4.txt:端末で実行中のプロセスでCtrl + Zを押すことと、kill -SIGTSTPを使用することは、同じ効果があります。True or False? Chapter4.txt:A. True Chapter4.txt:B. False Chapter40.txt:バックアップとリカバリの方法 Chapter40.txt:はじめに Chapter40.txt:第40章はじめに Chapter40.txt:このビデオでは、この章で説明するトピックの概要を簡単に説明します。 Chapter40.txt:学習目標 Chapter40.txt:この章の終わりまでに、次のことができるようになります。 Chapter40.txt:バックアップが必要なデータを特定して優先順位を付けることができます。 Chapter40.txt:状況に応じて、さまざまな種類のバックアップ方法を採用できます。 Chapter40.txt:効率的なバックアップと復元の戦略を確立できます。 Chapter40.txt:cpio、tar、gzip、bzip2、xz、dd、rsync、dump、restore、mtなどのさまざまなバックアップ ユーティリティを使用できます。 Chapter40.txt:最も有名な2つのバックアップ プログラム、AmandaとBaculaについて説明できます。 Chapter40.txt:バックアップとリカバリの方法 Chapter40.txt:バックアップする理由 Chapter40.txt:1つのパーソナル システムのみを管理している場合でも、多数のマシンのネットワークを管理している場合でも、システム バックアップは非常に重要です。 Chapter40.txt:クリックすると、データをバックアップするいくつかの理由について詳しく知ることができます。 Chapter40.txt:バックアップの理由 Chapter40.txt:データは重要 Chapter40.txt:ディスク上のデータは重要な作業成果物であるため、保護すべきです。失われたデータを再度作成するのは、時間と費用がかかります。一部のデータは他にない唯一のものであり、再度作成する方法がない場合があります。 Chapter40.txt:ハードウェア障害 Chapter40.txt:ストレージ メディアの信頼性は向上していますが、ドライブ容量も向上しています。しかし、1バイトあたりの故障率が低下したとしても、予測できない故障は発生します。故障したドライブと故障する可能性のあるドライブの2種類しかないと言うのは、悲観的かもしれませんが事実です。RAIDを使用するとデータ保護には役立ちますが、それでもバックアップは必要です。 Chapter40.txt:ソフトウェアの失敗 Chapter40.txt:完璧なソフトウェアはありません。バグはデータを破壊または破損する可能性があります。長期間使用している安定したプログラムでも問題が発生する場合があります。 Chapter40.txt:人間は間違いを犯すもの Chapter40.txt:誰もがOOPS!(しまった!)を聞いたことがあるはずです。(またはもっと悪い場合は)隣のパーティションから(または彼らの口から)聞こえたことがあるはずです。時には、単純な入力ミスだけで、ファイルとデータが大規模に破壊されることがあります。 Chapter40.txt:悪意のある人が意図的に損害を引き起こす可能性 Chapter40.txt:それは、普通に不満を抱く従業員か、もしくは損害を起こすポイントを知っている外部のハッカーかもしれません。セキュリティの問題とバックアップ機能は非常に強く関連しています。 Chapter40.txt:原因不明のイベントの発生 Chapter40.txt:ファイルは、どのように、誰が、いつ起こったかを知らなくても、ただ消えてしまう可能性があります。 Chapter40.txt:巻き戻し機能は役に立つ Chapter40.txt:場合によっては、システムのすべてまたは一部を、以前のスナップショットに復元する必要があります。 Chapter40.txt:バックアップが必要なものは何か? Chapter40.txt:バックアップ データには、重要なデータも、それほど重要ではないデータも、保存する必要のないデータもあります。 Chapter40.txt:クリックして各ボックスを展開し、バックアップが重要なデータを優先度順に確認します。 Chapter40.txt:バックアップする必要があるのはどんなデータ? Chapter40.txt:絶対に必要なもの Chapter40.txt:次のデータは常にバックアップする必要があります。 Chapter40.txt:ビジネス関連データ Chapter40.txt:システム構成ファイル Chapter40.txt:ユーザー ファイル(通常は/homeの下) Chapter40.txt:多分必要なもの Chapter40.txt:スプール ディレクトリ(印刷、メールなど) Chapter40.txt:ログ ファイル(/var/logなどにあります) Chapter40.txt:おそらく必要がないもの Chapter40.txt:簡単に再インストールできるソフトウェア。適切に管理されたシステムでは、これはほとんどこの対象になるはずです Chapter40.txt:/tmpディレクトリ。その内容は実際には一時的なものにすぎないためです。 Chapter40.txt:絶対に必要ないもの Chapter40.txt:/proc、/dev、/sysなどの疑似ファイルシステム Chapter40.txt:スワップ パーティションまたはファイル Chapter40.txt:明らかに、組織に不可欠なファイルにはバックアップが必要です。構成ファイルは頻繁に変更される場合があり、個々のユーザーのファイルとともにバックアップが必要です。 Chapter40.txt:システムの履歴を調査する必要がある場合、ログ ファイルは重要になります。これは、侵入やその他のセキュリティ違反を検出するために特に重要です。 Chapter40.txt:簡単に再インストールできるものをバックアップする必要はありません。また、スワップ パーティション(またはファイル)と/procファイルシステムは、(/tmpディレクトリと同じように)これらの領域のデータが基本的に一時的なものであるため、一般的にバックアップしても意味がありません。 Chapter40.txt:バックアップ vs. アーカイブ Chapter40.txt:すべてのバックアップ メディアには、読み取りができなくなる寿命があります。標準の推定値は次のとおりです。 Chapter40.txt:磁気テープ:10~30年 Chapter40.txt:CDとDVD:3〜10 年 Chapter40.txt:ハードディスク:2〜5年 Chapter40.txt:寿命は以下のものの影響を受けます。 Chapter40.txt:環境条件(温度、湿度など) Chapter40.txt:メディアの品質 Chapter40.txt:現在のオペレーティング システムとハードウェアでデータを読み取ることができる実用的なソフトウェアがあること。 Chapter40.txt:寿命は、バックアップに使うには十分ですが、恒久的なデジタル アーカイブとしては不十分です。 Chapter40.txt:通常のバックアップのタイムスケールよりも寿命が長ければ、データは、複数のコピーを使用して保存できます。さらに、時々新しいメディアにコピーすることで保存できます。 Chapter40.txt:非常に長い期間(つまり、数十年、数世紀など)経つと、すべて(ハードウェア、ソフトウェア、ドキュメント形式、メディアなど)が時代遅れとなり、標準的な保存方法は簡単には機能しなくなります。 Chapter40.txt:安価なデジタル形式はどれも、実際には、紙やフィルムほど長期間保存できません(適切に保管され、ワインのように継続的に手入れされているとしてもです)。 Chapter40.txt:これは人々が考える深刻な問題であり、すべてが失われる前に良い解決策を考えるべきです。 Chapter40.txt:テープ ドライブ Chapter40.txt:テープ ドライブは、以前ほど一般的ではありません。それらは比較的低速で、順次アクセスのみを許可します。現在の作業では、プライマリ バックアップに使用することはほとんどありません。長期に参照するために、アーカイブ目的のオフサイト ストレージとして使用される場合があります。ただし、磁気テープ ドライブの寿命は、物理的な劣化やデータの損失がなくても、常に限りがあります。 Chapter40.txt:最近のテープ ドライブはほとんどがLTO(Linear Tape Open)で、1990年代後半にオープン スタンダードの代替として最初のバージョンが登場しました。初期のフォーマットはほとんどが独自のものでした。初期バージョンは最大100GBを保持していました。新しいバージョンでは、同じサイズのカートリッジで 2.5TB以上を保持できます。 Chapter40.txt:日々のバックアップは通常、何らかの形式のNAS(Network Attached Storage)またはクラウド ベースのソリューションを使用して行われるため、新しいテープ ベースのインストールはますます魅力的ではなくなっています。ただし、まだそれらを使う場面があり、システム管理者は対処する必要があります。 Chapter40.txt:この後は、バックアップ メディアの特定の物理的な形式には焦点を当てず、より抽象的に説明します。 Chapter40.txt:バックアップ方法 Chapter40.txt:保護対象のシステムと同じ物理的な場所に、すべてのバックアップを格納しないでください。そうしないと、火災またはその他の物理的損傷により、全損となる可能性があります。過去には、バックアップとは、磁気テープを安全な場所に物理的に輸送することを意味していました。現在は、バックアップ ファイルをインターネット経由で別の物理的な場所に転送することを意味しています。明らかに、これは、適切な暗号化とその他のセキュリティ予防措置を使用して、安全な方法で実行する必要があります。 Chapter40.txt:多くの場合、複数の異なるバックアップ方法を、互いに連携して使用できます。 Chapter40.txt:クリックして各カードを反転し、これらのバックアップ方法の詳細をご覧ください。 Chapter40.txt:完全バックアップ Chapter40.txt:システム上のすべてのファイルのバックアップ。 Chapter40.txt:増分バックアップ Chapter40.txt:最後に行った増分、または完全バックアップ以降に変更されたすべてのファイルのバックアップ。 Chapter40.txt:差分バックアップ Chapter40.txt:最後の完全バックアップ以降に変更されたすべてのファイルのバックアップ。 Chapter40.txt:複数のレベルの増分バックアップ Chapter40.txt:同じレベルまたは以前のレベルにおいて、最後に取られたバックアップ以降に変更されたすべてのファイルのバックアップ。 Chapter40.txt:ユーザー Chapter40.txt:特定のユーザーのディレクトリ内のファイルのみをバックアップ。 Chapter40.txt:バックアップ戦略 Chapter40.txt:バックアップ方法は、対応する復元方法がないと役に立たないことに注意してください。バックアップの戦略を選択する際には、両方向の堅牢性、明瞭性、および使いやすさを考慮する必要があります。 Chapter40.txt:最も単純なバックアップ戦略は、すべてを一度完全バックアップしてから、その後変更されるすべての増分バックアップを実行することです。完全バックアップには多くの時間がかかる場合がありますが、増分バックアップからの復元はもっと困難で時間がかかる場合があります。したがって、両方を組み合わせれば時間と労力を最適化できます。 Chapter40.txt:以下に、テープに関する有用な戦略の一例を示します(以下の説明中の「テープ」を、他のメディアに置き換えることもできます)。 Chapter40.txt:金曜日の完全バックアップには、テープ1を使用します。 Chapter40.txt:月曜日から木曜日の増分バックアップには、テープ2〜5を使用します。 Chapter40.txt:第2金曜日の完全バックアップには、テープ6を使用します。 Chapter40.txt:2番目の月曜日から木曜日の増分バックアップには、テープ2〜5を使用します。 Chapter40.txt:テープ6の完全バックアップが完了するまで、テープ1を上書きしないでください。 Chapter40.txt:テープ6に完全バックアップした後、災害復旧時のためにテープ1を外部の場所に移動します。 Chapter40.txt:次の完全バックアップ(次の金曜日)には、テープ6の代わりにテープ1を使います。 Chapter40.txt:目安として、少なくとも2週間のバックアップを用意するようにしてください。 Chapter40.txt:バックアップ ユーティリティ Chapter40.txt:多くのプログラムがバックアップ目的で使用されます。 Chapter40.txt:クリックして各ボックスを展開し、バックアップ ユーティリティの詳細をご覧ください。 Chapter40.txt:バックアップ ユーティリティ Chapter40.txt:cpioとtar Chapter40.txt:cpioとtarは、ファイルのアーカイブの作成と抽出を行います。 Chapter40.txt:gzip、bzip2、xz Chapter40.txt:ほとんどの場合、アーカイブはgzip、bzip2、xzで圧縮されています。アーカイブ ファイルは、ディスク、磁気テープ、またはファイルを保持できる他のデバイスに書き込むことができます。アーカイブは、あるファイルシステムやマシンから別のファイルシステムやマシンにファイルを転送するのに非常に便利です。 Chapter40.txt:dd Chapter40.txt:この強力なユーティリティは、メディア間で生データを転送する時によく使用します。パーティション全体またはディスク全体をコピーできます。 Chapter40.txt:rsync Chapter40.txt:この強力なユーティリティは、ネットワーク全体で、またはローカル マシン上の異なるファイルシステムの間で、ディレクトリ サブツリーまたはファイルシステム全体を同期できます。 Chapter40.txt:dumpとrestore Chapter40.txt:これらの古くからあるユーティリティは、バックアップ専用に設計されました。ファイルシステムから直接読み込みます(より効率的な方法です)。ただし、元のファイルシステムと同じ種類のファイルシステムに復元しなければなりません。今はもっと新しい選択肢があります。 Chapter40.txt:mt Chapter40.txt:このユーティリティは、バックアップと復元を実行する前に、テープの状態を問合せをして位置調整するのに役立ちます。 Chapter40.txt:tarを使用したバックアップ Chapter40.txt:tarは使いやすいユーティリティです。 Chapter40.txt:tarアーカイブを作成する場合、引数としてディレクトリを指定すると、そのディレクトリのすべてのファイルとサブディレクトリがアーカイブに含まれます。 Chapter40.txt:復元するとき、必要に応じてディレクトリを再構成します。 Chapter40.txt:さらに、増分バックアップを実行できる--newerオプションもあります Chapter40.txt:Linuxで使用されるtarのバージョンは、1本のテープまたは使用するデバイスに納まらない量のバックアップも処理できます。 Chapter40.txt:以下に、バックアップにtarを使用する方法の例をいくつか示します。 Chapter40.txt:-cまたは--createを使用してアーカイブを作成する場合: Chapter40.txt:$ tar --create --file /dev/st0 /root Chapter40.txt:$ tar -cvf /dev/st0 /root Chapter40.txt:-fまたは--fileオプションを使用して、デバイスやファイルを指定できます。 Chapter40.txt:バックアップが1つのデバイスに納まらない時に、-Mまたは--multi-volumeを使用して、マルチボリューム オプションで作成する場合: Chapter40.txt:$ tar -cMf /dev/st0 /root Chapter40.txt:必要に応じて、次のテープを入れるように求められます。 Chapter40.txt:-dまたは--compareを使用して、比較オプションでファイルを検証する場合: Chapter40.txt:$ tar --compare --verbose --file /dev/st0 Chapter40.txt:$ tar -dvf /dev/st0 Chapter40.txt:バックアップを作成した後、上記の検証オプションを使用して、全部揃っていてかつ正しいことを確認できます。 Chapter40.txt:デフォルトでは、tarはすべてのサブディレクトリを再帰的にアーカイブ内に格納します。 Chapter40.txt:アーカイブを作成すると、tarは、絶対パス名から先頭のスラッシュを削除する旨のメッセージを出力します。これにより、ファイルをどこにでも復元できますが、デフォルトのこの挙動を変更することもできます。 Chapter40.txt:ほとんどのtarオプションは、ダッシュを1つ付けた短い形式、または2つ付けた長い形式で指定できます。-cは--createと完全に同じです。また、(短い表記を使用する場合)オプションを組み合わせることができますが、その時にはすべてのダッシュを入力する必要がないことに注意してください。 Chapter40.txt:さらに、シングル ダッシュのtarオプションは、ダッシュ付きでもダッシュなしでも使用できます。 Chapter40.txt:$ tar cvf file.tar dir1 Chapter40.txt:結果は以下と同じです。 Chapter40.txt:$ tar -cvf file.tar dir1 Chapter40.txt:tarを使用したファイルの復元 Chapter40.txt:-xまたは--extractオプションは、デフォルトでアーカイブからファイルを抽出します。特定のファイルだけを指定すると、抽出するファイルを絞り込むことができます。ディレクトリを指定すると、そこに含まれるすべてのファイルとサブディレクトリも抽出されます。 Chapter40.txt:-pまたは--same-permissionsオプションは、ファイルを元の権限で復元します。 Chapter40.txt:-tまたは--listオプションは、アーカイブ内のファイルをリストしますが、抽出はしません。 Chapter40.txt:以下にいくつかの例を示します。 Chapter40.txt:アーカイブから抽出する場合: Chapter40.txt:$ tar --extract --same-permissions --verbose --file /dev/st0 Chapter40.txt:$ tar -xpvf /dev/st0 Chapter40.txt:$ tar xpvf /dev/sts0 Chapter40.txt:復元に特定のファイルのみを指定する場合: Chapter40.txt:$ tar xvf /dev/st0 somefile Chapter40.txt:tarバックアップの内容をリストする場合: Chapter40.txt:$ tar --list --file /dev/st0 Chapter40.txt:$ tar -tf /dev/st0 Chapter40.txt:tarを使用した増分バックアップ Chapter40.txt:-N(もしくは同等の--newer)または--after-dateオプションを使用すれば、tarで増分バックアップを実行できます。どのオプションでも、日付または対象(基準)のファイル名のいずれかを指定する必要があります。 Chapter40.txt:$ tar --create --newer '2011-12-1' -vf backup1.tar /var/tmp Chapter40.txt:$ tar --create --after-date '2011-12-1' -vzf backup1.tar /var/tmp Chapter40.txt:どちらの形式でも、2011年12月1日以降に変更された/var/tmp内のすべてのファイルのバックアップ アーカイブが作成されます。 Chapter40.txt:tarはファイルの日付のみを調べ、パーミッションやファイル名など、ファイルに対する他の変更は考慮しません。これらの変更を含むファイルを増分バックアップに含めるには、検索して、バックアップするファイルのリストを作成します。 Chapter40.txt:🚩 Chapter40.txt:--newerなどのオプションが後に続く場合、-vzfなどのオプションではダッシュを使用する必要があります。そうしないとtarが混乱します。この種のオプション指定の混乱は、psやtarのような古いUNIXユーティリティで発生することがあります。そこには、さまざまなUNIXファミリーが関係する複雑な歴史があります。 Chapter40.txt:アーカイブの圧縮方法 Chapter40.txt:現代のマシンでは、圧縮されていないファイルを単に送信(またはコピー)するよりも圧縮 → 送信 → 解凍サイクルの方が速いことがあります。このため、ファイルを圧縮してディスク容量やネットワーク転送時間を節約することがしばしば望まれます。 Chapter40.txt:Linuxには、一般的に使用される多くの圧縮技術があります。(圧縮時間は長くなりますが)圧縮効率を高める手段として以下があります。 Chapter40.txt:gzip Chapter40.txt:Lempel-Zivコーディング(LZ77)を使用して、.gzファイルを生成します。 Chapter40.txt:bzip2 Chapter40.txt:Burrows-Wheelerブロック ソート テキスト圧縮アルゴリズムとHuffmanコーディングを使用し、.bz2ファイルを生成します。 Chapter40.txt:xz Chapter40.txt:.xzファイルを生成します。従来の.lzma形式もサポートします。 Chapter40.txt:解凍時間は、圧縮時間ほど変化しません。小さなファイルで日常的に使用する場合、通常はgzipを使用します。これは非常に高速であるためです。しかし、大きなファイルやアーカイブの場合は、他の2つの方法がよく使用されます。たとえば、Linux Kernel Archivesは現在、xz形式でのみカーネルを提供しています。 Chapter40.txt:.zip形式は、他のオペレーティング システムからレガシー アーカイブを抽出する場合を除き、Linuxではほとんど使用しません。 Chapter40.txt:圧縮ユーティリティは、tarと組み合わせて非常に簡単に(そして頻繁に)使用されます。 Chapter40.txt:$ tar zcvf source.tar.gz source Chapter40.txt:$ tar jcvf source.tar.bz2 source Chapter40.txt:$ tar Jcvf source.tar.xz source Chapter40.txt:これらは圧縮アーカイブを作成します。最初のコマンドは、以下のコマンドと結果がまったく同じです。 Chapter40.txt:$ tar cvf source.tar source ; gzip -v source.tar Chapter40.txt:しかし最初のコマンドの方がより効率的です。その理由は次のとおりです。 Chapter40.txt:中間ファイル ストレージを使いません。 Chapter40.txt:アーカイブと圧縮はパイプラインで同時に行われます。 Chapter40.txt:解凍する場合: Chapter40.txt:$ tar xzvf source.tar.gz Chapter40.txt:$ tar xjvf source.tar.bz2 Chapter40.txt:$ tar xJvf source.tar.xz Chapter40.txt:または、以下のコマンドでもできます。 Chapter40.txt:$ tar xvf source.tar.gz Chapter40.txt:tarの最新バージョンは圧縮の方法を検出して自動的に処理します。 Chapter40.txt:.jpg画像や.pdfファイルなど、明らかにコンポーネント ファイルが既に圧縮されているアーカイブでは、これらのメソッドを使用する価値はありません。 Chapter40.txt:ddを使用するバックアップ Chapter40.txt:ddはオリジナルUNIXユーティリティの1つであり、非常に用途が広いです。オプションがない場合、ファイルまたはディスク全体をそのままコピーします。コピー中にさまざまな種類のデータ変換(バイト順の変更など)を実行でき、オフセット、バイト数、ブロック サイズなどを制御する多くのオプションがあります。 Chapter40.txt:ddは、/dev/zeroや/dev/randomなどのスペシャル デバイス ノードから一定量のデータを読み取るためによく使用されます。基本的な構文は次のとおりです。 Chapter40.txt:$ dd if=input-file of=output-file options Chapter40.txt:入力ファイルまたは出力ファイルが指定されていない場合、デフォルトではstdinとstdoutが使用されます。以下を実行した場合: Chapter40.txt:$ dd --help Chapter40.txt:頻繁に使用されるオプションや非常にまれなオプションなど、とても長いリストが表示されます。 Chapter40.txt:以下はddの使用例です。 Chapter40.txt:ゼロで満たされた10MBのファイルを作成する場合: Chapter40.txt:$ dd if=/dev/zero of=outfile bs=1M count=10 Chapter40.txt:ハード ドライブ全体を別のドライブにバックアップ(row copy)する場合: Chapter40.txt:$ dd if=/dev/sda of=/dev/sdb Chapter40.txt:ハード ディスクのイメージを作成する場合(後で別のハード ディスクに転送できます): Chapter40.txt:$ dd if=/dev/sda of=sdadisk.img Chapter40.txt:パーティションをバックアップする場合: Chapter40.txt:$ dd if=/dev/sda1 of=partition1.img Chapter40.txt:CD ROMをバックアップする場合: Chapter40.txt:$ dd if=/dev/cdrom of=tgsservice.iso bs=2048 Chapter40.txt:パイプラインでddを使用する場合: Chapter40.txt:$ dd if=ndata conv=swab count=1024 | uniq > ofile Chapter40.txt:rsyncを使用するバックアップ Chapter40.txt:rsync(リモート同期)は、次のようにネットワークを介して(または同じマシンの異なる場所の間で)ファイルを転送するために使用されます。 Chapter40.txt:$ rsync [options] sourcefile destinationfile Chapter40.txt:同期元(ソース)と同期先(デスティネーション)は target:pathの形式を取ることができます。ここで、targetは[user@]hostの形式にすることができます。user@部分はオプションであり、リモート ユーザーがローカル ユーザーと異なる場合に使用されます。したがって、以下のrsyncコマンドはすべて実行可能です。 Chapter40.txt:$ rsync file.tar someone@backup.mydomain:/usr/local Chapter40.txt:$ rsync -r a-machine:/usr/local b-machine:/usr/ Chapter40.txt:場所の正確な指定(特に--deleteオプションを使用する場合)については、rsyncでは特に注意する必要があります。そのため、最初に--dry-runオプションを使用し、正しく動作することを確認してから実行することを強くお勧めします。 Chapter40.txt:rsyncは非常に賢いです。ローカル ファイルとリモート ファイルを小さなチャンクで照合します。1つのディレクトリを類似のディレクトリにコピーする場合、差分のみをネットワーク経由でコピーするという点で非常に効率的です。これにより、2番目のディレクトリが最初のディレクトリと同期できます。多くの場合、-rオプションを使用します。これにより、rsyncはディレクトリ ツリーを再帰的にたどり、ソース ファイルとしてリストされているディレクトリから下のすべてのファイルとディレクトリをコピーします。したがって、プロジェクト ディレクトリをバックアップする場合、次の方法が非常に便利です。 Chapter40.txt:$ rsync -r project-X archive-machine:archives/project-X Chapter40.txt:単純な(そして非常に効果的で高速な)バックアップ戦略は、rsyncコマンドを使用してネットワーク全体でディレクトリまたはパーティションを単純に複製し、そしてそれを頻繁に行うことです。 Chapter40.txt:cpioを使用するバックアップ Chapter40.txt:cpio(コピー インとコピー アウト)は、UNIXの初期の頃から使用されている、一般的にはテープ バックアップ用に設計されたファイル アーカイバ ユーティリティです。新しいアーカイブ プログラム(正確にはあまり新しくありませんがtarなど)が、cpioに関連する多くのタスクを実行するために開発されてきているとしても、cpioはまだ生き残っています。 Chapter40.txt:たとえば今までに、RPMパッケージをcpioアーカイブに変換して展開するためにrpm2cpioを使用することを学んできました。また、Linuxカーネルは、cpioのあるバージョンを内部的に使用して、ブート中にinitramfsとinitrdの初期RAMディスクとファイルシステムを処理します。cpioが生き残っている理由の1つは、たとえそれが多少堅牢ではないとしても、tarや他の後継機能よりも軽いことです。 Chapter40.txt:-oまたは--createオプションは、cpioにファイルをアーカイブにコピーするよう指示します。cpioは、標準入力からファイル名のリスト(1行に1つ)を読み取り、アーカイブを標準出力に書き出します。 Chapter40.txt:-iまたは--extractオプションは、cpioに、標準入力からアーカイブを読み取り、そのアーカイブからファイルをコピーするよう指示します。コマンド ラインでファイル名を(*.c のように)パターンとしてリストすると、パターンに一致するアーカイブ内のファイルのみがアーカイブからコピーされます。パターンが指定されていない場合、すべてのファイルが抽出されます。 Chapter40.txt:-tまたは--listオプションは、cpioにアーカイブの内容をリストするように指示します。-vまたは--verboseオプションを追加すると、処理されたファイル名の長いリストが生成されます。 Chapter40.txt:以下にcpioの使用例をいくつか示します。 Chapter40.txt:-oまたは--createを使用してアーカイブを作成する場合: Chapter40.txt:$ ls | cpio --create -O /dev/st0 Chapter40.txt:-iまたは--extractを使用してアーカイブから抽出する場合: Chapter40.txt:$ cpio -i somefile -I /dev/st0 Chapter40.txt:-tまたは--listを使用してアーカイブの内容を一覧表示する場合: Chapter40.txt:$ cpio -t -I /dev/st0 Chapter40.txt:入力(-I device)を指定するか、コマンド ラインでリダイレクトを使用できます。 Chapter40.txt:dumpとrestore Chapter40.txt:dumpとrestoreユーティリティは、UNIXの初期の頃から存在しており、もともとは最新のハードウェア、ファイルシステム、およびストレージの容量に対応するようには設計されていませんでした。 Chapter40.txt:cpioやtarとは異なり、これらのユーティリティはファイルシステムを直接読み書きします。これにより効率が向上し、タイム スタンプに影響を与えずにバックアップ ファイルを作成できます。 Chapter40.txt:dumpプログラムには、パラメータを設定できる多数のオプションがあります。例えば以下です。 Chapter40.txt:Option Description Chapter40.txt:-0-9 Dump level- level 0 is full backup, higher numbers are incremental backups Chapter40.txt:-B records Records per volume Chapter40.txt:-b blocksize K-bytes per record Chapter40.txt:-f file Output device or file Chapter40.txt:-u Update /etc/dumpdates Chapter40.txt:-W Print most recent dump date of each filesystem in /etc/dumpdates Chapter40.txt:🚩 Chapter40.txt:オプションを利用して値を指定する場合、値をオプションの直後に配置する必要はありませんが、値を指定するオプションと同じ順序で値を指定する必要があります。 Chapter40.txt:dumpにはプラスの面とマイナス面があります。プラス面は次の機能です。 Chapter40.txt:完全または増分バックアップを実行できます。 Chapter40.txt:特定のファイルシステム形式と、それを読み書きする方法を知っています。 Chapter40.txt:完全バックアップの作成時にヘッドの動きを少なくするため、効率的です。 Chapter40.txt:出力テープのサイズと密度、ブロック サイズとカウント、またはその両方を指定できます。 Chapter40.txt:有効なデバイスまたはファイルにダンプできます。デフォルトは/dev/tapeです。 Chapter40.txt:/etc/fstabのパラメータで、何をいつダンプするかを制御できます。 Chapter40.txt:マイナス面は次の機能です。 Chapter40.txt:バックアップには複数のファイルシステム パスが必要です。 Chapter40.txt:ext2、ext3、ext4ファイルシステムでのみ機能します。(他のファイルシステムには、xfsdumpなどの独自のユーティリティがある場合があります。) Chapter40.txt:マウントされたファイルシステムでは安全に実行できません。 Chapter40.txt:Linuxで使用されているファイルシステムの種類が多いことと、データの正確な保存方法などの詳細を抽象化することが最近の傾向であるため、ファイルシステムへの柔軟性の欠如は、どちらかといえば強い制約になると言えます。 Chapter40.txt:dumpとrestore は、Amandaなどの高レベルのバックアップ プログラム スイートで使用される場合があります。なので、これらのレガシー ツールにある程度精通していると役に立ちます。 Chapter40.txt:restoreは、作成されたダンプから、アーカイブ、テープ、またはファイルを復元するために使用されます。たとえば、現在のディレクトリにダンプされたすべてのファイルを復元する場合、以下のようにします。 Chapter40.txt:$ sudo restore -rvf /tmp/boot_backup Chapter40.txt:復元する時に便利なオプションは以下のとおりです。 Chapter40.txt:-r Chapter40.txt:すべてを復元します。ダンプされた内容が読み取られ、完全なコンテンツが現在のディレクトリにロードされます。 Chapter40.txt:-t Chapter40.txt:指定されたファイルとディレクトリがバックアップに存在する場合、その名前を標準出力に出力します。ファイルが引数に指定されていない場合、バックアップに存在するルート ディレクトリが出力されます。このオプションでは、実際には復元されません。 Chapter40.txt:-x Chapter40.txt:指定されたファイルとディレクトリを、バックアップから読み出します。指定されたファイルがバックアップに存在するディレクトリと一致する場合、ディレクトリは再帰的に抽出されます。引数が指定されていない場合、バックアップのすべての内容が読み出されます。 Chapter40.txt:-i Chapter40.txt:このモードでは、バックアップからファイルをインタラクティブに復元できます。バックアップからディレクトリ情報を読み込んだ後、restoreはシェルのようなインターフェイスを提供し、ユーザーはディレクトリ ツリー内を移動して、抽出するファイルを選択できます。 Chapter40.txt:-rと-xを同時に使用することはできません。 Chapter40.txt:mt Chapter40.txt:mtユーティリティは、磁気テープ デバイスを制御するために使用されます。ほとんどの場合、バックアップと復元の前またはその実行中に、テープの稼働状況の確認や位置設定をするために使用されます。デフォルトでは、mt は環境変数TAPEの内容を使います。また -f deviceオプションで指定されたテープ ドライブを使用することもできます。 Chapter40.txt:rootユーザーのみがmtを使用できることに留意してください。構文は次のとおりです。 Chapter40.txt:mt [-h] [-f device] operation [count] [arguments...] Chapter40.txt:構文の内容は以下のとおりです。 Chapter40.txt:-h:使用法を表示します(ヘルプ)。 Chapter40.txt:-f device:テープ デバイスを指定します。 Chapter40.txt:operation:テープ操作を指定します。 Chapter40.txt:count:繰り返すことができる回数、一部の操作に使用されます(デフォルトは1)。 Chapter40.txt:arguments:一部の操作に使用されます。 Chapter40.txt:以下に、mtの使用例をいくつか示します。 Chapter40.txt:テープ デバイスに関する状態情報を表示する場合: Chapter40.txt:$ mt status Chapter40.txt:テープを巻き戻す場合: Chapter40.txt:$ mt rewind Chapter40.txt:テープを消去する場合: Chapter40.txt:$ mt erase Chapter40.txt:現在のアーカイブの最後に移動する場合: Chapter40.txt:$ mt fsf Chapter40.txt:バックアップ プログラム Chapter40.txt:独自のアプリケーションやストレージ ベンダーが提供するアプリケーション、オープンソース アプリケーションなど、Linuxで利用可能なバックアップ プログラム スイートはいろいろあります。 Chapter40.txt:各ボックスをクリックして展開し、いくつかの有名なバックアップ プログラムについて学びます。 Chapter40.txt:バックアップ プログラム Chapter40.txt:Amanda Chapter40.txt:Amanda(Advanced Maryland Automatic Network Disk Archiver)はネイティブ ユーティリティ(tarとdumpを含む)を使用しますが、はるかに堅牢で制御しやすいです。Amandaは一般的に、標準リポジトリから入手して、エンタープライズLinuxシステムで利用できます。 Chapter40.txt:Bacula Chapter40.txt:Baculaは、異種ネットワーク上の自動バックアップ用に設計されています。かなり複雑なので、使用は経験豊富な管理者のみにすることを(作成者は)推奨しています。Baculaは通常、標準リポジトリを通じて エンタープライズLinuxシステムで利用できます。 Chapter40.txt:Clonezilla Chapter40.txt:Clonezillaは非常に堅牢なディスク クローン プログラムです。ディスクのイメージを作成して展開し、バックアップを復元したり、多くのマシンのインストールに使用できるイメージを提供できます。 Chapter40.txt:プログラムには2つのバージョンがあります。単一マシンのバックアップとリカバリに適したClonezilla liveと、同時に多くのコンピュータにクローンを作成できるサーバー エディションのClonezilla SEです。Clonezillaの使用はそれほど難しくなく、非常に柔軟で、(Linux だけでなく)多くのオペレーティング システム、ファイルシステムの種類、ブートローダーをサポートしています。 Chapter40.txt:演習 Chapter40.txt:課題 40.1: tarを使ってバックアップする Chapter40.txt:🚩 Chapter40.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter40.txt:Exercise 40.1: Using tar for Backup Chapter40.txt:1. Create a directory called backup and in it place a compressed tar archive of all the files under /usr/include, with the highest level directory being include. You can use any compression method (gzip, bzip2 or xzip). Chapter40.txt:2. List the files in the archive. Chapter40.txt:3. Create a directory called restore and unpack and decompress the archive. Chapter40.txt:4. Compare the contents with the original directory the archive was made from. Chapter40.txt:Solution 40.1 Chapter40.txt:1.$ mkdir /tmp/backup Chapter40.txt:$ cd /usr ; tar zcvf /tmp/backup/include.tar.gz include Chapter40.txt:$ cd /usr ; tar jcvf /tmp/backup/include.tar.bz2 include Chapter40.txt:$ cd /usr ; tar Jcvf /tmp/backup/include.tar.xz include Chapter40.txt:または Chapter40.txt:$ tar -C /usr -zcf include.tar.gz include Chapter40.txt:$ tar -C /usr -jcf include.tar.bz2 include Chapter40.txt:$ tar -C /usr -Jcf include.tar.xz include Chapter40.txt:Notice the efficacy of the compression between the three methods: Chapter40.txt:$ du -sh /usr/include Chapter40.txt:55M /usr/include Chapter40.txt:2.$ ls -lh include.tar.* Chapter40.txt:c7:/tmp/backup>ls -lh Chapter40.txt:total 17M Chapter40.txt:-rw-rw-r-- 1 coop coop 5.3M Jul 18 08:17 include.tar.bz2 Chapter40.txt:-rw-rw-r-- 1 coop coop 6.7M Jul 18 08:16 include.tar.gz Chapter40.txt:-rw-rw-r-- 1 coop coop 4.5M Jul 18 08:18 include.tar.xz Chapter40.txt:c7:/tmp/backup> Chapter40.txt:3.$ tar tvf include.tar.xz Chapter40.txt:qdrwxr-xr-x root/root 0 2014-10-29 07:04 include/ Chapter40.txt:-rw-r--r-- root/root 42780 2014-08-26 12:24 include/unistd.h Chapter40.txt:-rw-r--r-- root/root 957 2014-08-26 12:24 include/re_comp.h Chapter40.txt:-rw-r--r-- root/root 22096 2014-08-26 12:24 include/regex.h Chapter40.txt:-rw-r--r-- root/root 7154 2014-08-26 12:25 include/link.h Chapter40.txt:..... Chapter40.txt:Note it is not necessary to give the j,J, orzoption when decompressing;tar is smart enough to figure out what is needed. Chapter40.txt:4.$ cd .. ; mkdir restore ; cd restore Chapter40.txt:$ tar xvf ../backup/include.tar.bz2 Chapter40.txt:include/ Chapter40.txt:include/unistd.h Chapter40.txt:include/re_comp.h Chapter40.txt:include/regex.h Chapter40.txt:include/link Chapter40.txt:..... Chapter40.txt:$ diff -qr include /usr/include Chapter40.txt:課題 40.2: cpioを使ってバックアップする Chapter40.txt:🚩 Chapter40.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter40.txt:Exercise 40.2: Using cpio for Backup Chapter40.txt:We are going to do essentially the same exercise now, but using cpio in place of tar. We’ll repeat the slightly altered instructions for ease of use. Chapter40.txt:1. Create a directory calledbackupand in it place a compressed cpio archive of all the files under /usr/include, with the highest level directory being include. You can use any compression method (gzip, bzip2 or xzip). Chapter40.txt:2. List the files in the archive. Chapter40.txt:3. Create a directory called restore and unpack and decompress the archive. Chapter40.txt:4. Compare the contents with the original directory the archive was made from. Chapter40.txt:Solution 40.2 Chapter40.txt:1.$ (cd /usr ; find include | cpio -c -o > /home/student/backup/include.cpio) Chapter40.txt:82318 blocks Chapter40.txt:or to put it in a compressed form: Chapter40.txt:$ (cd /usr ; find include | cpio -c -o | gzip -c > /home/student/backup/include.cpio.gz) Chapter40.txt:82318 blocks Chapter40.txt:$ ls -lh include* Chapter40.txt:total 64M Chapter40.txt:-rw-rw-r-- 1 coop coop 41M Nov 3 15:26 include.cpio Chapter40.txt:-rw-rw-r-- 1 coop coop 6.7M Nov 3 15:28 include.cpio.gz Chapter40.txt:-rw-rw-r-- 1 coop coop 5.3M Nov 3 14:44 include.tar.bz2 Chapter40.txt:-rw-rw-r-- 1 coop coop 6.8M Nov 3 14:44 include.tar.gz Chapter40.txt:-rw-rw-r-- 1 coop coop 4.7M Nov 3 14:46 include.tar.xz Chapter40.txt:2.$ cpio -ivt < include.cpio Chapter40.txt:drwxr-xr-x 86 root root 0 Oct 29 07:04 include Chapter40.txt:-rw-r--r-- 1 root root 42780 Aug 26 12:24 include/unistd.h Chapter40.txt:-rw-r--r-- 1 root root 957 Aug 26 12:24 include/re_comp.h Chapter40.txt:-rw-r--r-- 1 root root 22096 Aug 26 12:24 include/regex.h Chapter40.txt:..... Chapter40.txt:Note the redirection of input; the archive is not an argument. One could also do: Chapter40.txt:$ cd ../restore Chapter40.txt:$ cat ../backup/include.cpio | cpio -ivt Chapter40.txt:$ gunzip -c include.cpio.gz | cpio -ivt Chapter40.txt:3.$ rm -rf include Chapter40.txt:$ cpio -id < ../backup/include.cpio Chapter40.txt:$ ls -lR include Chapter40.txt:または Chapter40.txt:$ cpio -idv < ../backup/include.cpio Chapter40.txt:$ diff -qr include /usr/include Chapter40.txt:課題 40.3: rsyncを使ってバックアップする Chapter40.txt:🚩 Chapter40.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter40.txt:Exercise 40.3: Using rsync for Backup Chapter40.txt:1. Using rsync, we will again create a complete copy of /usr/include in your backup directory: Chapter40.txt:$ rm -rf include Chapter40.txt:$ rsync -av /usr/include . Chapter40.txt:sending incremental file list Chapter40.txt:include/ Chapter40.txt:include/FlexLexer.h Chapter40.txt:include/_G_config.h Chapter40.txt:include/a.out.h Chapter40.txt:include/aio.h Chapter40.txt:..... Chapter40.txt:2. Let’s run the command a second time and see if it does anything: Chapter40.txt:$ rsync -av /usr/include . Chapter40.txt:sending incremental file list Chapter40.txt:sent 127398 bytes received 188 bytes 255172.00 bytes/sec Chapter40.txt:total size is 41239979 speedup is 323.23 Chapter40.txt:3. One confusing thing about rsync is you might have expected the right command to be: Chapter40.txt:$ rsync -av /usr/include include Chapter40.txt:sending incremental file list Chapter40.txt:... Chapter40.txt:However, if you do this, you’ll find it actually creates a new directory,include/include! Chapter40.txt:4. To get rid of the extra files you can use the --delete option: Chapter40.txt:$ rsync -av --delete /usr/include . Chapter40.txt:sending incremental file list Chapter40.txt:include/ Chapter40.txt:deleting include/include/xen/privcmd.h Chapter40.txt:deleting include/include/xen/evtchn.h Chapter40.txt:.... Chapter40.txt:deleting include/include/FlexLexer.h Chapter40.txt:deleting include/include/ Chapter40.txt:sent 127401 bytes received 191 bytes 85061.33 bytes/sec Chapter40.txt:total size is 41239979 speedup is 323.22 Chapter40.txt:5. For another simple exercise, remove a subdirectory tree in your backup copy and then run rsync again with and without the --dry--run option: Chapter40.txt:$ rm -rf include/xen Chapter40.txt:$ rsync -av --delete --dry-run /usr/include . Chapter40.txt:sending incremental file list include/ Chapter40.txt:include/xen/ Chapter40.txt:include/xen/evtchn.h Chapter40.txt:include/xen/privcmd.h Chapter40.txt:sent 127412 bytes received 202 bytes 255228.00 bytes/sec Chapter40.txt:total size is 41239979 speedup is 323.16 (DRY RUN) Chapter40.txt:$ rsync -av --delete /usr/include . Chapter40.txt:6. A simple script with a good set of options for using rsync: Chapter40.txt:script using rsync Chapter40.txt:#!/bin/sh Chapter40.txt:set -x Chapter40.txt:rsync --progress -avrxH -e"ssh -c blowfish" --delete $* Chapter40.txt:which will work on a local machine as well as over the network. Note the important -x option which stops rsync from crossing filesystem boundaries. Chapter40.txt:Extra Credit Chapter40.txt:For more fun, if you have access to more than one computer, try doing these steps with source and destination on different machines. Chapter40.txt:知識チェック Chapter40.txt:「第40章 - バックアップとリカバリの方法」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter40.txt:クイズ開始 Chapter40.txt:問題 40.1 Chapter40.txt:次の問題については、ツールの機能のみを考慮し、パイプ「|」やスクリプトで複数のツールを接続して何ができるかは考えなくて良いです。同じツールを複数回呼び出すなど、特殊な使用をするケースも考えなくて良いです。tarは、複数のファイルのアーカイブを作成できます。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.2 Chapter40.txt:tarには、ネットワークを介してデータをやり取りする機能が組み込まれています。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.3 Chapter40.txt:tarは、/dev/sdaなどのディスクを読み取ることができます。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.4 Chapter40.txt:tarには圧縮機能が組み込まれています。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.5 Chapter40.txt:tarには、増分バックアップのための機能が組み込まれています。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.6 Chapter40.txt:tarには、複数のファイルをコピーするための機能が組み込まれています。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.7 Chapter40.txt:ddは、複数のファイルのアーカイブを作成できます。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.8 Chapter40.txt:ddには、ネットワーク経由でデータをやり取りする機能が組み込まれています。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.9 Chapter40.txt:ddは、/dev/sdaなどのrawディスクを読み取ることができます。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.10 Chapter40.txt:ddには圧縮機能が組み込まれています。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.11 Chapter40.txt:ddには、増分バックアップのための機能が組み込まれています。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.12 Chapter40.txt:ddには、複数のファイルをコピーするための機能が組み込まれています。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.13 Chapter40.txt:rsyncは、複数のファイルのアーカイブを作成できます。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.14 Chapter40.txt:rsyncには、ネットワーク経由でデータをやり取りする機能が組み込まれています。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.15 Chapter40.txt:rsyncは、/dev/sdaなどのrawディスクを読み取ることができます。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.16 Chapter40.txt:rsyncには圧縮機能が組み込まれています。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.17 Chapter40.txt:rsyncには、増分バックアップのための機能が組み込まれています。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter40.txt:問題 40.18 Chapter40.txt:rsyncには、複数のファイルをコピーする機能が組み込まれています。True or False? Chapter40.txt:A. True Chapter40.txt:B. False Chapter41.txt:Linux Security Modules Chapter41.txt:はじめに Chapter41.txt:第41章はじめに Chapter41.txt:このビデオでは、この章で説明するトピックの概要を簡単に説明します。 Chapter41.txt:学習目標 Chapter41.txt:この章の終わりまでに、次のことができるようになります。 Chapter41.txt:Linux Security Modules(LSM)フレームワークの仕組みとデプロイ方法を理解できます。 Chapter41.txt:使用可能なさまざまなLSM実装をリストできます。 Chapter41.txt:SELinuxの主な機能を説明できます。 Chapter41.txt:利用可能なさまざまなモードとポリシーを説明できます。 Chapter41.txt:コンテキストの重要性と、それらの取得と設定の方法を把握できます。 Chapter41.txt:重要なSELinuxユーティリティ プログラムの使用方法を知ることができます。 Chapter41.txt:AppArmorにある程度熟知できます。 Chapter41.txt:Linux Security Modules Chapter41.txt:Linux Security Modules(LSM)とは Chapter41.txt:最新のコンピュータ システムはセキュリティで保護する必要がありますが、そのセキュリティ要件は、データの機密性、アカウントを持つユーザーの数、外部ネットワークへの露出、法的要件、その他の要因によって異なります。適切なセキュリティ制御を使用可能にする責任は、アプリケーション設計者とLinuxカーネル開発者とメンテナにあります。もちろん、ユーザーも適切な手順に従う必要があります。しかし、適切に実行されているシステムでは、非特権ユーザーは、システムをセキュリティ侵害にさらすことがないように、操作権限が非常に限られているはずです。このセクションでは、LinuxカーネルがLinux Security Modulesフレームワークを使用してセキュリティを強化する方法、特にSELinuxを中心に説明します。目的は、カーネルに対して行われたさまざまな要求に対して、強制的なアクセス制御を実装することです。それは次の方法で行います。 Chapter41.txt:カーネルへの変更を最小限に抑えます Chapter41.txt:カーネルでのオーバーヘッドを最小化にします Chapter41.txt:異なる実装に対して、柔軟性と選択を許可します。各実装は自己完結型のLSM(Linux Security Modules)として提供されます。 Chapter41.txt:基本的な考え方は、システムコールをフックすることです。強化された権限の作業を実行するために、アプリケーションがカーネル(システム)モードへの移行を要求するときに、コードを挿入します。このコードは、パーミッションが有効であること、悪意のある意図から保護されていることなどの確認を行います。これは、システムコールがカーネルによって実行される前後に、セキュリティ関連の機能ステップを呼び出す形で行われます。 Chapter41.txt:LSMの選択 Chapter41.txt:長い間、LSMの実装された唯一の強化されたセキュリティ モデルはSELinuxでした。2001年に、このプロジェクトが最初にアップストリームでカーネルに直接組み込まれたとき、セキュリティを強化するアプローチを1つだけ使用することに反対がありました。 Chapter41.txt:その結果、SELinuxの代替モジュールを使用できるLSMアプローチが採用されました。2003年に開発され、Linuxカーネルに組み込まれました。 Chapter41.txt:現在のLSMで実装されるものは次のとおりです。 Chapter41.txt:SELinux Chapter41.txt:AppArmor Chapter41.txt:Smack Chapter41.txt:Tomoyo Chapter41.txt:Linuxカーネルの同じ部分を変更する可能性があるため、一度に使用できるLSMは1つだけです。 Chapter41.txt:ユーザーの利用度の多い順に、最初にSELinuxを説明し、次にAppArmorを説明します。 Chapter41.txt:SELinuxの概要 Chapter41.txt:SELinuxはもともと米国NSA(National Security Administration)によって開発されたもので、非常に長い間RHELに不可欠な機能でした。 Chapter41.txt:運用という観点から見ると、SELinuxは、プロセスがシステム上のどのファイル、ディレクトリ、ポート、およびその他のアイテムにアクセスできるかを決定する、セキュリティ ルールのセットです。 Chapter41.txt:3種類の概念要素で機能します。 Chapter41.txt:各ボックスをクリックして展開し、SELinuxが機能する3種類の概念要素について学習します。 Chapter41.txt:SELinuxの概念要素 Chapter41.txt:コンテキスト Chapter41.txt:コンテキストは、ファイル、プロセス、およびポートのラベルです。コンテキストの例として、SELinuxユーザー、ロール、タイプがあります。 Chapter41.txt:ルール Chapter41.txt:ルールは、コンテキスト、プロセス、ファイル、ポート、ユーザーなどの観点からアクセス制御を記述したものです。 Chapter41.txt:ポリシー Chapter41.txt:ポリシーは、SELinuxが行うシステム全体のアクセス制御の判断が何かを記述するルール セットです。 Chapter41.txt:SELinuxコンテキストは、ユーザー、プロセス、ファイル、およびポートが相互に対話する方法を定義するルールによって使用される名前です。デフォルトのポリシーはアクセスを拒否することであるため、システムで許されるアクションを記述するためにルールが使用されます。 Chapter41.txt:追加のオンライン ドキュメントとして、SELinux User's and Administrator's Guideがあります。 Chapter41.txt:SELinuxモード Chapter41.txt:SELinuxは、3つのモードのいずれかで実行できます。 Chapter41.txt:クリックして各ボックスを展開し、3つのSELinuxモードの詳細をご覧ください。 Chapter41.txt:SELinuxモード Chapter41.txt:Enforcing Chapter41.txt:すべてのSELinuxコードは有効であり、ポリシーに従ってアクセスは拒否されます。すべての違反を監査しログに記録します。 Chapter41.txt:Permissive Chapter41.txt:SELinuxコードは有効ですが、アクセスを拒否せず、enforcingモードでは拒否される動作については監査と警告のみが行われます。 Chapter41.txt:Disabled Chapter41.txt:SELinux カーネルとアプリケーション コードを完全に無効にし、システムを保護しません。 Chapter41.txt:これらのモードはファイル(通常は/etc/selinux/config)で選択(および説明)され、その場所はディストリビューションによって異なります(多くの場合、/etc/sysconfig/selinuxもしくはそこからリンクされています)。ファイルは読むだけで内容がわかるように自己文書化されています。sestatusユーティリティは、現在のモードとポリシーを表示します。 Chapter41.txt:SELinuxモード:Enforcing Chapter41.txt:SELinuxモード:Permissive Chapter41.txt:現在のモードを確認または設定するには、getenforceとsetenforceを使用します。 Chapter41.txt:$ getenforce Chapter41.txt:Disabled Chapter41.txt:$ sudo setenforce Permissive Chapter41.txt:$ getenforce Chapter41.txt:Permissive Chapter41.txt:setenforceを使用して、システムの稼働中にenforcingモードとpermissiveモードを臨機応変に切り替えることができます。ただし、disabledモードの切り替えは、この方法では行えません。setenforceでは、permissiveモードとenforcingモードを切り替えることができますが、SELinuxを完全に無効にすることはできません。SELinuxを無効にするには、少なくとも2つの異なる方法があります。 Chapter41.txt:構成ファイル Chapter41.txt:SELinuxの構成ファイル(通常は/etc/selinux/config)を編集し、SELINUX=disabledを設定します。これはデフォルトの方法であり、SELinuxを恒久的に無効にするために使用するべきです。 Chapter41.txt:カーネル パラメータ Chapter41.txt:再起動時にselinux=0をカーネル パラメータ リストに追加します。 Chapter41.txt:ただし、SELinuxを再度有効にする可能性のあるシステムでは、SELinuxを無効にすることはお勧めできません。SELinuxを無効にするのではなく、permissiveモードを使用することをお勧めします。これにより、時間のかかるファイルシステム全体の再ラベル付けを回避できます。 Chapter41.txt:SELinuxポリシー Chapter41.txt:同じ構成ファイル(通常である/etc/sysconfig/selinux)にSELinuxポリシーを設定します。複数のポリシーを定義できますが、一度にアクティブにできるのは1つだけです。ポリシーを変更するには、システムの再起動とファイルシステムの内容の時間のかかる再ラベル付けが必要になる場合があります。各ポリシーは、/etc/selinux/[SELINUXTYPE]の下にインストールされるファイルに設定されています。 Chapter41.txt:クリックして各カードを反転し、最も一般的なSELinuxポリシーについて学習します。 Chapter41.txt:targeted Chapter41.txt:SELinuxはターゲットとなるプロセスを制限されたドメインで実行します。デフォルトのポリシーです。ユーザー プロセスとinitプロセスは対象外です。SELinuxは、すべてのプロセスにメモリ制限を適用します。これにより、バッファ オーバーフロー攻撃に対する脆弱性が軽減されます。 Chapter41.txt:minimum Chapter41.txt:選択されたプロセスのみが保護される、targetedポリシーの一種です。 Chapter41.txt:MLS Chapter41.txt:マルチレベル セキュリティ(Multi-Level Security:MLS)は一番制限がきついポリシーです。すべてのプロセスは、特定のポリシーを持つきめ細かいセキュリティ ドメインに置かれます。 Chapter41.txt:コンテキスト ユーティリティ Chapter41.txt:前述したように、コンテキストはファイル、ディレクトリ、ポート、プロセスに適用されるラベルです。これらのラベルは、アクセス ルールを記述するために使用されます。SELinuxコンテキストは4つあります。 Chapter41.txt:ユーザー Chapter41.txt:ロール Chapter41.txt:タイプ Chapter41.txt:レベル。 Chapter41.txt:ここでは、最も一般的に使用されるコンテキストのtypeに注目します。ラベルの命名規則により、kernel_tのように、type コンテキストのラベルは_tで終わる必要があります。 Chapter41.txt:-Zオプションを使用して、コンテキストを表示するには以下を実行します。 Chapter41.txt:$ ls -Z Chapter41.txt:$ ps auZ Chapter41.txt:chconコマンドを使用して、コンテキストを変更する場合は以下です。 Chapter41.txt:$ chcon -t etc_t somefile Chapter41.txt:$ chcon --reference somefile so Chapter41.txt:SELinuxと標準コマンド Chapter41.txt:lsやpsなどの多くの標準コマンド ラインのコマンドは、SELinuxをサポートするように拡張され、マニュアル ページに詳細な説明が追加されました。パラメータZは次のように標準のコマンド ライン ツールに渡されます。 Chapter41.txt:$ ps axZ Chapter41.txt:LABEL PID TTY STAT TIME COMMAND Chapter41.txt:system_u:system_r:init_t:s0 1 ? Ss 0:04 /usr/lib/systemd/systemd --switched-root ... Chapter41.txt:system_u:system_r:kernel_t:s0 2 ? S 0:00 [kthreadd]...unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 2305 ? D 0:00 sshd: peter@pts/0unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 2306 pts/0 Ss 0:00 -bash Chapter41.txt:... Chapter41.txt:system_u:system_r:httpd_t:s0 7490 ? Ss 0:00 /usr/sbin/httpd -DFOREGROUND Chapter41.txt:system_u:system_r:httpd_t:s0 7491 ? S 0:00 /usr/sbin/httpd -DFOREGROUND... Chapter41.txt:$ ls -Z /home/ /tmp/ Chapter41.txt:/home/: Chapter41.txt:drwx------. peter peter unconfined_u:object_r:user_home_dir_t:s0 peter/tmp/: Chapter41.txt:-rwx------. root root system_u:object_r:initrc_tmp_t:s0 ks-script-c4ENhg Chapter41.txt:drwx------. root root system_u:object_r:tmp_t:s0 systemd-private-0ofSvO Chapter41.txt:-rw-------. root root system_u:object_r:initrc_tmp_t:s0 yum.log Chapter41.txt:SELinuxをサポートするために拡張されたツールには他に、cp、mv、mkdirがあります。 Chapter41.txt:SELinuxを無効にした場合、これらのユーティリティの関連フィールドには有用な情報が表示されていないことに注意してください。 Chapter41.txt:コンテキストの継承 Chapter41.txt:新しく作成されたファイルは、親ディレクトリからコンテキストを継承しますが、ファイルを移動すると、保存されているのは移動前のソース ディレクトリのコンテキストであるため、移動後のディレクトリで実行などを行うと問題を引き起こす可能性があります。 Chapter41.txt:前の例で言えば、ファイルを/tmpから/home/peterに移動してもtmpfileのコンテキストは変更されません。 Chapter41.txt:$ cd /tmp/ Chapter41.txt:$ touch tmpfile Chapter41.txt:$ ls -Z tmpfile Chapter41.txt:-rw-rw-r--. peter peter unconfined_u:object_r:user_tmp_t:s0 tmpfile Chapter41.txt:$ cd Chapter41.txt:$ touch homefile Chapter41.txt:$ ls -Z homefile Chapter41.txt:-rw-rw-r--. peter peter unconfined_u:object_r:user_home_t:s0 homefile Chapter41.txt:$ mv /tmp/tmpfile . Chapter41.txt:$ ls -Z Chapter41.txt:-rw-rw-r--. peter peter unconfined_u:object_r:user_home_t:s0 homefile Chapter41.txt:-rw-rw-r--. peter peter unconfined_u:object_r:user_tmp_t:s0 tmpfile Chapter41.txt:ファイルの移動でSELinuxの問題が発生する典型的な例は、httpdサーバーのDocumentRootディレクトリにファイルを移動する場合です。SELinux対応システムでは、ウェブ サーバーは正しいコンテキスト ラベルを持つファイルにのみアクセスできます。/tmpにファイルを作成し、それをDocumentRootディレクトリに移動した場合、そのファイルのSELinuxコンテキストが調整されるまで、httpdサーバーからファイルにアクセスできなくなります。 Chapter41.txt:restorecon Chapter41.txt:restoreconは、親ディレクトリの設定に基づいてファイル コンテキストをリセットします。次の例では、restoreconはホーム ディレクトリのすべてのファイルのデフォルト ラベルを再帰的にリセットします。 Chapter41.txt:$ ls -Z Chapter41.txt:-rw-rw-r--. peter peter unconfined_u:object_r:user_home_t:s0 homefile Chapter41.txt:-rw-rw-r--. peter peter unconfined_u:object_r:user_tmp_t:s0 tmpfile Chapter41.txt:$ restorecon -Rv /home/peter Chapter41.txt:restorecon reset /home/peter/tmpfile context \ Chapter41.txt:unconfined_u:object_r:user_tmp_t:s0->unconfined_u:object_r:user_home_t:s0 Chapter41.txt:$ ls -Z Chapter41.txt:-rw-rw-r--. peter peter unconfined_u:object_r:user_home_t:s0 homefile Chapter41.txt:-rw-rw-r--. peter peter unconfined_u:object_r:user_home_t:s0 tmpfile Chapter41.txt:tmpfileのコンテキストは、ホーム ディレクトリで作成されたファイルのデフォルト コンテキストにリセットされていることに注目してください。タイプがuser_tmp_tからuser_home_tに変更されました。 Chapter41.txt:semanage Chapter41.txt:別の課題として、新しく作成されたディレクトリのデフォルト コンテキストの設定方法があります。semanage fcontext(policycoreutils-pythonパッケージで提供)は、ファイルおよびディレクトリのデフォルト コンテキストの変更と表示ができます。semanage fcontextはデフォルト設定のみを変更することに注意してください。既存のオブジェクトにすぐには適用されません。これには、その後restoreconを実行する必要があります。例えば、 Chapter41.txt:[root@rhel7 /]# mkdir /virtualHosts Chapter41.txt:[root@rhel7 /]# ls -Z Chapter41.txt:... Chapter41.txt:drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 virtualHosts Chapter41.txt:[root@rhel7 /]# semanage fcontext -a -t httpd_sys_content_t /virtualHosts Chapter41.txt:[root@rhel7 /]# ls -Z Chapter41.txt:... Chapter41.txt:drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 virtualHosts Chapter41.txt:[root@rhel7 /]# restorecon -RFv /virtualHosts Chapter41.txt:restorecon reset /virtualHosts context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0 Chapter41.txt:[root@rhel7 /]# ls -Z Chapter41.txt:drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 virtualHosts Chapter41.txt:したがって、default_tからhttpd_sys_content_tへのコンテキストの変更は、restoreconの実行後に適用されます。 Chapter41.txt:SELinuxのブール値の使い方 Chapter41.txt:SELinuxポリシーの挙動は、ポリシーを書き換えなくても実行時に設定できます。これは、有効化と無効化ができるポリシー パラメータであるSELinuxのブール値を設定することにより実現できます。 Chapter41.txt:getsebool - ブール値を見ます。 Chapter41.txt:setsebool - ブール値を設定します。 Chapter41.txt:semanage boolean -i - 恒久的なブール設定を表示します。 Chapter41.txt:以下のスクリーンショットで、現在の状態や簡単な説明を含め、現在のポリシーのすべてのブール値を一覧表示するために必要な操作を確認できます。 Chapter41.txt:$ setsebool allow_ftpd_anon_write on Chapter41.txt:$ getsebool allow_ftpd_anon_write Chapter41.txt: allow_ftpd_anon_write -> on Chapter41.txt:$ semanage boolean -l | grep allow_ftpd_anon_write Chapter41.txt:$ allow_ftpd_anon_write -> off Chapter41.txt:恒久的な設定ではないことに注意してください。 Chapter41.txt:$ setsebool -P allow_ftpd_anon_write on Chapter41.txt:$ semanage boolean -l | grep allow_ftpd_anon_write Chapter41.txt: allow_ftpd_anon_write -> on Chapter41.txt:恒久的な設定になりました。 Chapter41.txt:semanageの使用例 Chapter41.txt:SELinuxアクセスの監視 Chapter41.txt:SELinuxには、実行時に問題を収集し、これらの問題をログに記録し、同じ問題の再発を防ぐソリューションを提案するツール群が付属しています。これらのユーティリティは、setroubleshoot-serverパッケージで提供されます。それらの使用例を次に示します。 Chapter41.txt:[root@rhel7 ~]# echo 'File created at /root' > rootfile Chapter41.txt:[root@rhel7 ~]# mv rootfile /var/www/html/ Chapter41.txt:[root@rhel7 ~]# wget -O - localhost/rootfile Chapter41.txt:--2014-11-21 13:42:04-- http://localhost/rootfile Chapter41.txt:Resolving localhost (localhost)... ::1, 127.0.0.1 Chapter41.txt:Connecting to localhost (localhost)|::1|:80... connected. Chapter41.txt:HTTP request sent, awaiting response... 403 Forbidden Chapter41.txt:2014-11-21 13:42:04 ERROR 403: Forbidden. Chapter41.txt:[root@rhel7 ~]# tail /var/log/messages Chapter41.txt:Nov 21 13:42:04 rhel7 setroubleshoot: Plugin Exception restorecon Chapter41.txt:Nov 21 13:42:04 rhel7 setroubleshoot: SELinux is preventing /usr/sbin/httpd from getattr access on the file . Chapter41.txt:.... Chapter41.txt:Nov 21 13:42:04 rhel7 python: SELinux is preventing /usr/sbin/httpd from getattr access on the file . Chapter41.txt:.... Chapter41.txt:Do allow this access for now by executing Chapter41.txt:# grep httpd /var/log/audit/audit.log | audit2allow -M mypol Chapter41.txt:# semodule -i mypol.pp Chapter41.txt:Additional Information: Chapter41.txt:Source Context system_u:system_r:httpd_t:s0 Chapter41.txt:Target Context unconfined_u:object_r:admin_home_t:s0 Chapter41.txt:Target Objects [ file ] Chapter41.txt:Source httpd Chapter41.txt:Source Path /usr/sbin/httpd Chapter41.txt:.... Chapter41.txt:AppArmor Chapter41.txt:AppArmorは、SELinuxに代わるLSMです。2006年以降、Linuxカーネルにサポートが組み込まれています。SUSE、Ubuntu、およびその他のディストリビューションで使用されています。 Chapter41.txt:AppArmorとは: Chapter41.txt:強制アクセス制御(Mandatory Access Control:MAC)を提供します。 Chapter41.txt:管理者は、セキュリティ プロファイルを、機能を制限するプログラムに関連付けることができます。 Chapter41.txt:SELinuxよりも(すべてではありませんが、一部では)使いやすいと考えられています。 Chapter41.txt:ファイルシステムでの対応は不要です(セキュリティ ラベルは不要)。 Chapter41.txt:AppArmorは、強制アクセス制御( Mandatory Access Control:MAC)を提供することにより、従来の UNIXの任意アクセス制御(Discretionary Access Control :DAC)モデルを補完します。 Chapter41.txt:手動でプロファイルを指定することに加えて、AppArmorには学習モードが含まれています。このモードでは、プロファイルの違反はログに記録されますが、阻止はされません。このログは、プログラムの一般的な動作に基づいていて、プロファイルに変換できます。 Chapter41.txt:状態の確認 Chapter41.txt:AppArmorを採用しているディストリビューションは、デフォルトでAppArmorを有効にしてロードすることが多いです。Linuxカーネルでも同様に有効にする必要があります。ただし、一度に実行できるLSMは1つだけです。 Chapter41.txt:AppArmorカーネル モジュールが利用可能である場合、systemdが装備されたシステムでは次のことができます。 Chapter41.txt:$ sudo systemctl [start|stop|restart|status] apparmor Chapter41.txt:これにより操作の現在の状態を変更または照会できます。もしくは以下を実行すると、 Chapter41.txt:​$ sudo systemctl [enable|disable} apparmor Chapter41.txt:起動時にロードする/しないを決めることができます。 Chapter41.txt:現在の状態を確認するには、次を実行します。 Chapter41.txt:$ sudo apparmor_status Chapter41.txt:apparmor module is loaded. Chapter41.txt:25 profiles are loaded. Chapter41.txt:25 profiles are in enforce mode. Chapter41.txt: /sbin/dhclient Chapter41.txt:... Chapter41.txt:プロファイルとプロセスは、enforceモードまたはcomplainモードのどちらかに属します。これは、SELinuxのenforcingモードとpermissiveモードに類似しています。モードについては次で説明します。プロセスでは、PIDのリストが表示されることに注意してください。 Chapter41.txt:$ ps aux | grep libvirtd Chapter41.txt:root 787 0.0 0.9 527200 35936 ? Ssl 10:54 0:00 /usr/sbin/libvirtd Chapter41.txt:student​ 3346 0.0 0.0 13696 2204 pts/16 S+ 11:42 0:00 grep --color=auto libvirtd Chapter41.txt:モードとプロファイル Chapter41.txt:プロファイルは、システム上で/usr/bin/evinceなどのパス名を持つ実行可能プログラムの使用方法を制限します。 Chapter41.txt:プロセスは、次の2つのモードのいずれかで実行できます。 Chapter41.txt:Enforceモード Chapter41.txt:ポリシー遵守は強制され、アプリケーションが制限されている方法で動作するのを防ぎます。試行された違反は、システム ログ ファイルに報告されます。これがデフォルトのモードです。aa-enforceを使用して、プロファイルをこのモードに設定できます。 Chapter41.txt:Complainモード Chapter41.txt:ポリシーは遵守の強制はありませんが、試行されたポリシー違反は報告されます。これは学習モードとも呼ばれます。aa-complainを使用して、プロファイルをこのモードに設定できます。 Chapter41.txt:Linuxディストリビューションには、あらかじめパッケージ化されたプロファイルが付属しており、通常は、その特定のパッケージがインストールされたときにプロファイルが一緒にインストールされます。もしくは、apparmor-profilesなどのAppArmorパッケージと一緒にプロファイルがインストールされます。これらのプロファイルは/etc/apparmor.dに保存されます。 Chapter41.txt:新しいソフトウェアをインストールするときには、パッケージ内の実行可能ファイルに固有の、新しいプロファイルを作成できます。 Chapter41.txt:システムにインストールされるAppArmorプロファイルは、選択したソフトウェア パッケージによって異なります。たとえば、あるUbuntuシステムの場合: Chapter41.txt:student@ubuntu: /etc/apparmor.d$ ls​ Chapter41.txt:abstractions usr.lib.dovecot.anvil usr.lib.telepathy Chapter41.txt:apache2.d usr.lib.dovecot.auth usr.sbin.avahi-daemon Chapter41.txt:bin.ping usr.lib.dovecot.config usr.sbin.cups-brows Chapter41.txt:... Chapter41.txt:man apparmor.dを実行することで、これらのファイルに何が入るかについての完全なドキュメントを取得できます。 Chapter41.txt:AppArmorユーティリティ Chapter41.txt:AppArmorには、監視と制御のための管理ユーティリティが数多くあります。たとえば、OpenSUSEシステムの場合: Chapter41.txt:$ rpm -qil apparmor-utils | grep bin​ Chapter41.txt:/usr/bin/aa-easyprof Chapter41.txt:/usr/sbin/aa-audit Chapter41.txt:/usr/sbin/aa-autodep Chapter41.txt:/usr/​sbin/aa-cleanprof Chapter41.txt:/usr/sbin/aa-complain Chapter41.txt:/usr/sbin/aa-decode Chapter41.txt:/usr/sbin/aa-disable Chapter41.txt:/usr/sbin/aa-enforce Chapter41.txt:/usr/sbin/aa-exec Chapter41.txt:.... Chapter41.txt:/usr/sbin/complain Chapter41.txt:/usr/sbin/decode Chapter41.txt:/usr/sbin/disable Chapter41.txt:/usr/sbin/enforce Chapter41.txt:.... Chapter41.txt:これらのユーティリティの多くは、短い名前を指定しても長い名前を指定しても呼び出すことができます。以下に例を示します。 Chapter41.txt:linux-llgn:/etc/apparmor.d # ls -l /usr/sbin/*complain Chapter41.txt:-rwxr-xr-x 1 root root 1442 Oct 25 07:37 /usr/sbin/aa-complain* Chapter41.txt:lrwxrwxrwx 1 ​root root 11 Nov 11 13:02 /usr/sbin/complain -> aa-complain* Chapter41.txt:linux-llgn:/etc/apparmor.d # Chapter41.txt:表:AppArmorユーティリティ Chapter41.txt:プログラム 用途 Chapter41.txt:apparmor_status すべてのプロファイルおよびプロファイルを含むプロセスのステータスを表示します Chapter41.txt:apparmor_notify(aa-notify) AppArmorのログ メッセージの概要を表示します Chapter41.txt:complain 特定のプロファイルをcomplainモードに設定します Chapter41.txt:enforce 指定したプロファイルを強制モードに設定します Chapter41.txt:disable 現在のカーネルから指定されたプロファイルをアンロードし、システム起動時にロードされないようにします Chapter41.txt:logprof(aa-logprof) ログ ファイルをスキャンし、既存のプロファイルでカバーされていないAppArmorイベントが記録されている場合は考慮に入れる方法を提案し、承認されている場合は制限するように変更して再ロードします。 Chapter41.txt:easyprof(aa-easyprof) プログラムの基本的なAppArmorプロファイルの生成を支援します。簡易なインターフェイスを提供します。 Chapter41.txt:演習 Chapter41.txt:課題 41.1: SELinux:コンテキスト Chapter41.txt:🚩 Chapter41.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter41.txt:Exercise 41.1: SELinux: Contexts Chapter41.txt:Please Note Chapter41.txt:This exercise can only be performed on a system (such as RHEL) where SELinux is installed. While it is possible to install on Debian-based distributions, such as Ubuntu, it is not the easiest task and it is not often done. Chapter41.txt:1. Verify SELinux is enabled and in enforcing mode, by executing getenforce and sestatus. If not, edit /etc/selinux/config, reboot, and check again. Chapter41.txt:2. Install the httpd package (if not already present) which provides the Apache web server, and then verify that it is working: Chapter41.txt:$ sudo yum install httpd Chapter41.txt:$ elinks http:/localhost Chapter41.txt:(You can also use lynx or elinks etc. as the browser, or use your graphical browser such as firefox or chrome, in this and succeeding steps.) Chapter41.txt:3. As superuser, create a small file in /var/www/html: Chapter41.txt:$ sudo sh -c "echo file1 > /var/www/html/file1.html" Chapter41.txt:4. Verify you can see it: Chapter41.txt:$ elinks -dump http://localhost/file1.html Chapter41.txt:file1 Chapter41.txt:Now create another small file in root’s home directory and move it to /var/www/html. (Do not copy it, move it!) Then try and view it: Chapter41.txt:$ sudo cd /root Chapter41.txt:$ sudo sh -c "echo file2 > file2.html" Chapter41.txt:$ sudo mv file2.html /var/www.html Chapter41.txt:$ elinks -dump http://localhost/file2.html Chapter41.txt:Forbidden Chapter41.txt:You don't have permission to access /file2.html on this server. Chapter41.txt:5. Examine the security contexts: Chapter41.txt:$ cd /var/www/html Chapter41.txt:$ ls -Z file*html Chapter41.txt:-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 file1.html Chapter41.txt:-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 file2.html Chapter41.txt:6. Change the offending context and view again: Chapter41.txt:$ sudo chcon -t httpd_sys_content_t file2.html Chapter41.txt:$ elinks http://localhost/file2.html Chapter41.txt:file2 Chapter41.txt:課題 41.2: apparmorセキュリティを使う Chapter41.txt:🚩 Chapter41.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter41.txt:Exercise 41.2: Exploring apparmor security Chapter41.txt:Please Note Chapter41.txt:This exercise can only be performed on a system (such asUbuntu) where AppArmor is installed.The below was tested on Ubuntu, but should work on other AppArmor-enabled systems, such as OpenSUSE, where the apt commands should be replaced by zypper. Chapter41.txt:On Ubuntu, the /bin/ping utility runs with SUID enabled. For this exercise, we will copy ping to ping-x and adjust the capabilities so the program functions.Then we will build an AppArmor profile, install and verify that nothing has changed. Modifying the AppArmor profile and adding capabilities will allow the program more functionality. Chapter41.txt:1. Make sure all necessary packages are installed: Chapter41.txt:student@ubuntu: ̃$ sudo apt install apparm* Chapter41.txt:2. Create a copy ofping (called ping-x) and verify it has no initial special permissions or capabilities. Furthermore, it cannot work when executed by student, a normal user: Chapter41.txt:student@ubuntu: ̃$ sudo cp /bin/ping /bin/ping-x Chapter41.txt:student@ubuntu: ̃$ sudo ls -l /bin/ping-x Chapter41.txt:-rwxr-xr-x 1 root root 64424 Oct 17 10:12 /bin/ping-x Chapter41.txt:student@ubuntu: ̃$ sudo getcap /bin/ping-x Chapter41.txt:student@ubuntu: ̃$ Chapter41.txt:student@ubuntu: ̃$ ping-x -c3 -4 127.0.0.1 Chapter41.txt:ping: socket: Operation not permitted Chapter41.txt:3. Set the capabilities and re-try ping-x: Chapter41.txt:student@ubuntu: ̃$ sudo setcap cap_net_raw+ep /bin/ping-x Chapter41.txt:student@ubuntu: ̃$ ping-x -c3 -4 127.0.0.1 Chapter41.txt:PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. Chapter41.txt:64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.092 ms Chapter41.txt:64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.093 ms Chapter41.txt:64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.086 ms Chapter41.txt:--- 127.0.0.1 ping statistics --- Chapter41.txt:3 packets transmitted, 3 received, 0% packet loss, time 2034ms Chapter41.txt:rtt min/avg/max/mdev = 0.086/0.090/0.093/0.008 ms Chapter41.txt:The modifiedping-x program now functions normally. Chapter41.txt:4. Verify there is no pre-existing AppArmor profile for ping-x, but there is a profile forping. Determine the status of the current ping program: Chapter41.txt:student@ubuntu: ̃$ sudo aa-status Chapter41.txt:The output from aa-status is long, so we can grep for the interesting lines: Chapter41.txt:student@ubuntu: ̃$ sudo aa-status | grep -e "ˆ[[:alnum:]]" -e ping Chapter41.txt:apparmor module is loaded. Chapter41.txt:87 profiles are loaded. Chapter41.txt:51 profiles are in enforce mode. Chapter41.txt:ping Chapter41.txt:36 profiles are in complain mode. Chapter41.txt:17 processes have profiles defined. Chapter41.txt:6 processes are in enforce mode. Chapter41.txt:11 processes are in complain mode. Chapter41.txt:0 processes are unconfined but have a profile defined. Chapter41.txt:We can see ping has a profile that is loaded and enabled for enforcement. Chapter41.txt:5. Next we will construct a new profile for ping-x. This step requires two terminal windows. Chapter41.txt:The first window (window1) will be running the aa-genprof command. This will generate a AppArmor profile by scan-ning /var/log/syslog for AppArmor errors. Chapter41.txt:The second window (window2) will be used to run ping-x. (See the manpage for aa-genprof for additional information.) Chapter41.txt:Inwindow1: Chapter41.txt:student@ubuntu: ̃$ sudo aa-genprof /bin/ping-x Chapter41.txt:Writing updated profile for /bin/ping-x. Chapter41.txt:Setting /bin/ping-x to complain mode. Chapter41.txt:Before you begin, you may wish to check if a Chapter41.txt:profile already exists for the application you Chapter41.txt:wish to confine. See the following wiki page for Chapter41.txt:more information: Chapter41.txt:http://wiki.apparmor.net/index.php/Profiles Chapter41.txt:Please start the application to be profiled in Chapter41.txt:another window and exercise its functionality now. Chapter41.txt:Once completed, select the "Scan" option below in Chapter41.txt:order to scan the system logs for AppArmor events. Chapter41.txt:For each AppArmor event, you will be given the Chapter41.txt:opportunity to choose whether the access should be Chapter41.txt:allowed or denied. Chapter41.txt:Profiling: /bin/ping-x Chapter41.txt:[(S)can system log for AppArmor events] / (F)inish Chapter41.txt:Inwindow2: Chapter41.txt:student@ubuntu: ̃$ ping-x -c3 -4 127.0.0.1 Chapter41.txt:PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. Chapter41.txt:64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.099 ms Chapter41.txt:64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.120 ms Chapter41.txt:64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.114 ms Chapter41.txt:--- 127.0.0.1 ping statistics --- Chapter41.txt:3 packets transmitted, 3 received, 0% packet loss, time 2041ms Chapter41.txt:rtt min/avg/max/mdev = 0.099/0.111/0.120/0.008 ms Chapter41.txt:Inwindow1: Chapter41.txt:The command ping-x has completed, we must now instruct aa-genprof to scan for the required information to be added to the profile. It may require several scans to collect all of the information for the profile.Enter S to scan: Chapter41.txt:Reading log entries from /var/log/syslog. Chapter41.txt:Updating AppArmor profiles in /etc/apparmor.d. Chapter41.txt:Complain-mode changes: Chapter41.txt:Profile: /bin/ping-x Chapter41.txt:Capability: net_raw Chapter41.txt:Severity: 8 Chapter41.txt:[1 - capability net_raw,] Chapter41.txt:(A)llow / [(D)eny] / (I)gnore / Audi(t) / Abo(r)t / (F)inish Chapter41.txt:Enter A to allow the capability: Chapter41.txt:Adding capability net_raw, to profile. Chapter41.txt:Profile: /bin/ping-x Chapter41.txt:Network Family: inet Chapter41.txt:Socket Type: raw Chapter41.txt:[1 - network inet raw,] Chapter41.txt:(A)llow / [(D)eny] / (I)gnore / Audi(t) / Abo(r)t / (F)inish Chapter41.txt:EnterAto allow the network family: Chapter41.txt:Adding network inet raw, to profile. Chapter41.txt:Profile: /bin/ping-x Chapter41.txt:Network Family: inet Chapter41.txt:Socket Type: dgram Chapter41.txt:[1 - #include ] Chapter41.txt:2 - network inet dgram, Chapter41.txt:(A)llow / [(D)eny] / (I)gnore / Audi(t) / Abo(r)t / (F)inish Chapter41.txt:Enter A to add the socket type datagram to the profile: Chapter41.txt:Adding #include to profile. Chapter41.txt:= Changed Local Profiles = Chapter41.txt:The following local profiles were changed. Would you like to save them? Chapter41.txt:[1 - /bin/ping-x] Chapter41.txt:(S)ave Changes / Save Selec(t)ed Profile / [(V)iew Changes] / View Changes b/w (C)lean profiles / Abo(r)t Chapter41.txt:Enter S to save the new profile: Chapter41.txt:Writing updated profile for /bin/ping-x. Chapter41.txt:Profiling: /bin/ping-x Chapter41.txt:[(S)can system log for AppArmor events] / (F)inish Chapter41.txt:EnterFto finish: Chapter41.txt:Setting /bin/ping-x to enforce mode. Chapter41.txt:Reloaded AppArmor profiles in enforce mode. Chapter41.txt:Please consider contributing your new profile! Chapter41.txt:See the following wiki page for more information: Chapter41.txt:http://wiki.apparmor.net/index.php/Profiles Chapter41.txt:Finished generating profile for /bin/ping-x. Chapter41.txt:6. View the created profile, which has been stored in/etc/appamor.d/bin.ping-x. Chapter41.txt:student@ubuntu: ̃$ sudo cat /etc/apparmor.d/bin.ping-x Chapter41.txt:# Last Modified: Tue Oct 17 11:30:47 2017 Chapter41.txt:#include Chapter41.txt:/bin/ping-x { Chapter41.txt:#include Chapter41.txt:#include Chapter41.txt:capability net_raw, Chapter41.txt:network inet raw, Chapter41.txt:/bin/ping-x mr, Chapter41.txt:/lib/x86_64-linux-gnu/ld-*.so mr,} Chapter41.txt:7. The aa-genproc utility installs and activates the new policy so it should be ready to use, and the policies can be reloaded on demand with the systemctl reload apparmor command. To avoid any potential issues, and verify the changes will survive, reboot the system. Chapter41.txt:Once the system has restarted, as the user student, verify ping-xstill functions with the new profile enabled. Ping the localhost by ip address: Chapter41.txt:student@ubuntu: ̃$ ping-x -c3 -4 127.0.0.1 Chapter41.txt:PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. Chapter41.txt:64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.057 ms Chapter41.txt:64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.043 ms Chapter41.txt:64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.095 ms Chapter41.txt:--- 127.0.0.1 ping statistics --- Chapter41.txt:3 packets transmitted, 3 received, 0% packet loss, time 2027ms Chapter41.txt:rtt min/avg/max/mdev = 0.043/0.065/0.095/0.021 ms Chapter41.txt:8. This should work as expected. The profile is very specific, and AppArmor will not allow functionality outside of the specified parameters. To verify AppArmor is protecting this application, try to ping the IPV6 localhost address. Chapter41.txt:This should fail: Chapter41.txt:student@ubuntu: ̃$ ping-x -c3 -6 ::1 Chapter41.txt:ping: socket: Permission denied Chapter41.txt:(Note, the-6 option means use only IPv6and::1 is the local host in IPv6.) Chapter41.txt:The output indicates there is a socket issue. If the system log is examined it will be discovered that our ping-x program has no access to IPv6 within AppArmor: Chapter41.txt:766:104): apparmor="DENIED" operation="create" profile="/bin/ping-x" Chapter41.txt:pid=2709 comm="ping-x" family="inet6" sock_type="raw" protocol=58 Chapter41.txt:requested_mask="create" denied_mask="create Chapter41.txt:9. To correct this deficiency, re-run aa-genprof as we did earlier, and in window 2, ping the IPv6 loopback and append the additional options Chapter41.txt:知識チェック Chapter41.txt:「第41章 - Linux Security Modules」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter41.txt:クイズ開始 Chapter41.txt:問題 41.1 Chapter41.txt:SELinuxのPermissiveモードとEnforcingモードの違いを、より適切に説明している文章は次のうちどれですか? Chapter41.txt:A. SELinuxのEnforcingモードは、アクセスできるプロセスのみを制限し、ネットワーク ポートには影響しません。 Chapter41.txt:B. SELinuxのEnforcingモードは、明示的に許可されているもの以外のすべてへのアクセスを拒否します。 Chapter41.txt:C. SELinuxのEnforcingモードとPermissiveモードは似ていますが、Permissiveモードはエラーをログに記録します。 Chapter41.txt:D. SELinuxのPermissiveモードは、明示的に許可されているもの以外のすべてへのアクセスを拒否します。 Chapter41.txt:問題 41.2 Chapter41.txt:現在のディレクトリのデフォルト コンテキストに一致するようにファイル コンテキストをリセットするには、SELinuxのどのツールを使用すればよいですか? Chapter41.txt:A. restorecon Chapter41.txt:B. semanage Chapter41.txt:C. setsebol Chapter41.txt:D. getsebol Chapter42.txt:ローカル システムのセキュリティ Chapter42.txt:はじめに Chapter42.txt:第42章はじめに Chapter42.txt:システム管理者の重要なタスクは、内部と外部の両方の脅威からシステムを保護することです。その作業は、適切なセキュリティ ポリシーの設計から始まります。これは、予想される予期しない脅威ベクトルから保護するために作成されます。さらに、適切なシステムのウィルス予防策を実践する必要があります。システムは、タイムリーに保守やアップグレードを行う必要があります。また、侵入者から物理的に保護する必要があります。さらに、優れたポリシーでは、適切なユーザーのみが潜在的な危険性を内包した特権を持つこと、そして持つのは絶対に必要な特権のみであることを保証する必要があります。 Chapter42.txt:学習目標 Chapter42.txt:この章の終わりまでに、次のことができるようになります。 Chapter42.txt:システムのセキュリティ リスクを評価できます。 Chapter42.txt:健全なコンピュータ セキュリティ ポリシーとその手続きを作成し、実装できます。 Chapter42.txt:パスワードでBIOSとブートローダーを効率的に保護できます。 Chapter42.txt:適切なマウントのオプションのsetuidとsetgidを使用して、セキュリティを強化できます。 Chapter42.txt:ローカル システムのセキュリティ Chapter42.txt:ローカル システム セキュリティの概要 Chapter42.txt:コンピュータは本質的に安全ではなく、侵入したり攻撃したりする人々からの保護が必要です。侵入や攻撃は、システムに害を与える、サービスを拒否する、情報を盗む、ただそれだけのために行われます。 Chapter42.txt:絶対に安全なコンピュータはありません。私たちにできることは、侵入者の動きを鈍化させるか阻止することです。そうすれば、侵入者がもっと簡単に侵入できるターゲットを探しに立ち去るか、または、私たちが侵入の動きを捉えてして適切な処置を取ることができます。 Chapter42.txt:セキュリティとは、システムが本来すべきことを定期的に実行する機能と定義できます。システムの整合性と正確性を実現し、使用を許可された人だけがシステムを使用できるようにすることです。 Chapter42.txt:セキュリティに関する最大の課題は、セキュリティと生産性の適切な組み合わせを見つけることです。セキュリティの制限が厳しく、解りにくく、使いにくい場合、特に効果のない対策では、ユーザーは使用を避けるでしょう。 Chapter42.txt:保護する必要がある対象は4種類あります。physical(物理的なもの)、 local,(ローカル)、remote(リモート)、personnel(人的なもの)です。このセクションでは、ネットワーク セキュリティではなくローカルのセキュリティを説明します。 Chapter42.txt:セキュリティ ポリシーの作成 Chapter42.txt:重要なことは明確なセキュリティ ポリシーを作成して組織に公開することです。すべきこととして、以下があります。 Chapter42.txt:シンプルで理解しやすくすること Chapter42.txt:常に更新すること Chapter42.txt:必要に応じて、オンラインに加えて、書面で文書を示すこと Chapter42.txt:ポリシーと手続きの両方を説明すること Chapter42.txt:実施するアクションを指定すること Chapter42.txt:セキュリティ違反に対して実行するアクションを指定すること。 Chapter42.txt:ポリシーは一般的な表現にし、理解しやすくする必要があります。必要なデータを保護し、要求されたサービスへのアクセスを拒否し、ユーザーのプライバシーを保護する必要があります。 Chapter42.txt:これらのポリシーは定期的に更新する必要があります。要件と同様にポリシーも変更する必要があります。古くなったポリシーを持つことは、ポリシーがないことよりも悪い場合があります。 Chapter42.txt:ポリシーに含めるもの Chapter42.txt:セキュリティ ポリシーには、権限のない担当者による情報の読み取りやコピーから情報を保護する方法を含める必要があります。また、所有者の許可なく情報が変更または削除されないように保護する必要があります。すべてのサービスを利用できるように保護すべきであり、許可なしにいかなる方法でも傷つけることのないようにする必要があります。 Chapter42.txt:対象にすべき重要なものは以下です。 Chapter42.txt:守秘義務 Chapter42.txt:データの整合性 Chapter42.txt:可用性 Chapter42.txt:一貫性 Chapter42.txt:制御 Chapter42.txt:監査 Chapter42.txt:データが正しいこと、およびシステムが期待どおりに動作することを確認する必要があります。システムへのアクセス権が誰に付与されるかを決定するための、有効なプロセスがあるはずです。人的な要因は、セキュリティ チェーンの中でも最も弱いリンクです。継続的な監査を通じて最も注意を払う必要があります。 Chapter42.txt:評価すべきリスクとは Chapter42.txt:リスク分析は、次の3つの項目に基づいて行ないます。 Chapter42.txt:何を保護したいか? Chapter42.txt:何から保護しているか? Chapter42.txt:適切な保護を提供するには、どれだけの時間、人員、およびお金が必要か? Chapter42.txt:システムを保護する方法を決定するには、何を何から保護するかを知る必要があります。これにより、システムを保護するためのポリシーとその手続きを計画できます。 Chapter42.txt:これは、コンピュータのセキュリティ ポリシーを構築するための最初のステップです。そして、システムを保護するためのポリシーと手続きを計画・実施するための前提条件です。 Chapter42.txt:セキュリティ方針の選択 Chapter42.txt:ほとんどのコンピューティング環境で使用されている、2つの基本的な方針があります。 Chapter42.txt:明示的に許可されていないものは拒否 Chapter42.txt:明示的に禁止されていないものは許可 Chapter42.txt:自分の組織に最適な方針を決定する必要があります。 Chapter42.txt:方針の最初の選択は、より厳格なものにします。ユーザーは、特権なしの許可を明確かつ明示的に指定されている場合のみ実行できます。これは最も一般的に使用される方針です。 Chapter42.txt:2番目の選択は、ユーザーが明示的に禁止されていること以外は何でも実行できる、より自由な環境を構築します。これは、想定される信頼度が高いことを意味し、明らかな理由で展開される頻度は低くなっています。 Chapter42.txt:各ボックスをクリックして展開し、セキュリティ方針を作る際に覚えておくべき一般的なガイドラインについて学びます。 Chapter42.txt:セキュリティ方針を作るためのガイドライン Chapter42.txt:人的要因は最も弱いリンクです Chapter42.txt:ユーザーを教育し、ユーザーを満足させる必要があります。侵入の最大の割合は内部であり、多くの場合悪意のあるものではありません。 Chapter42.txt:不死身のコンピューティング環境はありません Chapter42.txt:安全な唯一のシステムは、何にも接続されておらず、安全な部屋に閉じ込められて電源がオフになっているシステムです。 Chapter42.txt:被害妄想は良いことです Chapter42.txt:コンピュータを保護するときは、疑い深く、用心深く、忍耐強く行動してください。保護は、常に注意を払わなければならない継続作業です。プロセスとユーザーを確認し、異常な部分を探します。 Chapter42.txt:ユーザーは絶対に現在のディレクトリをパスに入れないでください。つまり、〜/.bashrcでPATH=/:$ PATHのようなことをしないでください。 Chapter42.txt:これは重大なセキュリティ リスクです。悪意のある人物が同じ名前のプログラムを代用して、有害なことを行う可能性があります。次の行だけを含む、lsという名前のスクリプトを考えてみてください。 Chapter42.txt:/bin/rm -rf $HOME Chapter42.txt:このファイルが含まれているディレクトリに移動してlsと入力すると、ホーム ディレクトリが消去されてしまします! Chapter42.txt:システムの更新とパッチ Chapter42.txt:Linuxディストリビュータ提供の更新とアップグレードに注意を払い、できるだけ早く適用することが重要です。 Chapter42.txt:🚩 Chapter42.txt:全く更新されていないシステムは脆弱であると見なされます。 Chapter42.txt: Chapter42.txt:ほとんどの攻撃は、既知のセキュリティホールを悪用し、問題が明らかになってからパッチが適用されるまでの間に行われます。このゼロデイ攻撃は実際には非常に珍しいです。攻撃者は、まだ発見されていないか修正がリリースされていないセキュリティホールを使用します。 Chapter42.txt:システム管理者は、修正よりも多くの問題を引き起こす、プロプライエタリなオペレーティング システム ベンダーとの苦い経験から、リリース直後に修正を適用することに消極的です。ただし、Linuxでは、このような意味でのセキュリティの低下は非常にまれであり、セキュリティ パッチの適用を遅らせることで生まれる危険性を、おそらく正当化できません。 Chapter42.txt:ハードウェア アクセシビリティの脆弱性 Chapter42.txt:ハードウェアが物理的にアクセス可能なときはいつでも、セキュリティは次の方法で危険にさらされる可能性があります。 Chapter42.txt:キーのロギング:押すキーを含む、コンピュータ ユーザーのリアルタイムのアクティビティを記録します。キャプチャされたデータは、ローカルに保存するか、リモート マシンに送信できます。 Chapter42.txt:ネットワーク スニッフィング:ネットワーク上のネットワーク パケット レベルのデータをキャプチャして表示します。 Chapter42.txt:ライブまたはレスキュー ディスクでの起動。 Chapter42.txt:ディスク コンテンツの再マウントと変更。 Chapter42.txt:システムへの物理アクセスにより、攻撃者は複数の攻撃ベクトルを簡単に利用できるようになります。そうなると、オペレーティング システム レベルの助言はすべて意味のないものになります。 Chapter42.txt:したがって、セキュリティ ポリシーは、サーバーおよびワークステーションへの物理アクセスを適切に保護する方法の要件定義から始める必要があります。 Chapter42.txt:ハードウェア アクセスのガイドライン Chapter42.txt:必要な保護の手順は次のとおりです。 Chapter42.txt:ワークステーションとサーバーのロック ダウン Chapter42.txt:信頼できない人によるアクセスからの、ネットワーク リンクの保護 Chapter42.txt:パスワードが入力されているキーボードが改ざんされないように、キーボードを保護 Chapter42.txt:ライブまたはレスキューのCD/DVDやUSBキーでシステムを起動できないように、BIOSをパスワードで保護 Chapter42.txt:シングル ユーザー コンピュータおよび家庭環境のコンピュータの場合は、上記の機能の一部(リムーバブル メディアからの起動の防止など)は過剰反応になる可能性があるため、それらの実装を回避します。ただし、機密情報がシステム上にあるなど慎重に保護する必要がある場合は、そこに置かないようにするか、上記のガイドラインに従って保護を強化する必要があります。 Chapter42.txt:BIOS Chapter42.txt:BIOSは、システムを構成または操作する最低レベルのソフトウェアです。ブートローダーは、BIOSにアクセスしてマシンを起動する方法を決定します。BIOSとは、 Chapter42.txt:最下位レベルのセキュリティです。 Chapter42.txt:パスワードを使用して保護する必要があります。 Chapter42.txt:更新し、最新状態にする必要があります。 Chapter42.txt:BIOSパスワードを設定すると、権限のない人物がシステムにアクセスするために起動オプションを変更することを防ぐことができます。ただしローカルに存在する必要があるため、問題になるのは誰かがマシンに物理的にアクセスする場合だけです。 Chapter42.txt:また、ファームウェアを最新バージョンにしておくために、BIOSには常にパッチを当てておくことをお勧めします。ただし、ほとんどのBIOSアップデートはセキュリティとは何の関係もありません。また、不十分なBIOSコードだと常に問題が起きるので、不要なアップデートはシステムを役に立たなくする可能性があります。システム管理者は新しいBIOSを適用する際には慎重に行うように指示されています。 Chapter42.txt:ブートローダー Chapter42.txt:安全なパスワードを使用して起動プロセスを保護し、誰かがユーザー認証手順をすり抜けることを防ぐことができます。これは、BIOSのパスワード保護と連動して機能します。 Chapter42.txt:ブートローダーのパスワードだけを使用した場合、ユーザーがブート プロセス中にブートローダーの設定を編集することはできなくなりますが、ユーザが光ディスクやペン ドライブなどの代替ブート メディアからブートすることを妨ぐことはできません。したがって、完全に保護するには、BIOSパスワードと一緒に使用する必要があります。 Chapter42.txt:古いGRUBバージョン1の場合、GRUBのパスワードを設定するのは比較的簡単でしたが、今主流のGRUBバージョン2の場合は、もっと複雑になっています。ただし、柔軟性が高く、個々のユーザー固有のパスワード(通常のログイン パスワード)の設定を行うことができます。 Chapter42.txt:繰り返しになりますが、grub.cfgを直接編集しないでください。代わりに、/etc/grub.dのシステム構成ファイルを編集してから、update-grubまたはgrub2-mkconfigを実行して、新しい構成ファイルを保存します。 Chapter42.txt:この関連の説明は、UbuntuドキュメントのGrub2/Passwordsウェブ ページにあります。 Chapter42.txt:安全なマウント オプションの使用 Chapter42.txt:ファイルシステムをマウントする場合、mountコマンドを使用してコマンド ラインで、または/etc/fstabに設定して自動的に、さまざまなオプションを指定してセキュリティを強化できます。 Chapter42.txt:nodev Chapter42.txt:ファイルシステム上のキャラクタやブロックのスペシャル デバイスを利用できないようにします Chapter42.txt:nosuid Chapter42.txt:set-user-identifierビットやset-group-identifierビットを無効にします。(setuidとsetgidについては、この後説明します)。 Chapter42.txt:noexec Chapter42.txt:マウントされたファイルシステム上のバイナリの、直接実行を制限します。 Chapter42.txt:ro Chapter42.txt:次のように、ファイルシステムを読み取り専用モードでマウントします。 Chapter42.txt:$ mount -o ro,noexec,nodev /dev/sda2 /mymountpt Chapter42.txt:または/etc/fstabで設定します。 Chapter42.txt:/dev/sda2 /mymountpt ext4 ro,noexec,nodev 0 0 Chapter42.txt:setuid/setgidビット Chapter42.txt:通常、プログラムは、プログラムを実行しているユーザーの権限で実行されます。これは、実行中のバイナリ実行可能なファイルが実際には誰の所有であっても、プロセスは依然として特権が制限されていることを意味します。 Chapter42.txt:場合によっては、ネットワーク インターフェイスの起動や停止をしたり、スーパーユーザーが所有するファイルを編集したりする機能など、一般のユーザーに通常ではできない拡張機能を持たせることがあります。 Chapter42.txt:実行可能なファイルにsetuid(set user ID)ビットを設定すると、プログラムの実行ユーザーではなく所有者の権限でプログラムを実行することになり、通常の動作を変更できます。 Chapter42.txt:さらに、setgidビットを設定すると、ファイルを実行しているグループの特権ではなく、ファイルを所有しているグループの特権でプロセスは実行されます。 Chapter42.txt:これは一般的に悪い考えであり、ほとんどの状況で行うべきではないことを強調しておきます。多くの場合、この種の設定には、より絞られた特権のデーモン プログラムを作成することが適切です。一部のディストリビューションでは、この設定機能が完全に無効になっています。 Chapter42.txt:デフォルトでは、ファイルがディレクトリに作成されると、そのファイルは、そのファイルを作成したユーザーとユーザーのグループによって所有されます。ディレクトリでsetgid設定を使用すると、ディレクトリで作成されたファイルが、そのディレクトリのグループ所有者によって所有されるように変更されます。これにより、ユーザーのグループがファイルを共有できる、共有ディレクトリを作成できます。 Chapter42.txt:これは以下のコマンドで行います。 Chapter42.txt:$ chmod u+s somefile Chapter42.txt:$ chmod g+s somefile Chapter42.txt:最初の例はsetuid操作を実行し、2番目の例はsetgid操作を実行します。 Chapter42.txt:ディレクトリの場合、グループ ビットを設定すると異なる効果があります。次のように、共有ディレクトリを作成するために使用されます。 Chapter42.txt:$ chmod g+s somedir Chapter42.txt:このディレクトリに作成されたファイルは、ディレクトリのグループ所有者の所有となります。 Chapter42.txt:シェル スクリプト形式のファイルのsetuid設定は、実質的には変更できないことに注意してください。実際、シェルのsetuidビットを変更しなければ何も起こりませんが、もし変更すると、ひどいセキュリティ ホールになります。setuidの変更は、実行可能なバイナリ プログラムでのみ実行できます。 Chapter42.txt:演習 Chapter42.txt:課題 42.1: セキュリティとマウントのオプション Chapter42.txt:🚩 Chapter42.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter42.txt:【【これ以降は橋本さん訳を参照】】 Chapter42.txt:We are going to mount a partition or loop device with the noexec option to prevent execution of programs that reside on the filesystem there in. You can certainly do this with a pre-existing and mounted partition, but you may not be able to easily change the behavior while the partition is mounted. Therefore, to demonstrate we’ll use a loop device, which is a harmless procedure. Chapter42.txt:1. Set up an empty file, put a filesystem on it and mount it. Chapter42.txt:2. Copy an executable file to it from somewhere else on your system and test that it works in the new location. Chapter42.txt:3. Unmount it and remount with the noexec option. Chapter42.txt:4. Test if the executable still works. It should give you an error because of the noexec mount option. Chapter42.txt:5. Clean up. Chapter42.txt:Solution 42.1 Chapter42.txt:1.$ dd if=/dev/zero of=image bs=1M count=100 Chapter42.txt:$ sudo mkfs.ext3 image Chapter42.txt:$ mkdir mountpoint Chapter42.txt:$ sudo mount -o loop image mountpoint Chapter42.txt:2.$ sudo cp /bin/ls mountpoint Chapter42.txt:$ mountpoint/ls Chapter42.txt:3.$ sudo umount mountpoint Chapter42.txt:$ sudo mount -o noexec,loop image mountpoint Chapter42.txt:または Chapter42.txt:$ sudo mount -o noexec,remount image mountpoint Chapter42.txt:4.$ mountpoint/ls Chapter42.txt:5.$ sudo umount mountpoint Chapter42.txt:$ rm image Chapter42.txt:$ rmdir mountpoint Chapter42.txt:Note that this is not persistent. To make it persistent you would need to add the option to /etc/fstab with a line like: Chapter42.txt:in/etc/fstab Chapter42.txt:/home/student/image /home/student/mountpoint ext3 loop,rw,noexec0 0 Chapter42.txt:課題 42.2: setuidとスクリプトについて Chapter42.txt:🚩 Chapter42.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter42.txt:Exercise 42.2: More on setuid and Scripts Chapter42.txt:Suppose we have the following C program (./writeit.c) which attempts to overwrite a file in the current directory named afile. This file can be extracted from your downloaded SOLUTIONS file as writeit.c. Chapter42.txt:writeit.c Chapter42.txt:1/* Chapter42.txt:2@*/ Chapter42.txt:3#include Chapter42.txt:4#include Chapter42.txt:5#include Chapter42.txt:6#include Chapter42.txt:7#include Chapter42.txt:8#include Chapter42.txt:9#include Chapter42.txt:10 Chapter42.txt:11int main(intargc,char*argv[]) Chapter42.txt:12{ Chapter42.txt:13intfd, rc; Chapter42.txt:14char*buffer ="TESTING A WRITE"; Chapter42.txt:15fd = open("./afile", O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); Chapter42.txt:16rc = write(fd, buffer, strlen(buffer)); Chapter42.txt:17printf("wrote %d bytes\n", rc); Chapter42.txt:18close(fd); Chapter42.txt:19exit(EXIT_SUCCESS); Chapter42.txt:20} Chapter42.txt:If the program is called writeit.c, it can be compiled simply by doing: Chapter42.txt:$ make writeit Chapter42.txt:or equivalently Chapter42.txt:$ gcc -o writeit writeit.c Chapter42.txt:If (as a normal user) you try to run this program on a file owned by root you’ll get Chapter42.txt:$ sudo touch afile Chapter42.txt:$ ./writeit Chapter42.txt:wrote -1 bytes Chapter42.txt:but if you run it as root: Chapter42.txt:$ sudo ./writeit Chapter42.txt:wrote 15 bytes Chapter42.txt:Thus, the root user was able to overwrite the file it owned, but a normal user could not. Chapter42.txt:Note that changing the owner of writeit to root does not help: Chapter42.txt:$ sudo chown root.root writeit Chapter42.txt:$ ./writeit Chapter42.txt:wrote -1 bytes Chapter42.txt:because it still will not let you clobber afile. Chapter42.txt:By setting the setuid bit you can make any normal user capable of doing it: Chapter42.txt:$ sudo chmod +s writeit Chapter42.txt:$ ./writeit Chapter42.txt:wrote 15 bytes Chapter42.txt:Please Note Chapter42.txt:You may be asking, why didn’t we just write a script to do such an operation, rather than to write and compile an executable program? Chapter42.txt:Under Linux, if you change the setuid bit on such an executable script, it won’t do anything unless you actually change the setuid bit on the shell (such as bash) which would be a big mistake; anything running from then on would have escalated privilege! Chapter42.txt:知識チェック Chapter42.txt:「第42章 - ローカル システムのセキュリティ」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter42.txt:クイズ開始 Chapter42.txt:問題 42.1 Chapter42.txt:ユーザー アカウントにパスワードを使用することは一般的であり、セキュリティとプライバシーの基本的なツールです。ただし、システムのセキュリティを大幅に向上させるために設定できる2つの追加パスワードがあります。USBディスクなどの外部デバイスからオペレーティング システムを読み込まないように設定できる、2つの追加パスワードはどれですか。当てはまるものをすべて選択してください。 Chapter42.txt:A. /ディレクトリをLUKSで暗号化します。 Chapter42.txt:B. LUKSを使用して/bootディレクトリを暗号化します。 Chapter42.txt:C. BIOSパスワードを設定します。 Chapter42.txt:D. ブートローダーのパスワードを設定します。 Chapter43.txt:トラブルシューティングの基本 Chapter43.txt:はじめに Chapter43.txt:第43章はじめに Chapter43.txt:このビデオでは、この章で説明するトピックの概要を簡単に説明します。 Chapter43.txt:学習目標 Chapter43.txt:この章の終わりまでに、次のことができるようになります。 Chapter43.txt:解決策が見つかるまで、いくつかの手順を繰り返して、システムのトラブルシューティングを行うことができます。 Chapter43.txt:起こりうる問題に対して、ネットワークとファイルの整合性を確認できます。 Chapter43.txt:システムのブートに失敗した場合の問題を解決できます。 Chapter43.txt:破損したファイルシステムの修復とリカバリができます。 Chapter43.txt:トラブルシューティングにレスキュー メディアとリカバリ メディアを使用する方法を体得できます。 Chapter43.txt:トラブルシューティングの基本 Chapter43.txt:トラブルシューティングのレベル Chapter43.txt:各ボックスをクリックして展開し、3つのトラブルシューティングのレベルについて学習します。 Chapter43.txt:トラブルシューティングのレベル Chapter43.txt:初心者 Chapter43.txt:このレベルのスキルは非常に迅速に学ぶことができます。 Chapter43.txt:経験豊富な人 Chapter43.txt:このレベルのスキルに達するには数年の経験が必要です。 Chapter43.txt:ウィザード(達人) Chapter43.txt:このレベルのスキルは生まれ持った才能と考える人もいますが、それはナンセンスです。すべてのスキルを学んで身に付けることができます。あらゆる組織に、このレベルの専門スキルを持つ頼りになる人物が、少なくとも1人は必要です。 Chapter43.txt:最高の管理システムがあっても問題は発生します。トラブルシューティングでは、問題がソフトウェアまたはハードウェアに起因するのか、システム ローカルなのか、ローカル ネットワークまたはインターネット内から発生するのかを特定します。 Chapter43.txt:トラブルシューティングを適切に行うには判断と経験が必要です。適切な手順に従うことで、再現可能な方法で問題の原因を特定することができます。 Chapter43.txt:基本的なトラブルシューティング テクニック Chapter43.txt:トラブルシューティングには、解決策が見つかるまで反復的に繰り返す必要がある、いくつかの手順があります。基本的な対処法は次のとおりです。 Chapter43.txt:問題の特徴を明らかにします。 Chapter43.txt:問題を再現します。 Chapter43.txt:常に簡単なことを最初に試してください。 Chapter43.txt:考えられる原因を1つずつ排除していきます。 Chapter43.txt:一度に1つだけ変更します。それでも問題が解決しない場合は、元に戻します。 Chapter43.txt:詳細な情報を得るために、システム ログ(/var/log/messages、/var/log/secureなど)を確認します。 Chapter43.txt:決定の方針とその方法は非常に確立された手順に従うことが要求されます。直感に基づいて結論に飛びつくことはお勧めできません。チェックリストと統一された手順を使用する理由は、ウィザードへの依存を回避し、システム管理者が既知の手順に従っている場合に、最終的に問題を解決できるようにするためです。そうでなければ、ウィザードが組織を離れた場合、難しい問題を解決するのに十分なスキルを持つ人は誰もいなくなります。 Chapter43.txt:一方、直感を信じて確認することを選択する場合は、直感的な方法を続けるかどうかを、その方法の生産性を基準に決定するために、十分な速さでデータを取得できるかを確認する必要があります。 Chapter43.txt:直感を無視すると問題の解決に時間がかかる場合があります。トラブルシューティングの今までの実績が、この方法でリソースを投資するかどうかを評価できる重要なベンチマークであると言えます。つまり、有用な直感とは魔法ではなく、積み重ねた経験と言えます。 Chapter43.txt:確認すること:ネットワーク Chapter43.txt:各ボックスをクリックして展開し、ネットワークに問題がある場合に確認する必要がある項目について学習します。 Chapter43.txt:ネットワークに問題がある場合の確認事項 Chapter43.txt:IP構成 Chapter43.txt:ifconfigまたはipを使用して、インターフェイスが稼働しているかどうか、稼働している場合は正しく設定されているかどうかを確認します。 Chapter43.txt:ネットワーク ドライバ Chapter43.txt:インターフェイスを起動できない場合は、ネットワーク カードの正しいデバイス ドライバがロードされていない可能性があります。ネットワーク ドライバがカーネル モジュールとしてロードされているかをlsmodで確認します。もしくは、/proc/interruptsや/sys/class/netなどの/procと/sys内の関連する疑似ファイルを調べて確認します。 Chapter43.txt:接続性 Chapter43.txt:pingを使用してネットワークが表示されているかどうかを確認し、応答時間とパケット損失を確認します。tracerouteはネットワークを介してパケットを追跡できますが、mtrを使えばこれを継続的に実行できます。これらのユーティリティを使用すると、問題がローカルにあるのかインターネットにあるのかがわかります。 Chapter43.txt:デフォルト ゲートウェイとルーティング構成 Chapter43.txt:route -nを実行して、ルーティング テーブルが有用なものかどうかを確認します。 Chapter43.txt:ホスト名解決 Chapter43.txt:URLに対してdigまたはhostを実行し、DNSが正しく機能しているかどうかを確認します。 Chapter43.txt:ネットワークの問題は、ソフトウェアまたはハードウェアのいずれかで発生する可能性があり、デバイス ドライバが読み込まれたり、ネットワーク ケーブルが接続されたりするのと同じくらい簡単に起こります。ネットワークが稼働しているけれどもパフォーマンスが悪い場合は、トラブルシューティングではなく、パフォーマンス チューニングの対象になります。問題がマシンの外にある場合や、バッファ サイズなどのさまざまなネットワーク パラメータの調整が必要な場合があります。 Chapter43.txt:確認すること:ファイルの整合性 Chapter43.txt:破損した構成ファイルとバイナリをチェックする方法はいくつかあります。このコースですでに説明したように、パッケージング システムには、ファイルの整合性を検証し、変更を確認する方法があります。RPMベースのシステムの場合: Chapter43.txt:$ rpm -V some_package Chapter43.txt:これで単一のパッケージをチェックし、 Chapter43.txt:$ rpm -Va Chapter43.txt:これでシステム上のすべてのパッケージをチェックします Chapter43.txt:Debianベースのシステムでは、次の方法で整合性をチェックできます 。 Chapter43.txt:$ debsums options some_package Chapter43.txt:これにより、そのパッケージ内のファイルのチェックサムがチェックされます。ただし、すべてのパッケージがチェックサムを保持しているわけではないため、これが完全に役立つとは限りません。最近のバージョンのdpkgでは、-Vまたは--verifyオプションを利用することもできます。 Chapter43.txt:侵入検知を行い、ファイルの変更をチェックする別の方法としてaideがあります。 Chapter43.txt:$ sudo aide --check Chapter43.txt:これはファイルのスキャンを実行し、最後のスキャンと比較します。もちろんaideデータベースを初期化した後、それを保持しておく必要があります。 Chapter43.txt:ブート プロセスの失敗 Chapter43.txt:システムが適切に、または完全に起動しない場合、問題の原因を特定するには、各段階で何が起きているかを理解することが重要です。 Chapter43.txt:各ボックスをクリックして展開し、BIOSステージを通過したと想定して、発生する可能性のある障害状態について学習します。 Chapter43.txt:ブート プロセスの失敗 Chapter43.txt:ブートローダーの画面がでない Chapter43.txt:GRUBの構成ミス、または破損したブート セクタを確認します。ブートローダーを再インストールする必要があるかもしれません。 Chapter43.txt:カーネルのロードに失敗 Chapter43.txt:ブート プロセス中にカーネル パニックが発生する場合、おそらく、カーネルの構成ミスまたは破損、あるいはカーネル コマンド ラインで指定されたGRUB構成ファイルの誤ったパラメータが原因です。カーネルが過去に正常に起動していた場合は、カーネルが破損しているか、GRUB構成ファイルのカーネル コマンド ラインが破滅的な方法で改ざんされています。どちらかであるかに応じて、カーネルを再インストールするか、ブート時にインタラクティブなGRUBメニューに入り、最小限のコマンド ライン パラメータを使用するかして、修正することができます。または、次の章で説明するように、レスキュー イメージで起動することもできます。 Chapter43.txt:カーネルはロードできるが、ルート ファイルシステムのマウントに失敗する Chapter43.txt:主な原因は次のとおりです。 Chapter43.txt:1.誤って構成されたGRUB構成ファイル Chapter43.txt:2.誤って構成された/etc/fstab Chapter43.txt:3.カーネルに組み込まれた、もしくはinitramfs初期RAMディスクやファイルシステムにモジュールとして組み込まれた、ルート ファイルシステムの種類がサポートされていない。 Chapter43.txt:initプロセス中の失敗 Chapter43.txt:initが開始されるとうまくいかないことがたくさんあります。停止する前に表示されるメッセージをよく見てください。別のカーネルで以前に問題がなかった場合、これは大きな手掛かりとなります。破損したファイルシステム、起動スクリプトのエラーなどに注意してください。3(グラフィックなし)や1(シングル ユーザー モード)などの低いランレベルでブートしてみてください。 Chapter43.txt:ファイルシステムの破損とリカバリ Chapter43.txt:ブート プロセス中に1つ以上のファイルシステムがマウントに失敗した場合、fsckを使用して修復を試みることができます。ただし、それを行う前に、/etc/fstabが誤って構成されていたり、破損していないことを確認する必要があります。繰り返しますが、実行中のカーネルが対応できないファイルシステムの種類がある場合は、それが問題である可能性があります。 Chapter43.txt:ルート ファイルシステムがマウントされている場合は、このファイルを調べることができます。ただし、/が読み取り専用としてマウントされている可能性があるため、ファイルを編集して修正するには、次のコマンドを実行します。 Chapter43.txt:$ sudo mount -o remount,rw / Chapter43.txt:これで書き込み可のパーミッションで再マウントできます。 Chapter43.txt:/etc/fstabが正しいと思われる場合は、fsckを実行します。まず、次を試してください。 Chapter43.txt:$ sudo mount -a Chapter43.txt:これは、すべてのファイルシステムをマウントしようとします。これが完全に成功しない場合は、問題があったものを手動でマウントしてみてください。最初に調査のためにfsckを実行すべきです。その後、見つかったエラーを修正して、再度実行します。 Chapter43.txt:仮想コンソールの使用 Chapter43.txt:デフォルトでは、Linux は12個の仮想コンソール(仮想端末とも呼ばれる)を定義していて、システムへのローカル アクセスを許可します。通常、最初の6つはログイン テキスト コンソールです。コンソール1は、ほとんどのディストリビューションでシステム コンソールとして使用されます。7番目(がある場合)は、グラフィカル コンソールです。ただし、一部のディストリビューション(RHELを含む)はコンソール1を使用します。 Chapter43.txt:Ctrl-Alt-FX(Xはコンソールの番号)を使用して、コンソール間を移動できます。たとえば、Ctrl-Alt-F5はコンソール6に移動します。 Chapter43.txt:知識チェック Chapter43.txt:「第43章 - トラブルシューティングの基本」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter43.txt:クイズ開始 Chapter43.txt:問題 43.1 Chapter43.txt:速度の低下などの一部のネットワーク問題は、適切に機能しているネットワークで使用できるパラメータがないと、検出が困難です。このようなパラメータの例として、www.google.comの応答時間があります。True or False? Chapter43.txt:A. True Chapter43.txt:B. False Chapter43.txt:問題 43.2 Chapter43.txt:ifconfigを使用して、ゲートウェイ構成を表示できます。True or False? Chapter43.txt:A. True Chapter43.txt:B. False Chapter43.txt:問題 43.3 Chapter43.txt:lsmodは、ネットワークの問題のトラブルシューティングに使用できます。True or False? Chapter43.txt:A. True Chapter43.txt:B. False Chapter43.txt:問題 43.4 Chapter43.txt:BIOSおよびブートローダーのパスワードが設定されているが不明な場合、ブートのトラブルシューティングは、不可能ではないにしても非常に困難になる可能性があります。True or False? Chapter43.txt:A. True Chapter43.txt:B. False Chapter43.txt:問題 43.5 Chapter43.txt:間違ったBIOS設定はブートでは問題を引き起こしません。True or False? Chapter43.txt:A. True Chapter43.txt:B. False Chapter43.txt:問題 43.6 Chapter43.txt:/etc/fstabでのエラーは警告メッセージを作成するだけであり、ブート プロセスは通常どおり続行されます。True or False? Chapter43.txt:A. True Chapter43.txt:B. False Chapter44.txt:システムの救出(レスキュー) Chapter44.txt:はじめに Chapter44.txt:第44章はじめに Chapter44.txt:遅かれ早かれ、システムは、適切なブートでも、ファイルシステムのマウントでも、デスクトップ表示の開始などでも、失敗するような重大な障害に遭遇する可能性があります。光ディスクまたはポータブルUSBドライブ形式のシステム レスキュー メディアを使用して、状態を修正できます。緊急モードまたはシングル ユーザー モードでブートすると、一連のLinuxツールを使用して、システムを通常の機能に修復できます。 Chapter44.txt:学習目標 Chapter44.txt:この章の終わりまでに、次のことができるようになります。 Chapter44.txt:システム レスキュー メディアがどのような形式で提供され、それらをどのように利用可能にするか、または準備できるかを説明できます。 Chapter44.txt:緊急モードに入る方法とそこでできることを知ることができます。 Chapter44.txt:シングル ユーザー モードに入る方法、そこでできること、および緊急モードとの違いを理解できます。 Chapter44.txt:システムの救出(レスキュー) Chapter44.txt:レスキュー メディアとトラブルシューティング Chapter44.txt:レスキュー ディスクとリカバリ ディスク、およびその他のメディアについては、次のセッションで説明します。ここでは、トラブルシューティングについて説明します。これらのメディアには、問題のあるシステムを評価(および修正)するための貴重なツールが含まれています。 Chapter44.txt:何を選択するのが正しいかはLinuxディストリビューションによって異なりますが、インストールする場合、またはライブCD/DVDやUSBドライブから起動する場合、Rescue Installed Systemなどの名前のオプションを選択します。 Chapter44.txt:レスキュー ディスクには、多くの便利なプログラムが含まれています。 Chapter44.txt:パーティションの作成、RAIDデバイスの管理、論理ボリュームの管理、ファイルシステムの作成のためのディスク ユーティリティ。fdisk、mdadm、pvcreate、vgcreate、lvcreate、mkfsなど。 Chapter44.txt:ネットワークのデバッグとネットワーク接続のためのネットワーク ユーティリティ。ifconfig、route、traceroute、mtr、host、ftp、scp、ssh など。 Chapter44.txt:その他のユーティリティ Chapter44.txt:ログ ファイル。 Chapter44.txt:レスキュー/リカバリ イメージの使用 Chapter44.txt:レスキューのイメージは、開始時にいくつかの質問をしてきます。その1つは、(可能な場合)ファイルシステムをマウントするかどうかです。 Chapter44.txt:もしマウントする場合、どこかに、通常は/mnt/sysimageに、マウントします。そのディレクトリに移動してファイルにアクセスできます。もしくは次のコマンドでその環境に変更できます。 Chapter44.txt:$ sudo chroot /mnt/sysimage Chapter44.txt:ネットワーク ベースのレスキューの場合、/mnt/sourceをマウントするよう求められる場合もあります。 Chapter44.txt:ソフトウェア パッケージは、chrootした環境からインストールできます。また、chrootした環境の外部からインストールすることもできます。たとえば、rpmベースのシステムでは、-rootオプションを使用してルート ディレクトリの場所を指定します。 Chapter44.txt:$ sudo rpm -ivh --force --root=/mnt/sysimage /mnt/source/Packages/vsftpd-2*.rpm Chapter44.txt:システムのレスキューとリカバリ Chapter44.txt:システムは、適切なブート、ファイルシステムのマウント、そしてデスクトップ表示の開始などでも、どのみち失敗するような重大な障害に遭遇する可能性があります。光ディスクまたはポータブルUSBドライブ形式のシステム レスキュー メディアを使用して、状態を修正できます。緊急モードまたはシングル ユーザー モードでブートすると、一連のLinuxツールを使用して、システムを通常の機能に修復できます。 Chapter44.txt:緊急用ブート メディア Chapter44.txt:緊急用ブート メディアは、ファイルの欠落、構成の誤り、ファイルの破損、サービスの構成の誤りなどの問題が原因で、システムがブートしない場合に役立ちます。 Chapter44.txt:rootパスワードが、何らかの理由で失われたり変に改ざんされたりしてリセットする必要がある場合にも、レスキュー メディアが役立つことがあります。 Chapter44.txt:ほとんどのLinuxディストリビューションでは、インストール メディア(CD、DVD、USB)またはライブ メディア、あるいはその両方が、レスキュー ディスクとしての目的を果たすことができるため、二重の意味で非常に便利です。専用のレスキュー ディスクも利用できます。 Chapter44.txt:(任意の形式の)ライブ メディアは、ディスクからロードするのではなく、メモリ内で実行される完全で起動可能なオペレーティング システムを提供します。ユーザーは、実際にインストールしたり、コンピュータ上の既存のオペレーティング システムに変更を加えたりせずに、オペレーティング システムやLinuxディストリビューションを体験および評価できます。 Chapter44.txt:ライブ リムーバブル メディアは、ハードディスク ドライブなどのセカンダリ ストレージがないコンピュータ、または破損したハードディスク ドライブやファイルシステムがあるコンピュータでも実行できるという優れた点があり、ユーザーがデータをレスキューできるようにします。 Chapter44.txt:レスキュー メディアの使用 Chapter44.txt:ライブ、インストール、レスキュー メディアのいずれを使用しても、レスキューとリカバリのために特別なオペレーティング システムを開始する手順は同じであり、紹介したように、1つのメディアが3つの目的すべてを果たします。 Chapter44.txt:システムはリムーバブル メディアからブートすると、ブート メニューのオプションからレスキュー/リカバリ モードにアクセスできます。多くの場合、次のようにrescueを入力する必要があります。 Chapter44.txt:boot: Linux rescue Chapter44.txt:各ディストリビューションには多少の違いがありますが、手順を確認するのは簡単ですので、ここですべての手順を説明することはしません。 Chapter44.txt:次に、使用する言語などのいくつかの質問と、いくつかのディストリビューションに依存する選択があります。そして、正しいレスキュー イメージの場所を選択するように求められます。CD/DVD、ハード ドライブ、NFS、FTP、HTTPなど。 Chapter44.txt:選択した場所には正しいインストール ツリーが含まれている必要があり、インストール ツリーはレスキュー ディスクと同じLinuxバージョンのものである必要があります。リムーバブル メディアを使用している場合、インストール ツリーはメディアの作成元と同じものでなければなりません。 ベンダーからダウンロードしたboot.isoイメージを使用している場合は、ネットワーク ベースのインストール ツリーも必要です。 Chapter44.txt:ファイルシステムのマウントについても質問されます。それらが見つかると、/mnt/sysimageの下にマウントされます。その後、シェル プロンプトが表示され、システムに適切な修正を行うためのさまざまなユーティリティにアクセスできます。 Chapter44.txt:chrootは、ルート(/)ファイルシステムへのアクセスを改善するために使用できます。 Chapter44.txt:レスキュー用のUSBキー Chapter44.txt:多くのディストリビューションは、ダウンロード用のboot.isoイメージ ファイルを提供しています(名前は異なる場合があります)。次のようにddを使用して、これをUSBキー ドライブに置くことができます。 Chapter44.txt:$ dd if=boot.iso of=/dev/sdX Chapter44.txt:上記は、システムがリムーバブル ドライブを/dev/sdXとして認識すると仮定しています。ただし、これにより、USBキー ドライブ上の既存のコンテンツが消去されることに注意してください! Chapter44.txt:システムにUSBメディアから起動する機能があり、BIOSがそのように構成されている場合、このUSBドライブから起動できます。その後は、レスキューCDやDVDと同じように機能します。ただし、インストール ツリーはUSBドライブに存在しないことに注意してください。したがって、この方法では、必要に応じてネットワーク ベースのインストール ツリーが必要になります。 Chapter44.txt:livecd-toolsやliveusb-creatorなどの便利なユーティリティを使用すると、インストール イメージを取得する場所としてローカル ドライブまたはインターネットのいずれかを指定できます。起動可能なイメージを作成してリムーバブル ドライブに書き込むという面倒な作業をすべて実行することができます。これは非常に便利であり、実際、すべてのLinuxディストリビューションで機能します。 Chapter44.txt:緊急モード Chapter44.txt:緊急モードでは、最小限の環境でブートします。ルート ファイルシステムは読み取り専用でマウントされ、initスクリプトは実行されず、ほとんど何もセット アップされません。 Chapter44.txt:シングル ユーザー モード(次で説明します)よりも緊急モードが優れている主な点は、initが破損しているか機能していない場合でも、ファイルシステムをマウントして、再インストール中に失われたデータをリカバリできることです。 Chapter44.txt:緊急モードに入るには、GRUBブート メニューからエントリを選択し、eを押して編集する必要があります。そして、システムにブートするように指示する前に、emergencyという単語をカーネル コマンド ラインに追加します。シェル プロンプトを表示する前に、rootのパスワードの入力を求められます。 Chapter44.txt:💡 Chapter44.txt:また、ファイルシステムの破損など、さまざまな理由でブートが失敗した場合にも、緊急モードに入ることができます。 Chapter44.txt:シングル ユーザー モード Chapter44.txt:システムをブートした時に、ブートが完了してもログインできない場合は、シングル ユーザー モードを試してください。シングル ユーザー モードでは、 Chapter44.txt:initが開始されます。 Chapter44.txt:サービスは開始されていません。 Chapter44.txt:ネットワークはアクティブ化されていません。 Chapter44.txt:可能なすべてのファイルシステムはマウントされています。 Chapter44.txt:rootアクセスはパスワードなしで許可されます。 Chapter44.txt:システム メンテナンスのコマンド ライン シェルが起動します。 Chapter44.txt:このモードでは、システムはランレベル1(SysVinit言語の場合)で起動します。シングル ユーザー モードは自動的にファイルシステムをマウントしようとするため、ルート ファイルシステムを正常にマウントできない場合、またはinit構成が破損している場合は使用できません。 Chapter44.txt:シングル ユーザー モードで起動するには、1つの例外を除いて、緊急モードで説明したのと同じ方法を使用します。キーワードをemergencyからsingleに置き換えます。 Chapter44.txt:演習 Chapter44.txt:課題 44.1: レスキュー/リカバリ用のメディアの準備 Chapter44.txt:🚩 Chapter44.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter44.txt:【【これ以降は橋本さんの訳を参照】】 Chapter44.txt:Very Important Chapter44.txt:In the following exercises we are going to deliberately damage the system and then recover through the use of rescue media. Thus, it is obviously prudent to make sure you can indeed boot off the rescue media before you try anything more ambitious. Chapter44.txt:So first make sure you have rescue media, either a dedicated rescue/recovery image, or an install or Live image oneither an optical disk or usb drive. Chapter44.txt:Boot off it and make sure you know how to force the system to boot off the rescue media (you are likely to have to fiddle with the BIOS settings), and when the system boots, choose rescue mode. Chapter44.txt:Please Note Chapter44.txt:If you are using a virtual machine, the procedure is logically the same with two differences: Chapter44.txt:• Getting to the BIOS might be difficult depending on the hypervisor you use. Some of them require very rapid keystrokes, so read the documentation and make sure you know how to do it. Chapter44.txt:• You can use a physical optical disk or drive, making sure the virtual machine settings have it mounted, and if it is USB you may have some other hurdles to make sure the virtual machine can claim the physical device. It is usually easier to simply connect a.iso image file directly to the virtual machine. Chapter44.txt:If you are working with a virtual machine, obviously things are less dangerous, and if you are afraid of corrupting the system in an unfixable way, simply make a backup copy of the virtual machine image before you do these exercises, you can always replace the image with it later. Chapter44.txt:Very Important Chapter44.txt:Do not do the following exercises unless you are sure you can boot your system off rescue/recovery media! Chapter44.txt:課題 44.2: 破壊されたGRUB設定を復旧する Chapter44.txt:🚩 Chapter44.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter44.txt:Exercise 44.2: Recovering from a Corrupted GRUB Configuration Chapter44.txt:1. Edit your GRUB configuration file (/boot/grub/grub.cfg,/boot/grub2/grub.cfgor/boot/grub/grub.conf), and modify the kernel line by removing the first character of the value in the field named UUID. Take note of which character you removed, you will replace it in rescue mode. (If your root filesystem is identified by either label or hard disk device node, make an analogous simple change.) Keep a backup copy of the original. Chapter44.txt:On a BLSCFG System Chapter44.txt:You can corrupt the command line by editing /etc/grub2/grubenv instead. Chapter44.txt:2. Reboot the machine. The system will fail to boot, saying something like No root device was found. You will also see that a panic occurred. Chapter44.txt:3. Insert into your machine the installation or Live DVD or CD or USB drive (or network boot media) if you have access to a functioning installation server). Reboot again. When the boot menu appears, choose to enter rescue mode. Chapter44.txt:4. As an alternative, you can try selecting a rescue image from the GRUB menu; most distributions offer this. You’ll get the same experience as using rescue media, but it will not always work. For example, if the root filesystem is damaged it will be impossible to do anything. Chapter44.txt:5. In rescue mode, agree when asked to search for filesystems. If prompted, open a shell, and explore the rescue system by running utilities such as mount and ps. Chapter44.txt:6. Repair your broken system by fixing your GRUB configuration file, either by editing it or restoring from a backup copy. Chapter44.txt:7. Typeexitto return to the installer, remove the boot media, and follow the instructions on how to reboot. Reboot your machine. It should come up normally. Chapter44.txt:課題 44.3: パスワード失敗からの復旧 Chapter44.txt:🚩 Chapter44.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter44.txt:Exercise 44.3: Recovering from Password Failure Chapter44.txt:1. As root (not withsudo), change the root password. We will pretend we don’t know what the new password is. Chapter44.txt:2. Log out and try to login again as root using the old password. Obviously you will fail. Chapter44.txt:3. Boot using the rescue media, and selectRescuewhen given the option. Let it mount filesystems and then go to a command line shell. Chapter44.txt:4. Go into yourchroot-ed environment (so you have normal access to your systems): Chapter44.txt:$ chroot /mnt/sysimage Chapter44.txt:and reset the root password back to its original value. Chapter44.txt:5. Exit, remove the rescue media, and reboot, you should be able to login normally now. Chapter44.txt:課題 44.4: パーティション テーブルの破壊から復旧する Chapter44.txt:🚩 Chapter44.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter44.txt:Exercise 44.4: Recovering from Partition Table Corruption Chapter44.txt:Very Important Chapter44.txt:This exercise is dangerous and could leave to an unusable system. Make sure you really understand things before doing it Chapter44.txt:Please Note Chapter44.txt:The following instructions for an MBR system. if you have GPT you need to use sgdisk with the --backup-file and --load-backup options as discussed in the partitioning chapter Chapter44.txt:1. Login as root and save yourMBR: Chapter44.txt:$ dd if=/dev/sda of=/root/mbrsave bs=446 count=1 Chapter44.txt:1+0 records in Chapter44.txt:1+0 records out Chapter44.txt:446 bytes (446 B) copied, 0.00976759 s, 45.7 kB/s Chapter44.txt:Be careful: make sure you issue the exact command above and that the file saved has the right length: Chapter44.txt:$ sudo ls -l /root/mbrsave Chapter44.txt:-rw-r--r-- 1 root root 446 Nov 12 07:54 mbrsave Chapter44.txt:2. Now we are going to obliterate the MBR with: Chapter44.txt:$ dd if=/dev/zero of=/dev/sda bs=446 count=1 Chapter44.txt:1+0 records in Chapter44.txt:1+0 records out Chapter44.txt:446 bytes (446 B) copied, 0.000124091 s, 3.6 MB/s Chapter44.txt:3. Reboot the system; it should fail. Chapter44.txt:4. Reboot into the rescue environment and restore the MBR: Chapter44.txt:$ dd if=/mnt/sysimage/root/mbrsave of=/dev/sda bs=446 count=1 Chapter44.txt:5. Exit from the rescue environment and reboot. The system should boot properly now. Chapter44.txt:課題 44.5: インストール イメージを利用した復旧 Chapter44.txt:🚩 Chapter44.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter44.txt:Exercise 44.5: Recovering Using the Install Image Chapter44.txt:Please Note Chapter44.txt:This exercise has been specifically written for Red Hat-based systems. You should be able to easily construct the appropriate substitutions for other distribution families. Chapter44.txt:1. Remove the zsh package (if it is installed!): Chapter44.txt:$ yum remove zsh Chapter44.txt:または Chapter44.txt:$ rpm -e zsh Chapter44.txt:Note we have chosen a package that generally has no dependencies to simplify matters. If you choose something that does, you will have to watch your step in the below so that anything else you remove you reinstall as needed as well. Chapter44.txt:2. Boot into the rescue environment. Chapter44.txt:3. Re-install (or install) zsh from within the rescue environment. First, mount the install media at /mnt/source: Chapter44.txt:$ mount /dev/cdrom /mnt/source Chapter44.txt:Then reinstall the package: Chapter44.txt:$ rpm -ivh --force --root /mnt/sysimage /mnt/source/Packages/zsh*.rpm Chapter44.txt:The --force option tells rpm to use the source directory in determining dependency information etc. Note that if the install image is much older than your system which has had many updates the whole procedure might collapse! Chapter44.txt:4. Exit and reboot. Chapter44.txt:5. Check thatzshhas been reinstalled: Chapter44.txt:$ rpm -q zsh Chapter44.txt:zsh-5.0.2-7.el7.x86_64 Chapter44.txt:6.$ zsh Chapter44.txt:.... Chapter44.txt:[coop@q7]/tmp/LFS201% Chapter44.txt:知識チェック Chapter44.txt:クイズ メッセージ: Chapter44.txt:「第44章 - システムの救出(レスキュー)」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter44.txt:クイズ開始 Chapter44.txt:問題 44.1 Chapter44.txt:ライブ イメージを使用してシステムをレスキューすることはできません。True or False? Chapter44.txt:A. True Chapter44.txt:B. False Chapter44.txt:問題 44.2 Chapter44.txt:chrootの目的は、システムをリカバリするために、Linuxでmountやupdate-grubなどのコマンドを実行することです。True or False? Chapter44.txt:A. True Chapter44.txt:B. False Chapter44.txt:問題 44.3 Chapter44.txt:ブートローダーが誤って削除されたシステムの場合、ネットワークのみを使用してレスキュー モードでブートすることはできません。True or False? Chapter44.txt:A. True Chapter44.txt:B. False Chapter45.txt:コース修了にあたって Chapter45.txt:フィードバック Chapter45.txt:コースのフィードバックのお願い Chapter45.txt:このコースを受講いただき、ありがとうございます。 Chapter45.txt:私たちはあなたからフィードバックをいただきたいと思っています。 Chapter45.txt:皆さんから寄せられたご意見はすべて真剣に読ませていただき、コースの改善に役立たせたいと思います。 Chapter45.txt:ではアンケートにお答えください。 Chapter45.txt:コース修了にあたって Chapter45.txt:コースの終了 Chapter45.txt:******** Chapter45.txt:Complete the Courseをクリックすると出るページ Chapter45.txt:******** Chapter45.txt:コースを修了していただきありがとうございます。 Chapter45.txt:コースに戻る Chapter45.txt:5秒後に自動的にリダイレクトされます。そうでない場合は、「コースに戻る」をクリックしてください。 Chapter45.txt:Essentials of Linux System Administration(LFS201)をマスターしたと思いますか? Chapter45.txt:クリックしてコースを完了します。 Chapter45.txt:******** Chapter45.txt:上記にはクイズもあったと思うのですが、コース終了ボタンをクリックしてしまったせいか、今は見えていません。 Chapter45.txt:以下はLF201-JPにあったページです。念のため訳します。 Chapter45.txt:******** Chapter45.txt:👏 Chapter45.txt:おめでとうございます! このコースの最後まで来ました! コースを終了するために、最後の質問が1つあります。 Chapter45.txt:残り3回です。【【ここの意味が解りませんでした。ただ、アクセスすると回数が減っていきます。回答チャンスが限定されているのかもしれません。】】 Chapter45.txt:合格には正解率 100 %が必要です。 Chapter45.txt:クイズ開始 Chapter45.txt:最後の問題 Chapter45.txt:Essentials of Linux System Administration(LFS201)コースの内容をマスターしたと思いますか? Chapter45.txt:A. Yes Chapter5.txt:パッケージ管理システム Chapter5.txt:はじめに Chapter5.txt:第5章はじめに Chapter5.txt:このビデオでは、この章で説明するコンテンツの簡単な概要を示します。 Chapter5.txt:学習目標 Chapter5.txt:この章の終わりまでに、次のことができるようになります。 Chapter5.txt:ソフトウェア パッケージ管理システムが必要な理由を説明できます。 Chapter5.txt:バイナリ パッケージとソース パッケージの両方の機能を理解できます。 Chapter5.txt:主な利用可能なパッケージ管理システムを列挙できます。 Chapter5.txt:2つのレベルのユーティリティが必要な理由を理解できます。それは、最小限のパッケージだけを扱うレベルと、パッケージ間の依存関係を扱うレベルです。 Chapter5.txt:ソフトウェアの内容とインストール方法を正確に制御でき、独自のパッケージをどのように作成するかを説明できます。 Chapter5.txt:ソース管理システム、特にgitの役割を理解できます。 Chapter5.txt:パッケージ管理システム Chapter5.txt:ソフトウェア パッケージの概念 Chapter5.txt:パッケージ管理システムは、システム管理者がソフトウェア パッケージのインストール、アップグレード、構成、および削除を、既知で汎用的な方法で自動化できるツールを提供します。それらのパッケージ管理システムは以下を行います。 Chapter5.txt:関連するソフトウェア ファイルを1つのパッケージ(アーカイブ)に収集して圧縮します。これには、1つ以上の他のパッケージを最初にインストールする必要がある場合があります。 Chapter5.txt:簡単なソフトウェアのインストールまたは削除を許可します。 Chapter5.txt:内部データベースを介してファイルの整合性を検証できます。 Chapter5.txt:パッケージの出所を証明できます。 Chapter5.txt:アップグレードが楽にできます。 Chapter5.txt:論理的な特徴でパッケージをグループ化します。 Chapter5.txt:パッケージ間の依存関係を管理します。 Chapter5.txt:特定のパッケージには、実行可能ファイル、データ ファイル、ドキュメント、インストール スクリプト、および構成ファイルが含まれる場合があります。また、バージョン番号、チェックサム、ベンダー情報、依存関係、説明などのメタデータ属性も含まれます。 Chapter5.txt:すべての情報は、インストール時に内部データベースにローカルに保存されます。これにより、バージョンと更新情報が簡単に照会できます。 Chapter5.txt:なぜパッケージを使用するのか? Chapter5.txt:ソフトウェア パッケージ管理システムは、LinuxがエンタープライズIT環境にもたらした最大の進歩の1つだと言われています。システム管理者は、自動化された汎用的で信頼性の高い方法でファイルとメタ データの記録を把握することにより、パッケージ管理システムを使用して、個々のシステムを手動で操作することなく数千のシステムにインストール プロセスを拡張できます。含まれる機能は以下のとおりです。 Chapter5.txt:自動化:手動でのインストールやアップグレードを行う必要はありません。 Chapter5.txt:スケーラビリティ:1~10,000システムにパッケージをインストールします。 Chapter5.txt:再現性と予測可能性。 Chapter5.txt:セキュリティと監査。 Chapter5.txt:パッケージの種類 Chapter5.txt:パッケージにはいくつかの種類があります。 Chapter5.txt:クリックして各ボックスを展開し、利用可能なさまざまなパッケージの種類について学習します。 Chapter5.txt:パッケージの種類 Chapter5.txt:バイナリ パッケージ Chapter5.txt:バイナリ パッケージには、実行可能ファイルやライブラリなど、デプロイの準備ができているファイルが含まれています。これらはアーキテクチャに依存しており、マシンの種類ごとにコンパイルされている必要があります。 Chapter5.txt:ソース パッケージ Chapter5.txt:ソース パッケージは、バイナリ パッケージの生成に使用されます。(たとえば、RPMベースのシステムでのrpmbuild --rebuild使用など)ソース パッケージからバイナリ パッケージを常に再構築できる必要があります。1つのソース パッケージを複数のアーキテクチャに使用できます。 Chapter5.txt:バイナリ パッケージは、大抵の場合、システム管理者が対処する必要があるパッケージです。 Chapter5.txt:32ビット プログラムを実行できる64ビット システムでは、特定のプログラムに対して2つのバイナリ パッケージがインストールされている可能性があります。片方の名前にはx86_64またはamd64が、もう片方の名前にはi386またはi686が含まれます。 Chapter5.txt:ソース パッケージは、バイナリ パッケージの作成に使用されたソース コードと変更の追跡に役立ちます。通常、デフォルトではシステムにインストールされませんが、ベンダーからいつでも取得できます。 Chapter5.txt:ソース パッケージからバイナリ パッケージを再構築することは、常に可能でなければなりません。たとえば、RPMベースのシステムでは、以下を実行してp7zipバイナリ パッケージを再構築できます。 Chapter5.txt:# rpmbuild --rebuild -rb p7zip-16.02-16.el8.src.rpm Chapter5.txt:結果は/root/rpmbuildに置かれます。 Chapter5.txt:# root/rpmbuild>find . -name "*rpm" Chapter5.txt:./RPMS/x86_64/p7zip-plugins-16.02-16.el8.x86_64.rpm Chapter5.txt:./RPMS/x86_64/p7zip-debugsource-16.02-16.el8.x86_64.rpm Chapter5.txt:./RPMS/x86_64/p7zip-plugins-debuginfo-16.02-16.el8.x86_64.rpm Chapter5.txt:./RPMS/x86_64/p7zip-16.02-16.el8.x86_64.rpm Chapter5.txt:./RPMS/noarch/p7zip-doc-16.02-16.el8.noarch.rpm Chapter5.txt:結果が置かれる場所はLinuxディストリビューションとバージョンに依存しています。 Chapter5.txt:利用可能なパッケージ管理システム Chapter5.txt:2つの非常に一般的なパッケージ管理システムがあります。クリックして各カードを反転し、詳細をご覧ください。 Chapter5.txt:RPM(Red Hat Package Manager) Chapter5.txt:このシステムは、Red Hat Enterprise Linux、CentOS、Scientific Linux、CentOSなどのRed Hatから派生したすべてのディストリビューション、およびSUSEとその関連コミュニティopenSUSEのディストリビューションで使用されています。 Chapter5.txt:dpkg (Debian Package) Chapter5.txt:このシステムは、Debian、Ubuntu、Linux MintなどDebianから派生したすべてのディストリビューションで使用されています。 Chapter5.txt:他にも、Gentooが使用するportage/emerge、Archが使用するpacman、および組み込みLinuxシステムとAndroidが使用する特殊なパッケージ管理システムなどがあります。 Chapter5.txt:もう1つの古いシステムとして、実際の管理や削除の戦略なしにパッケージをtarballとして提供する方法があります。このアプローチは、最も古いLinuxディストリビューションの1つであるSlackwareでまだ使われています。 Chapter5.txt:しかし、ほとんどの場合はRPMまたはdpkgのいずれかを使いますので、このコースではこれらを学んでいきます。 Chapter5.txt:パッケージング ツールのレベルと種類 Chapter5.txt:クリックして各ボックスを展開し、2つのレベルのパッケージング システムについて学習します。 Chapter5.txt:パッケージ ツールのレベル Chapter5.txt:低レベルのユーティリティ Chapter5.txt:これは、単一のパッケージまたはパッケージのリストをインストールするか削除するだけのものであり、各パッケージには個別に具体的な名前が付けられています。依存関係は完全には処理されず、次の警告のみが行われます。 Chapter5.txt:別のパッケージをインストールする必要がある場合、最初のインストールは失敗します。 Chapter5.txt:パッケージが別のパッケージで必要である場合、削除は失敗します。 Chapter5.txt:rpmとdpkgユーティリティは、それらを使用するパッケージング システムに対してこの役割を果たします。 Chapter5.txt:高レベルのユーティリティ Chapter5.txt:これは依存関係の問題を解決します。 Chapter5.txt:ソフトウェアをインストールする前に別のパッケージまたはパッケージのグループをインストールする必要がある場合、その依存関係を処理します。 Chapter5.txt:インストールされている別のパッケージがパッケージの削除を妨げる場合、管理者は影響を受けるソフトウェアをすべて中止するか削除するかを選択できます。 Chapter5.txt:yum、dnf、zypper、PackageKitユーティリティはrpmシステムの依存関係を解決し、apt、apt-cacheおよびその他のユーティリティはdpkgシステムの依存関係を解決します。 Chapter5.txt:このコースでは、パッケージング システムでのコマンド ライン インターフェイスについてのみ説明します。各Linux ディストリビューションで使用されるグラフィカルなフロントエンドは便利ですが、ここではどのインターフェイスにも縛られず、柔軟性を高めたいと考えています。 Chapter5.txt:パッケージ ソース Chapter5.txt:すべてのディストリビューションには、システム ユーティリティがソフトウェアを取得し新しいバージョンに更新するための、1つ以上のパッケージ リポジトリがあります。ディストリビューションの仕事は、リポジトリ内のすべてのパッケージが相互に適切に動作することを確認することです。 Chapter5.txt:また、外部リポジトリはいつでも、ディストリビューションの標準サポート リストに追加することができます。これらはディストリビューションと密接に関連していることもあり、追加しても重要な問題が発生することはほとんどありません。例として、バージョン依存のリポジトリEPEL(Extra Packages for Enterprise Linux)セットがあります。このソースはFedoraでありメンテナ達もRed Hatと親密なため、RHELに適合するように作られています。 Chapter5.txt:ただし、一部の外部リポジトリには、あまり構築も保守もされていないものがあります。たとえば、メイン リポジトリでパッケージが更新されても、外部パッケージの依存パッケージが更新されない可能性があります。 Chapter5.txt:ソフトウェア パッケージの作成 Chapter5.txt:独自のカスタム ソフトウェア パッケージを構築すると、独自のソフトウェアを簡単に配布およびインストールできます。Linuxのほとんどすべてのバージョンに、これを行うためのメカニズムがあります。 Chapter5.txt:独自のパッケージを作成すると、ソフトウェアの内容とインストール方法を正確に制御できます。パッケージを作成できれば、新しいソフトウェアのインストールや古いソフトウェアの削除に必要な全タスクを行うスクリプトを実行できます。例えば以下です。 Chapter5.txt:必要なシンボリックリンクの作成 Chapter5.txt:必要に応じたディレクトリの作成 Chapter5.txt:パーミッション設定 Chapter5.txt:スクリプト化できるものすべて Chapter5.txt:.rpmまたは.debパッケージを構築する方法についてはここでは説明しません。これは、管理者ではなく開発者に必要な知識だからです。 Chapter5.txt:リビジョン管理システム Chapter5.txt:ソフトウェア プロジェクトでは、プロジェクト サイズが大きくなったり貢献する開発者の数が増えたりするにつれ、管理がより複雑になります。 Chapter5.txt:更新を整理し連携を促進するために、ソース管理にはさまざまなスキームが利用できます。このようなプログラムの標準機能には、変更の正確な履歴やログの保持、以前のリリースへのバックアップ、複数の開発者からの競合する可能性のある更新の調整などが含まれます。 Chapter5.txt:ソース管理システム(または一般的に呼ばれているリビジョン管理システム)は、共同開発を調整する役割を果たします。 Chapter5.txt:プロプライエタリとオープンの両方で利用可能な製品に、不自由することはありません。GPLライセンスの下でリリースされた製品の要約リストには以下が含まれています。 Chapter5.txt:Revision Control System (RCS) Chapter5.txt:Concurrent Versions System (CVS) Chapter5.txt:Apache Subversion Chapter5.txt:git Chapter5.txt:GNU Arch Chapter5.txt:Monotone Chapter5.txt:Mercurial. Chapter5.txt:ここでは、Linuxカーネル開発コミュニティから生まれ、広く使用されている製品であるgitのみに焦点を当てます。gitはオープンソース プロジェクトで、非常に短期間に使用が広がり、クローズド ソース環境でもよく使用されています。 Chapter5.txt:Linuxカーネルとgitの誕生 Chapter5.txt:Linuxカーネル開発システムには、文字どおり何千人もの開発者が関与し、世界中に広く配布されるという点で特別なニーズがあります。さらに、それはすべてGPLライセンスの下で公開されています。 Chapter5.txt:Linuxには長い間、実質的なソース リビジョン管理システムはありませんでした。そこで、主要なカーネル開発者は、使用制限付きライセンスを付与した商用プロジェクトのBitKeeperをLinuxカーネル開発に使用しました。 Chapter5.txt:しかし、2005年春のライセンス制限に関する公開論争の結果、Linuxカーネルの開発にBitKeeperを無料で使用できなくなりました。 Chapter5.txt:そこで求められたのがgitの開発です。開発者はLinus Torvaldsでした。gitのソースコードは/pub/software/scm/gitのインデックスから入手でき、完全なドキュメントもオンラインで入手できます。 Chapter5.txt:gitの仕組み Chapter5.txt:技術的にみて、gitは普通の意味でのソース管理システムではなく、動作する基本単位はファイルではありません。オブジェクト データベースとディレクトリ キャッシュという、2つの重要なデータ構造を持っています。 Chapter5.txt:オブジェクト データベースには、3種類のオブジェクトが含まれています。 Chapter5.txt:blob(ブロブ):ファイルの内容を含むバイナリ データのかたまり。 Chapter5.txt:tree(ツリー):ファイル名と属性を含むブロブの集合。ディレクトリ構造を提供。 Chapter5.txt:commit(コミット):ツリーのスナップショットを記述するチェンジセット。 Chapter5.txt:ディレクトリ キャッシュは、ディレクトリ ツリーの状態をファイルに保存します。 Chapter5.txt:ファイルをベースにしたシステムから管理システムを解放することにより、多くのファイルを含むチェンジセットを適切に処理できるようになりました。 Chapter5.txt:gitは早いペースで開発されており、gitのグラフィカル インターフェイスも迅速に構築されています。たとえば、gitリポジトリのウェブ ページを参照してください。特定の変更とソースのツリーを簡単に参照できます。GitHubは現在、文字どおり何百万ものgitリポジトリを、公開/非公開にかかわらずホストしています。gitを有効に使用する方法に関しては、見やすい記事、書籍、オンライン チュートリアルなどが多数あります。 Chapter5.txt:デモ:パッケージ管理システム Chapter5.txt:このビデオでは、パッケージ管理システムの簡単な概要を説明しています。 Chapter5.txt:演習 Chapter5.txt:課題 5.1: git によるバージョン コントロール Chapter5.txt:🚩 Chapter5.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter5.txt:Exercise 5.1: Version Control with git Chapter5.txt:Making sure git is installed Chapter5.txt:Your system may already have git installed. Doingwhich gitshould show you if it is already present. If not, whileyou may obtain the source and compile and install it, it is usually easier to install the appropriate pre-compiled binary packages. Exact package names may vary, but one of the following should work depending on your distribution: Chapter5.txt:$ sudo yum install git* # RHEL 7 / CentOS 7 Chapter5.txt:$ sudo apt install git* # Debian /Ubuntu Chapter5.txt:$ sudo zypper install git* # openSUSE Chapter5.txt:$ sudo dnf install git* # Fedora / RHEL 8 / CentOS 8 Chapter5.txt:according to your particular distribution. Chapter5.txt:Let’s get a feel for howgit worksand how easy it easy to use. For now we will just make our own local project. Chapter5.txt:1. First we create a working directory and then initializegitto work with it: Chapter5.txt:$ mkdir git-test Chapter5.txt:$ cd git-test Chapter5.txt:$ git init Chapter5.txt:2. Initializing the project creates a .git directory which will contain all the version control information; the main directoriesincluded in the project remain untouched. The initial contents of this directory look like: Chapter5.txt:$ ls -l .git Chapter5.txt:total 40 Chapter5.txt:drwxrwxr-x 2 coop coop 4096 Dec 30 13:59 branches/ Chapter5.txt:-rw-rw-r-- 1 coop coop 92 Dec 30 13:59 config Chapter5.txt:-rw-rw-r-- 1 coop coop 58 Dec 30 13:59 description Chapter5.txt:-rw-rw-r-- 1 coop coop 23 Dec 30 13:59 HEAD Chapter5.txt:drwxrwxr-x 2 coop coop 4096 Dec 30 13:59 hooks/ Chapter5.txt:drwxrwxr-x 2 coop coop 4096 Dec 30 13:59 info/ Chapter5.txt:drwxrwxr-x 4 coop coop 4096 Dec 30 13:59 objects/ Chapter5.txt:drwxrwxr-x 4 coop coop 4096 Dec 30 13:59 refs/ Chapter5.txt:Later we will describe the contents of this directory and its subdirectories; for the most part they start out empty. Chapter5.txt:3. Next we create a file and add it to the project: Chapter5.txt:$ echo some junk > somejunkfile Chapter5.txt:$ git add somejunkfile Chapter5.txt:4. We can see the current status of our project with: Chapter5.txt:$ git statu Chapter5.txt:sOn branch master Chapter5.txt:Initial commit Chapter5.txt:Changes to be committed: Chapter5.txt:(use "git rm --cached ..." to unstage) Chapter5.txt:new file: somejunkfile Chapter5.txt:Notice it is telling us that our file isstagedbut not yet committed. Chapter5.txt:5. Let’s tellgitwho is responsible for this repository: Chapter5.txt:$ git config user.name "Another Genius" Chapter5.txt:$ git config user.email "b_genius@linux.com" Chapter5.txt:This must be done for each new project unless you have it predefined in a global configuration file. Chapter5.txt:6. Now let’s modify the file, and then see the history of differences: Chapter5.txt:$ echo another line >> somejunkfile Chapter5.txt:$ git diff Chapter5.txt:diff --git a/somejunkfile b/somejunkfile Chapter5.txt:index 9638122..6023331 100644 Chapter5.txt:--- a/somejunkfile Chapter5.txt:+++ b/somejunkfile Chapter5.txt:@@ -1 +1,2 @@ Chapter5.txt:some junk Chapter5.txt:+another line Chapter5.txt:7. To actually commit the changes to the repository we do: Chapter5.txt:$ git commit -m "My initial commit" Chapter5.txt:Created initial commit eafad66: My initial commit Chapter5.txt:1 files changed, 1 insertions(+), 0 deletions(-) Chapter5.txt:create mode 100644 somejunkfile Chapter5.txt:If you do not specify an identifying message to accompany the commit with the-moption you will jump into an editor to put some content in. You must do this or the commit will be rejected. The editor chosen will be what is set in your EDITOR environment variable, which can be superseded with setting GIT_EDITOR. Chapter5.txt:8. You can see your history with: Chapter5.txt:$ git log Chapter5.txt:commit eafad66304ebbcd6acfe69843d246de3d8f6b9cc Chapter5.txt:Author: A Genius Chapter5.txt:Date: Wed Dec 30 11:07:19 2009 -0600 Chapter5.txt:My initial commit Chapter5.txt:and you can see the information got in there. You will note the long hexadecimal string which is thecommit number; it is a 160-bit, 40-digit unique identifier.git cares about these beasts, not file names. Chapter5.txt:9. You are now free to modify the already exiting file and add new files with git add. But they are staged until you do another git commit Chapter5.txt:10. Now that was not so bad. But we have only scratched the surface. Chapter5.txt:知識チェック Chapter5.txt:「第5章 - パッケージ管理システム」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter5.txt:クイズ開始 Chapter5.txt:問題 5.1 Chapter5.txt:Red Hat Enterprise Linux、SUSE、CentOS、Fedoraはどのパッケージ システムを使用していますか? Chapter5.txt:A. dpkg Chapter5.txt:B. rpm Chapter5.txt:問題 5.2 Chapter5.txt:gitはLinuxカーネル コミュニティで広く使用されています。その理由を選んでください。 Chapter5.txt:A. github.comによって発明され、カーネル開発者によって採用されました Chapter5.txt:B. 最初はLinus Torvaldsによって作成されました Chapter5.txt:C. CVSとsubversionから作られました Chapter5.txt:D. プロプライエタリなクローズド ソース製品に使用するには、料金の支払いが必要です Chapter6.txt:RPM Chapter6.txt:はじめに Chapter6.txt:第6章はじめに Chapter6.txt:Red Hat Package Manager(RPM)は、Linuxシステムでのソフトウェアのインストール、検証、アップグレード、および削除を行うために、多くの主要なディストリビューション(およびそこから派生したもの)によって使用されています。低レベルのrpmプログラムはこれらのすべての処理を、1つのパッケージに対して実行することも、パッケージのリストに対して実行することもできます。問題を引き起こすような処理があれば、処理は中断されます(別のパッケージが依存しているパッケージの削除、または最初に他のソフトウェアをシステムにインストールする必要がある場合のパッケージのインストールなど)。 Chapter6.txt:学習目標 Chapter6.txt:この章の終わりまでに、次のことができるようになります。 Chapter6.txt:RPMシステムがどのように構成され、rpmプログラムがどのような処理を実行するかを理解できます。 Chapter6.txt:バイナリとソースの両方のrpmファイルに使用される命名規則を説明できます。 Chapter6.txt:パッケージのクエリー、検証、インストール、アンインストール、アップグレード、更新ができます。 Chapter6.txt:アップグレードするのではなく、新しいカーネルをインストールする理由を理解できます。 Chapter6.txt:rpm2cpioを使用して、パッケージ化されたファイルをcpioアーカイブにコピーし、インストールすることなくファイルを抽出できます。 Chapter6.txt:RPM Chapter6.txt:RPMを使用する利点 Chapter6.txt:RPMは、Red Hatが開発したパッケージ管理ユーティリティです。名前はもともとRedhat Package Managerを表していました。特定のタスクまたはサブシステムに関連するすべてのファイルは、1つのファイルにパッケージ化されます。このファイルには、ファイルをインストールおよびアンインストールする方法とその場所に関する情報も含まれています。開発者がプログラムの新しいバージョンを作成すると、通常、新しいRPMパッケージがリリースされます。これらのファイルは、他のLinuxディストリビューションでは使用できない可能性があることに注意してください。また、特定のURLを指定しない限り、rpmはパッケージをネットワーク経由で取得せず、絶対パスまたは相対パスを使用してローカル マシンからインストールすることにも注意してください。 Chapter6.txt:RPMによって、システム管理者はソフトウェア パッケージの管理が容易になります。特定のファイルがどのパッケージのものであるか、どのバージョンのパッケージがインストールされているか、それが正しくインストールされたかどうかを、簡単に判断することができます。FTPまたはHTTPを使用してパッケージをインストールできます。また、パッケージをすべて削除してディスク領域を解放することも簡単です。RPMはドキュメント ファイルをパッケージの他の部分と区別し、システムにドキュメントをインストールするかどうかを選択できるようにしています。 Chapter6.txt:RPMにより、ソフトウェア開発者の仕事が簡単になります。多くの場合、開発者は、コードを変更し、別のオペレーティング システムで正しくコンパイルして実行できるようにする必要があります。しかしRPMを使用すると、構築する人は、Linuxでの構築に必要な変更を、元のソースとは別に持つことができます。このRPMは、構築関係の変更がすべて1か所にあるため、新しいバージョンのコードの組み込みが容易になります。また、さまざまなアーキテクチャ向けのLinuxバージョンの構築も容易になります。 Chapter6.txt:パッケージ ファイル名 Chapter6.txt:RPMパッケージ ファイル名は、RPMのドキュメントで文書化されているように、特定の情報を表すフィールドで構成されています。 Chapter6.txt:バイナリ パッケージの標準の命名形式は次のとおりです。 Chapter6.txt:--...rpm Chapter6.txt:sed-4.5-1.e18.x86_64 Chapter6.txt:ソース パッケージの標準の命名形式は次のとおりです。 Chapter6.txt:--..src.rpm Chapter6.txt:sed-4.5-1.e18.src.rpm Chapter6.txt:RPMで動作するyumとzypperのときに詳しく説明しますが、特定のインストールでは、複数の異なるパッケージ リポジトリを使用する可能性があるため、distroフィールドではパッケージの作成元のリポジトリを指定することに留意してください。 Chapter6.txt:RPMデータベースと補助プログラム Chapter6.txt:/var/lib/rpmは、Berkeley DBハッシュ ファイル形式でRPMデータベース ファイルを保持する、デフォルトのシステム ディレクトリです。データベース ファイルは手動で変更しないでください。更新はrpmプログラムでのみ行う必要があります。 Chapter6.txt:代替のデータベース ディレクトリは、rpmプログラムの--dbpathオプションで指定できます。たとえば、別のシステムからコピーされたRPMデータベースを調べるために、これを使うことができます。 Chapter6.txt:--rebuilddbオプションを使用すると、インストールされたパッケージ ヘッダーからデータベース インデックスを再構築できます。これはどちらかというと修復的なものであり、ゼロからの再構築ではありません。 Chapter6.txt:RPMで使用される補助プログラムとスクリプトは、/usr/lib/rpmにあります。かなりの数があります。たとえば、RHEL 7システムの場合: Chapter6.txt:$ ls /usr/lib/rpm | wc -l Chapter6.txt:70 Chapter6.txt:ここで使っているwcは、出力の行数を報告するものです。 Chapter6.txt:また、あなたがrpmrcファイルを作成し、rpmのデフォルトに指定することができます。デフォルトでは、rpmは以下の順番で探します。 Chapter6.txt:1. /usr/lib/rpm/rpmrc Chapter6.txt:2. /etc/rpmrc Chapter6.txt:3. ~/.rpmrc Chapter6.txt: rpmはこれらのファイルをすべて読むことに注意してください。rpmは存在を検出してもすぐに停止することはしません。 --rcfileオプションを使用して、他のrpmrcファイルを指定することもできます。 Chapter6.txt:クエリ Chapter6.txt:すべてのrpmの照会には-qオプションを使うことができ、多くのサブオプションと組み合わせることができます。 Chapter6.txt:どのバージョンのパッケージがインストールされているかを知るには? Chapter6.txt:$ rpm -q bash Chapter6.txt:このファイルがどのパッケージから得たものかを知るには? Chapter6.txt:$ rpm -qf /bin/bash Chapter6.txt:このパッケージによって、どのファイルがインストールされたかを知るには? Chapter6.txt:$ rpm -ql bash Chapter6.txt:このパッケージに関する情報を表示すには? Chapter6.txt:$ rpm -qi bash Chapter6.txt:パッケージ データベースではなく、パッケージ ファイルからこのパッケージに関する情報を表示すには? Chapter6.txt:$ rpm -qip foo-1.0.0-1.noarch.rpm Chapter6.txt:このシステムにインストールされている、すべてのパッケージをリストするには? Chapter6.txt:$ rpm -qa Chapter6.txt:その他の便利なオプションとして、-requiresと--whatprovidesがあります。 Chapter6.txt:--requiresオプションは、パッケージの前提条件のリストを返します。 Chapter6.txt:$ rpm -qp --requires foo-1.0.0-1.noarch.rpm Chapter6.txt:--whatprovidesオプションは、インストールされたどのパッケージが特定の必須パッケージを提供しているかどうかを表示します。 Chapter6.txt:$ rpm -q --whatprovides libc.so.6 Chapter6.txt:パッケージの検証 Chapter6.txt:rpmの-Vオプションを使用して、特定パッケージのファイルがシステムのRPMデータベースと一致しているかを確認することができます。システム上のすべてのパッケージを確認するには次を実行します。 Chapter6.txt:$ rpm -Va Chapter6.txt:missing /var/run/pluto Chapter6.txt:.... Chapter6.txt:S.5....T. c /etc/hba.conf Chapter6.txt:S.5....T. /usr/share/applications/defaults.list Chapter6.txt:....L.... c /etc/pam.d/fingerprint-auth Chapter6.txt:....L.... c /etc/pam.d/password-auth Chapter6.txt:.... Chapter6.txt:.M....... /var/lib/nfs/rpc_pipefs Chapter6.txt:.... Chapter6.txt:.....UG.. /usr/local/bin Chapter6.txt:.....UG.. /usr/local/etc Chapter6.txt:これは数アイテムを示しただけです。このコマンドは、すべてのパッケージが所有しているすべてのファイルを検査するため、時間がかかることに注意してください。 Chapter6.txt:問題がある場合にのみ出力が表示されます。出力では、各文字は、ファイルの属性をデータベースに記録された属性と比較した結果を示しています。 単体の「.」(ピリオド)はテストを通過したことを、単体の「?」 (疑問符)はテストが実行できなかったことを意味しています(たとえば、ファイルのパーミッションが読み取り禁止だった場合など)。それ以外の文字は、対応する--verifyテストの失敗を意味しています。 Chapter6.txt:S:ファイル サイズが異なる Chapter6.txt:M:ファイルのパーミッションや種類が異なる Chapter6.txt:5:MD5チェックサムが異なる Chapter6.txt:D:デバイスのメジャー/マイナー番号の不一致 Chapter6.txt:L:シンボリックリンク パスの不一致 Chapter6.txt:U:ユーザーの所有権が異なる Chapter6.txt:G:グループ所有権が異なる Chapter6.txt:T:修正時刻が異なる Chapter6.txt:P:機能が異なる Chapter6.txt:すべてが正常な場合、何も出力されません。 Chapter6.txt:引数として1つ以上のパッケージ名を指定した合、次の例のように、そのパッケージのみを調べます。 Chapter6.txt:すべてが正常で何も出力されない例です。 Chapter6.txt:$ rpm -V bash Chapter6.txt:ファイルのサイズ、チェックサム、および修正時刻が変更されたことを出力する例です。 Chapter6.txt:$ rpm -V talk Chapter6.txt:S.5....T in.ntalkd.8 Chapter6.txt:ファイルが欠落していることを出力する例です。 Chapter6.txt:$ rpm -V talk Chapter6.txt:missing /usr/bin/talk Chapter6.txt:パッケージのインストール方法 Chapter6.txt:パッケージのインストールは次のように簡単です。 Chapter6.txt:$ sudo rpm -ivh bash-4.4.19-8.el8_0.x86_64 Chapter6.txt:ここで、-iはパッケージのインストール実施、-vは詳細情報表示、-hは進行状況をハッシュ マークをつけて出力することを意味します。 Chapter6.txt:各ボックスをクリックして展開し、RPM がパッケージをインストールするときに実行するタスクの詳細をご覧ください。 Chapter6.txt:タスク Chapter6.txt:依存関係チェックの実行 Chapter6.txt:RPMは依存性のチェックを実行します。一部のパッケージでは1つ以上の他のパッケージもインストールしないと適切に動作しないため、このチェックは必要です。​​​​ Chapter6.txt:競合チェックの実行 Chapter6.txt:RPMは競合チェックを実行します。これは、すでにインストールされているパッケージをインストールする場合や、新しいバージョンの上に古いバージョンをインストールする場合も含みます。 Chapter6.txt:インストール前に要求されるコマンドの実行 Chapter6.txt:パッケージを作成する開発者は、インストールの前後に特定のタスクを実行するように指定できます。 Chapter6.txt:構成ファイルの知的な処理 Chapter6.txt:構成ファイルをインストールするときに、ファイルが存在し、以前のバージョンのパッケージがインストールされてから変更されている場合、RPMはサフィックス.rpmsaveを使って古いバージョンを保存します。これにより、古い構成ファイルに加えた変更を、新しいバージョンのファイルに統合できます。この機能を使うには、RPMパッケージが適切に作成されている必要があります。 Chapter6.txt:パッケージからファイルを解凍し、正しい属性でインストール Chapter6.txt:RPMは、適切な場所にファイルをインストールすることに加えて、パーミッション、所有権、変更(ビルド)時刻などの属性も設定します。 Chapter6.txt:インストール後に必要なコマンドの実行 Chapter6.txt:RPMは、セットアップまたは初期化に必要な、インストール後のタスクを実行します。 Chapter6.txt:システムのRPMデータベースの更新 Chapter6.txt:RPMはパッケージをインストールするたびに、システム データベース内の情報を更新します。競合をチェックするときにこの情報を使用します。 Chapter6.txt:RPMパッケージのアンインストール Chapter6.txt:-eオプションにより、rpmはパッケージをアンインストール(消去)します。通常、アンインストールしようとしているパッケージが実際にはインストールされていない、またはシステム上の他のパッケージで必要な場合、rpm -eはエラー メッセージを出力して失敗の形で終了します。アンインストールが成功しても何も出力されません。 Chapter6.txt:$ sudo rpm -e system-config-lvm Chapter6.txt:package system-config-lvm is not installed Chapter6.txt:依存関係によるエラーの例は、RHEL 7システムでは以下のように表示されます。 Chapter6.txt:$ sudo rpm -e xz Chapter6.txt:error: Failed dependencies: Chapter6.txt: xz is needed by (installed) dracut-033-161.el7.x86_64 Chapter6.txt: xz is needed by (installed) sos-3.0-23.el7.noarch Chapter6.txt: xz is needed by (installed) libvirt-daemon-driver-qemu-1.1.1-29.el7_0.1.x86_64 Chapter6.txt: xz is needed by (installed) rpm-build-4.11.1-16.el7.x86_64 /usr/bin/xz is needed by (installed) kmod-14-9.el7.x86_64 Chapter6.txt:--eオプションとともに--testオプションを使用すると、実際にアンインストールを行うことなく、アンインストールが成功するか失敗するかを判断できます。操作が成功すると、rpmは何も出力しません。-vvオプションを追加すれば、詳細情報を取得できます。 Chapter6.txt:削除する時のパッケージ引数はパッケージ名です。rpmファイル名ではないことに注意してください。 Chapter6.txt:🚩 Chapter6.txt:rpmパッケージ自体を削除(消去/アンインストール)しないでください。rpmを削除する唯一の方法は、オペレーティング システムを再インストールするか、レスキュー環境を起動することです。 Chapter6.txt:RPMパッケージのアンインストール Chapter6.txt:スクリーンショットの例は、openSUSEシステムで実行されたものとは多少異なる依存関係がありますので、注意してください。 Chapter6.txt:デモ:rpmコマンドの使用 Chapter6.txt:このビデオでは、低レベルのrpmコマンドを使用してパッケージを調べたり、パッケージを削除したりする方法を紹介します。 Chapter6.txt:パッケージの更新(Upgrade) Chapter6.txt:次のようにアップグレードすると、元のパッケージが置き換えられます(インストールされている場合)。 Chapter6.txt:$ rpm -Uvh bash-4.4.19-10.el8.x86_64.rpm Chapter6.txt:引数は1つだけでなく、パッケージ名のリストを指定できます。 Chapter6.txt:アップグレードする場合、新しいバージョンがインストールされると、既にインストールされているパッケージは削除されます。唯一の例外は元のインストールの構成ファイルで、拡張子が.rpmsaveになって保存されます。 Chapter6.txt:-Uオプションを使用し、かつパッケージがまだインストールされていない場合は、単純にインストールされエラーはありません。 Chapter6.txt:-iオプションはアップグレード用として設計されていません。古いRPMパッケージの上に新しいRPMパッケージをインストールしようとすると、既存のシステム ファイルを上書きしようとして、エラー メッセージを表示して失敗します。 Chapter6.txt:ただし、パッケージの各バージョンに同じファイルが含まれていない場合、同じパッケージの異なるバージョンがインストールされる場合があります。カーネル パッケージとライブラリ パッケージは、代替アーキテクチャから複数回インストールされる唯一のパッケージです。 Chapter6.txt:rpm -Uでダウングレードする(つまり、現在のバージョンを以前のバージョンに置き換える)場合は、コマンド ラインに--oldpackageオプションを追加する必要があります。 Chapter6.txt:パッケージの更新(Freshen) Chapter6.txt:以下のコマンドを実行します。 Chapter6.txt:$ sudo rpm -Fvh *.rpm Chapter6.txt:これは、現在のディレクトリにあるすべてのパッケージを更新しようとします。詳細は次のとおりです。 Chapter6.txt:古いバージョンのパッケージがインストールされている場合、ディレクトリ内の新しいバージョンにアップグレードします。 Chapter6.txt:システム上のバージョンがディレクトリ内のバージョンと同じ場合、何も行いません。 Chapter6.txt:パッケージのバージョンがインストールされていない場合、ディレクトリ内のパッケージは無視されます。 Chapter6.txt:-Fオプションは、いくつかの新しいパッチをダウンロードして、すでにインストールされているパッケージをアップグレードし、新しいパッケージはインストールしない、という場合に便利です。 Chapter6.txt:更新(-F)は、多数のパッチ(すなわちアップグレードされたパッケージ)を一度に適用するのに便利です。 Chapter6.txt:Linuxカーネルのアップグレード Chapter6.txt:システムに新しいカーネルをインストールした場合、それを有効にするためには再起動(数少ないアップデートの1つ)が必要です。カーネルのアップグレード(-U)を実行しないでください。アップグレードを行うと、現在実行中の古いカーネルが削除されます。 Chapter6.txt:これ自体はシステムを停止しませんが、再起動後に問題が発生した場合、システムから削除されているため、古いカーネルを再起動できなくなります。ただし、インストール(-i)すると両方のカーネルが共存し、どちらかを起動することを選択できます。つまり、必要に応じて古いものに戻すことができます。 Chapter6.txt:Red Hatベースのシステムに新しいカーネルをインストールするには、次のようにします。 Chapter6.txt:$ sudo rpm -ivh kernel-{version}.{arch}.rpm Chapter6.txt:ここでは、正しいバージョンとアーキテクチャ名を入力します。 Chapter6.txt:これを行うと、GRUB構成ファイルが自動的に更新され、新しいバージョンが含まれます。他のことを行うためにシステムを再構成しない限り、ブート時のデフォルトの選択になります。 Chapter6.txt:新しいカーネル バージョンをテストしたら、必要に応じて古いバージョンを削除できますが、これは必須ではありません。スペースが不足していない限り、1つ以上の古いカーネルを使用可能にしておくことをお勧めします。 Chapter6.txt:dump2fsの使用 Chapter6.txt:RPMパッケージ ファイルをcpioアーカイブに変換するには、rpm2cpioコマンドを使用します。さらに、このコマンドはRPMパッケージ ファイルからファイルを取り出すことができます。すべてのファイルは、現在のディレクトリを基準にして取り出されることに注意してください。したがって、ユーザーが/home/bobディレクトリにいてbin/bashファイルを展開した場合、それは/home/bob/bin/bashに保存されます。 Chapter6.txt:以下を実行して、RPMパッケージ ファイルをcpioアーカイブに変換します。 Chapter6.txt:$ rpm2cpio foobar.rpm > foobar.cpio Chapter6.txt:RPMパッケージ ファイル内のファイルを一覧表示する場合: Chapter6.txt:$ rpm2cpio bash-XXXX.rpm | cpio -t Chapter6.txt:もっと良い方法として以下があります。 Chapter6.txt:$ rpm -qlp bash-XXXX.rpm Chapter6.txt:RPMパッケージ ファイルから1つ以上のファイルをシステムに展開する場合: Chapter6.txt:$ rpm2cpio bash-XXXX.rpm | cpio -ivd bin/bash Chapter6.txt:$ rpm2cpio logrotate-XXXX.rpm | cpio --extract --make-directories Chapter6.txt:演習の要件 Chapter6.txt:次の演習を実行するためには、RHEL、CentOS、Fedora、SUSE、openSUSEなどのRPMベースのシステムにアクセスできることが必要です。 Chapter6.txt:演習 Chapter6.txt:課題 6.1:RPMを使う Chapter6.txt:🚩 Chapter6.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter6.txt:Exercise 6.1: Using RPM Chapter6.txt:Here we will just do a number of simple operations for querying and verifyingrpmpackages.This lab will work equally well onRed HatandSUSE-based systems. Chapter6.txt:1. Find out what package the file/etc/logrotate.confbelongs to. Chapter6.txt:2. List information about the package including all the files it contains. Chapter6.txt:3. Verify the package installation. Chapter6.txt:4. Try to remove the package. Chapter6.txt:Solution 6.1 Chapter6.txt:1.$ rpm -qf /etc/logrotate.conf Chapter6.txt:logrotate-3.14.0-3.el8.x86_64 Chapter6.txt:2.$ rpm -qil logrotate Chapter6.txt:... Chapter6.txt:Note a fancier form that combines these two steps would be: Chapter6.txt:$ rpm -qil $(rpm -qf /etc/logrotate.conf) Chapter6.txt:3.$ rpm -V logrotate..?...... /etc/cron.daily/logrotate Chapter6.txt:S.5....T. c /etc/logrotate.conf Chapter6.txt:On RedHat Chapter6.txt:4. OnRHEL 8: Chapter6.txt:$ sudo rpm -e logrotate Chapter6.txt:error: Failed dependencies: Chapter6.txt:logrotate is needed by (installed) vsftpd-3.0.3-28.el8.x86_64 Chapter6.txt:logrotate >= 3.5.2 is needed by (installed) rsyslog-8.37.0-13.el8.x86_64 Chapter6.txt:On openSUSE Chapter6.txt:OnOpenSUSE-Leap 15.1: Chapter6.txt:$ sudo rpm -e logrotate Chapter6.txt:error: Failed dependencies: Chapter6.txt:logrotate is needed by (installed) xdm-1.1.11-lp151.13.2.x86_64 Chapter6.txt:logrotate is needed by (installed) wpa_supplicant-2.6-lp151.4.4.x86_64 Chapter6.txt:logrotate is needed by (installed) chrony-3.2-lp151.8.6.x86_64 Chapter6.txt:logrotate is needed by (installed) net-snmp-5.7.3-lp151.7.5.x86_64 Chapter6.txt:logrotate is needed by (installed) syslog-service-2.0-lp151.3.3.noarch Chapter6.txt:logrotate is needed by (installed) vsftpd-3.0.3-lp151.6.3.x86_64 Chapter6.txt:logrotate is needed by (installed) libvirt-daemon-5.1.0-lp151.7.6.1.x86_64 Chapter6.txt:logrotate is needed by (installed) iscsiuio-0.7.8.2-lp151.13.6.1.x86_64logrotate is needed by (installed) mcelog-1.60-lp151.2.3.1.x86_64 Chapter6.txt:Note that the exact package dependency tree depends on both the distribution and choice of installed software. Chapter6.txt:課題 6.2:RPMデータベースの再構築 Chapter6.txt:🚩 Chapter6.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter6.txt:Exercise 6.2: Rebuilding the RPM Database Chapter6.txt:There are conditions under which the RPM database stored in/var/lib/rpmcan be corrupted. In this exercise we will construct a new one and verify its integrity. Chapter6.txt:This lab will work equally well on Red Hat and SUSE-based systems. Chapter6.txt:1. Backup the contents of/var/lib/rpmas the rebuild process will overwrite the contents. If you neglect to do this and something goes wrong you are in serious trouble. Chapter6.txt:2. Rebuild the data base. Chapter6.txt:3. Compare the new contents of the directory with the backed up contents; don’t examine the actual file contents as theyare binary data, but note the number and names of the files. Chapter6.txt:4. Get a listing of allrpmson the system. You may want to compare this list with one generated before you actually do therebuild procedure. If the query command worked, your new database files should be fine. Chapter6.txt:5. Compare again the two directory contents. Do they have the same files now? Chapter6.txt:6. You could delete the backup (probably about 100 MB in size) but you may want to keep it around for a while to make sure your system is behaving properly before trashing it. Chapter6.txt:Solution 6.2 Chapter6.txt:1.$ cd /var/lib$ sudo cp -a rpm rpm_BACKUP Chapter6.txt:2.$ sudo rpm --rebuilddb Chapter6.txt:3.$ ls -l rpm rpm_BACKUP Chapter6.txt:4.$ rpm -qa | tee /tmp/rpm-qa.output Chapter6.txt:5.$ ls -l rpm rpm_BACKUP Chapter6.txt:6. Probably you should not do this until you are sure the system is fine! Chapter6.txt:$ sudo rm -rf rpm_BACKUP Chapter6.txt:知識チェック Chapter6.txt:「第6章 - RPM」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter6.txt:クイズ開始 Chapter6.txt:問題 6.1 Chapter6.txt:次の説明のうち、正しいものはどれですか。 Chapter6.txt:A. yumは、主にローカル パッケージとやり取りする低レベル ツールです。 Chapter6.txt:B. rpmは、リモート サーバー上のパッケージを含む、利用可能なすべてのパッケージを認識する高レベル ツールです。 Chapter6.txt:C. rpm -qaは、システムにインストールされているすべてのパッケージをリストします。 Chapter6.txt:問題 6.2 Chapter6.txt:バイナリ/bin/lsが悪意のあるソフトウェアを含むように変更されたかどうかはわかりません。/bin/lsの整合性を確認するには、どのrpmコマンドを使用しますか? Chapter6.txt:注:/bin/lsは、coreutilsパッケージによって提供されます。 Chapter6.txt:A. rpm -ivh coreutils Chapter6.txt:B. rpm -qp coreutils Chapter6.txt:C. rpm -V coreutils Chapter7.txt:DPKG Chapter7.txt:はじめに Chapter7.txt:第7章はじめに Chapter7.txt:Debian Package Manager(DPKG)は、Linuxシステムでのソフトウェアのインストール、検証、アップグレード、削除の操作ができます。すべての Debian ベースのディストリビューションで使用できます。低レベルのdpkgプログラムは、1つのパッケージで、またはパッケージのリストで、これらすべての操作を実行できます。問題を引き起こすような処理があれば、処理は中断されます(別のパッケージが依存しているパッケージの削除、または最初に他のソフトウェアをシステムにインストールする必要がある場合のパッケージのインストールなど)。 Chapter7.txt:学習目標 Chapter7.txt:この章の終わりまでに、次のことができるようになります。 Chapter7.txt:DPKGパッケージ システムとその用途について説明できます。 Chapter7.txt:バイナリとソースの両方のdebファイルに使用される命名規則を説明できます。 Chapter7.txt:ソース パッケージがどのような構造かを理解できます。 Chapter7.txt:パッケージのクエリと検証の操作ができます。 Chapter7.txt:Debianパッケージをインストール、アップグレード、アンインストールできます。 Chapter7.txt:DPKG Chapter7.txt:DPKGの要点 Chapter7.txt:DPKG(Debian Package)は、Debian Linux、およびそれから派生した他のディストリビューションにおいて、ソフトウェア パッケージをインストール、削除、そして管理するための、パッケージング システムです。RPMと同様に、日常的に使用するパッケージを直接取得する設計にはなっておらず、ローカルにインストールしたり削除したりします。 Chapter7.txt:パッケージ ファイルの拡張子は.debで、DPKGデータベースは/var/lib/dpkgディレクトリにあります。 Chapter7.txt:rpmのように、dpkgプログラムは その領域の一部分だけを見ているにすぎません。システムにインストールされているものとコマンドラインで与えられたものは知っていますが、他のパッケージがシステム上のディレクトリやインターネット上のディレクトリにあるのかは知りません。そのため、依存関係が満たされていない場合や、他のインストール済みパッケージに必要なパッケージを削除しようとした場合には、失敗します。 Chapter7.txt:パッケージのファイル名とソース Chapter7.txt:Debianパッケージのファイル名は、特定の情報を表すフィールドに基づいて付けられています。バイナリ パッケージの標準の命名形式は次のとおりです。 Chapter7.txt:_-_.deb Chapter7.txt:例えば、Debianの場合: Chapter7.txt:logrotate_3.14.0-4_amd64.deb Chapter7.txt:そして、Ubuntuの場合: Chapter7.txt:logrotate_3.14.0-4ubuntu3_amd64.deb Chapter7.txt: 歴史的な理由から、64ビットのx86プラットフォームはx86_64ではなくamd64と呼ばれています。Ubuntuなどのディストリビュータはパッケージ名に自分の名前を入れています。 Chapter7.txt:Debianパッケージング システムでは、ソース パッケージは少なくとも3つのファイルで構成されています。 Chapter7.txt:.tar.gzで終わるアップストリームのtarball。これは、パッケージ メンテナから提供されており、未変更のソースです。 Chapter7.txt:.dsc で終わる説明ファイル。これには、パッケージ名とアーキテクチャや依存関係などのその他のメタデータが含まれます。 Chapter7.txt:アップストリーム ソースへのパッチとパッケージ用に作成された追加ファイルが含まれる、第二のtarball。配布に応じて.debian.tar.gzまたは.diff.gzという名前が末尾に付きます。 Chapter7.txt:たとえば、Ubuntuシステムでは、次に示すように、ソース パッケージをダウンロードして、ダウンロードまたは作成されたファイルを確認できます。 Chapter7.txt:Ubuntuでソース パッケージを取得 Chapter7.txt:DPKGクエリ Chapter7.txt:実行できるクエリの例をいくつか見てみましょう。 Chapter7.txt:インストールされているすべてのパッケージをリストする場合: Chapter7.txt:$ dpkg -l Chapter7.txt:パッケージ名を指定することもできます。 Chapter7.txt:wgetパッケージにインストールされているファイルをリストする場合: Chapter7.txt:$ dpkg -L wget Chapter7.txt:インストール済みパッケージに関する情報を表示する場合: Chapter7.txt:$ dpkg -p wget Chapter7.txt:パッケージ ファイルに関する情報を表示する場合: Chapter7.txt:$ dpkg -I webfs_1.21+ds1-8_amd64.deb Chapter7.txt:パッケージ ファイル内のファイルを一覧表示する場合: Chapter7.txt:$ dpkg -c webfs_1.21+ds1-8_amd64.deb Chapter7.txt:/etc/init/networking.confを所有しているパッケージを表示する場合: Chapter7.txt:$ dpkg -S /etc/init/networking.conf Chapter7.txt:パッケージの状態を表示する場合: Chapter7.txt:$ dpkg -s wget Chapter7.txt:インストールされたパッケージの整合性を確認する場合: Chapter7.txt:$ dpkg -V package Chapter7.txt:🚩 Chapter7.txt: dpkg 1.17以降のバージョンのみが-Vオプションをサポートします。引数がない場合は、システム上のすべてのパッケージを検証します。出力の意味を知りたい方は、manページを参照してください。 Chapter7.txt:dpkgを使用したパッケージのインストール/アップグレード/アンインストール Chapter7.txt:以下のコマンドを実行します。 Chapter7.txt:$ sudo dpkg -i foobar.deb Chapter7.txt:これは、foobarパッケージのインストールまたはアップグレードを行います。 Chapter7.txt:パッケージが現在インストールされていない場合は、インストールします。パッケージが現在インストールされているパッケージよりも新しい場合は、アップグレードされます。 Chapter7.txt:以下のコマンドを実行します。 Chapter7.txt:$ sudo dpkg -r package Chapter7.txt:これは、構成ファイルを除く、インストール済みのパッケージをすべて削除します。以下のコマンドを実行します。 Chapter7.txt:$ sudo dpkg -P package Chapter7.txt:これは、構成ファイルを含め、インストールされているすべてのパッケージを削除します。-P はパージを表すことに注意してください。 Chapter7.txt:デモ:dpkg コマンドの使用方法 Chapter7.txt:このビデオは、低レベルの dpkg コマンドの使用方法を説明しています。 Chapter7.txt:演習 Chapter7.txt:演習の要件 Chapter7.txt:次の演習を実行するには、Debian、Ubuntu、Linux Mintなど、Debianベースのシステムにアクセスできることが必要です。 Chapter7.txt:課題 7.1: dpkgを使う Chapter7.txt:🚩 Chapter7.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter7.txt:Exercise 7.1: Using dpkgHere we will just do a number of simple operations for querying and verifyingDebianpackages. Chapter7.txt:1. Find out what package the file/etc/logrotate.confbelongs to. Chapter7.txt:2. List information about the package including all the files it contains. Chapter7.txt:3. Verify the package installation. Chapter7.txt:4. Try to remove the package. Chapter7.txt:Solution 7.1 Chapter7.txt:1.$ dpkg -S /etc/logrotate.conflogrotate: /etc/logrotate.conf Chapter7.txt:2.$ dpkg -L logrotate... Chapter7.txt:3.$ dpkg -V logrotate Chapter7.txt:4.$ sudo dpkg -r logrotate Chapter7.txt:dpkg: dependency problems prevent removal of logrotate:libvirt-bin depends on logrotate.ubuntu-standard depends on logrotate. Chapter7.txt:dpkg: error processing package logrotate (--remove):dependency problems - not removing Chapter7.txt:Errors were encountered while processing:logrotate Chapter7.txt:知識チェック Chapter7.txt:「第7章 - DPKG」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter7.txt:クイズ開始 Chapter7.txt:問題 7.1 Chapter7.txt:次の説明のうち、正しいものはどれですか。 Chapter7.txt:A. aptは、主にローカル パッケージとやり取りする低レベルのツールです。 Chapter7.txt:B. dpkgは、リモート サーバー上のパッケージを含む、利用可能なすべてのパッケージを認識する高レベル ツールです。 Chapter7.txt:C. dpkg -lは、システムにインストールされているすべてのパッケージを一覧表示します。 Chapter8.txt:Yum Chapter8.txt:はじめに Chapter8.txt:第8章はじめに Chapter8.txt:yumプログラムは、下位のrpmプログラムを使用し、高レベルでインテリジェントなサービスを提供します。パッケージのインストール、更新、削除時に、依存関係を自動的に解決できます。外部ソフトウェア リポジトリにアクセスして同期を取り、必要に応じてソフトウェアを取得してインストールします。 Chapter8.txt:学習目標 Chapter8.txt:この章の終わりまでに、次のことができるようになります。 Chapter8.txt:パッケージ インストーラーとその特性について説明できます。 Chapter8.txt:yumが、高レベルのパッケージ管理システムとしてどのように機能するかを説明できます。 Chapter8.txt:リポジトリを使用するようにyumを構成できます。 Chapter8.txt:yumを使用できるクエリについて説明できます。 Chapter8.txt:yumを使用してパッケージを検証、インストール、削除、およびアップグレードできます。 Chapter8.txt:追加のコマンドと新しいリポジトリのインストール方法に精通します。 Chapter8.txt:Fedoraにおけるyumの後継であるdnfの使用方法を理解できます。 Chapter8.txt:Yum Chapter8.txt:パッケージ インストーラー Chapter8.txt:rpmやdpkgなどの低レベルのパッケージ ユーティリティは、特定のソフトウェア パッケージ ファイルのインストールとインストール済みのソフトウェアを管理します。 Chapter8.txt:高レベルのパッケージ管理システム(yum、dnf、apt、zypperなど)には、利用可能なソフトウェアのデータベースと連携し、非常に洗練された方法でソフトウェアを、検索、インストール、更新、アンインストールするツールが組み込まれています。それらは、 Chapter8.txt:ローカルとリモートの両方のリポジトリをソースとして使用して、バイナリとソース ソフトウェア パッケージのインストールと更新を行ないます。 Chapter8.txt:ソフトウェア パッケージのインストール、アップグレード、削除を自動化するために使用されます。 Chapter8.txt:依存関係を自動的に解決します。 Chapter8.txt:パッケージを手動でダウンロードしたり依存関係情報を個別に検索したりする必要がないため、時間を節約できます。 Chapter8.txt:ソフトウェア リポジトリは、ディストリビューションとその他の独立したソフトウェア プロバイダによって提供されます。パッケージ インストーラーは、リポジトリが保持しているカタログから派生した、利用可能なソフトウェアのデータベースを維持します。低レベルのパッケージ ツールとは異なり、依存関係を自動的に検索してインストールする機能があります。これは重要な機能です。 Chapter8.txt:このセクションでは、yumとdnfについて説明します。zypperとaptはこの後のセクションで説明します。 Chapter8.txt:yumとは? Chapter8.txt:yumはrpmのフロントエンドを提供します。主な機能は、複数のリモート リポジトリからパッケージを取得し、パッケージ間の依存関係を解決することです。RHEL、CentOS、Scientific Linux、Fedoraなど、rpmを使用するディストリビューションの大部分で使用されています(すべてではありません)。 Chapter8.txt:yumはパフォーマンスを高速化するために、情報とデータベースをキャッシュします。キャッシュされた情報の一部またはすべてを削除するには、次のコマンドを実行します。 Chapter8.txt:$ yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] Chapter8.txt:yumには、/usr/bin/yum*と/usr/sbin/yum*の下に、いくつかの拡張モジュール(プラグイン)と関連プログラムがあります。 Chapter8.txt:ここではyumのコマンド ラインについて説明し、ディストリビューションが提供するグラフィカル インターフェイスについては説明しません。 Chapter8.txt:リポジトリの構成ファイルは/etc/yum.repos.d/に保持され、拡張子は.repoです。たとえば、RHEL 7システムには次のものがあります。 Chapter8.txt:yumリポジトリ Chapter8.txt:非常にシンプルなリポジトリ ファイルは次のようになります。 Chapter8.txt:[repo-name] Chapter8.txt: name=Description of the repository Chapter8.txt: baseurl= http://somesystem.com/path/to/repo Chapter8.txt: enabled=1 Chapter8.txt:より複雑な例は/etc/yum.repos.dにありますので、調べてみるとよいでしょう。 Chapter8.txt:enabledの値を0または1への変更するか、yumを使用するときに--disablerepo=somerepoと--enablerepo=somerepoオプションを使用することにより、特定のリポジトリの使用のオンとオフを切り替えることができます。 Chapter8.txt:gpgcheck変数を使用して整合性チェックを無効にすることもできます(ですが、すへきではありません)。 Chapter8.txt:クエリ Chapter8.txt:rpmと同様に、yumは検索などのクエリに使用できます。ローカル システムに存在するものだけでなく、リモート リポジトリも検索できます。 Chapter8.txt:名前にキーワードを含むパッケージを検索します。 Chapter8.txt:$ sudo yum search keyword Chapter8.txt:$ sudo yum list "*keyword*" Chapter8.txt:これら2つのコマンドは、少し異なる情報を提供します。最初のコマンドはパッケージの詳細情報を表示し、2番目のコマンドはインストールされているものとその他の利用可能なものを表示にします。 Chapter8.txt:パッケージに関する情報を表示すコマンドは以下です。 Chapter8.txt:$ sudo yum info package Chapter8.txt:情報には、サイズ、バージョン、リポジトリのソースのURL、および詳細な説明が含まれます。上記を含むほとんどのyumコマンドでは、「yum info libc*」のようにワイルド カードの指定ができます。rpm -qを使用したクエリとは異なり、パッケージはインストールされている必要はありません。 Chapter8.txt:以下のコマンドは、全てのパッケージ、もしくはインストールされているものだけ、存在しているもの、更新が必要だがインストールされていないものをリストします。 Chapter8.txt:$ sudo yum list [installed | updates | available ] Chapter8.txt:インストール済み、利用可能、または更新が必要なパッケージ グループに関する情報を表示するコマンドは以下です。 Chapter8.txt:$ sudo yum grouplist Chapter8.txt:パッケージ グループの情報を表示するには: Chapter8.txt:$ sudo yum groupinfo packagegroup Chapter8.txt:特定のファイル名を含むパッケージを表示するコマンドは以下です。 Chapter8.txt:$ sudo yum provides /path/to/file Chapter8.txt:ファイル名に少なくとも1つの/を使用する必要があることに注意してください。そうしないと混乱します。 Chapter8.txt:パッケージの検証 Chapter8.txt:パッケージの検証には、yum-plugin-verifyパッケージのインストールが必要です。もしインストールする必要がある場合、そのコマンドは以下となります。 Chapter8.txt:$ sudo yum install yum-plugin-verify Chapter8.txt:これはyumのプラグインであり、実行可能ファイルではないことに注意してください。yumには他にも多くのプラグインが用意されており、使用できるコマンドと引数の組み合わせを拡張できます。 Chapter8.txt:例えば、ほとんどの情報を提供しているパッケージを検証する場合: Chapter8.txt:$ sudo yum verify [package] Chapter8.txt:rpm -Vと全く同じことをする場合: Chapter8.txt:$ sudo yum verify-rpm [package] Chapter8.txt:構成ファイルを含むすべての違いをリストする場合: Chapter8.txt:$ sudo yum verify-all [package] Chapter8.txt:引数がない場合、上記のコマンドはシステムにインストールされているすべてのパッケージを検証します。 Chapter8.txt:デフォルトでは、検証コマンドは構成ファイルを無視します。これは通常の正しい使用でも変更される可能性があるからです。他にもいくつかのオプションがあります。 man yum-verifyを参照してください。 Chapter8.txt:🚩 Chapter8.txt:dnfには同等の検証プラグイン コマンドまたはオプションはありません。 Chapter8.txt:パッケージのインストール/削除/アップグレード Chapter8.txt:次に、一般的な操作の実行例をいくつか見てみましょう。 Chapter8.txt:リポジトリから1つ以上のパッケージをインストールし、必要な依存関係を解決してインストールする場合: Chapter8.txt:$ sudo yum install package1 [package2] Chapter8.txt:ローカルrpmからインストールする場合: Chapter8.txt:$ sudo yum localinstall package-file Chapter8.txt:これは以下のコマンドとまったく同じではありません。 Chapter8.txt:$ rpm -i package-file Chapter8.txt:yumの方は、リモート リポジトリにアクセスして依存関係を解決しようとします。 Chapter8.txt:リポジトリから特定のソフトウェア グループをインストールし、グループ内の各パッケージに必要な依存関係を解決してインストールする場合: Chapter8.txt:$ sudo yum groupinstall group-name Chapter8.txt:または Chapter8.txt:$ sudo yum install @group-name Chapter8.txt:システムからパッケージを削除する場合: Chapter8.txt:$ sudo yum remove package1 [package2] Chapter8.txt:yumは要求されたパッケージだけでなく、それらに依存するすべてのパッケージも削除するため、パッケージの削除には注意が必要です!削除を望まない場合もあります。したがってyum removeでは、依存性を気にせず確認なしで削除する-yオプションを指定する実行はしないでください。 Chapter8.txt:リポジトリからパッケージを更新する場合: Chapter8.txt:$ sudo yum update [package] Chapter8.txt:パッケージ名が指定されていない場合、すべてのパッケージが更新されます。 Chapter8.txt:インストール(または更新)中にパッケージに更新された構成ファイルを見つけると、古い構成ファイルの名前を.rpmsave拡張子に変更します。古い構成ファイルを新しいソフトウェアで引き続き使用する場合は、新しい構成ファイルの名前に.rpmnew拡張子を付けます。これらのファイル名拡張子を(ほとんどの場合、/etcサブディレクトリのツリー内で)検索して、何らかの調整を行う必要があるかどうかを調べる場合: Chapter8.txt:$ sudo find /etc -name "*.rpm*" Chapter8.txt:これは、基本的なrpmユーティリティの動作と同じですが、参考のためにここで触れておきます。 Chapter8.txt:yumの追加コマンド Chapter8.txt:インストールされているプラグインにより、yumの追加機能が不足することはありません。プラグインをすべてリストする場合: Chapter8.txt:$ sudo yum list "yum-plugin*" Chapter8.txt:有効なすべてのリポジトリのリストを表示する場合: Chapter8.txt:$ sudo yum repolist Chapter8.txt:複数のYUMコマンドを実行する対話型シェルを開始する場合: Chapter8.txt:$ sudo yum shell [text-file] Chapter8.txt:text-fileが指定されている場合、yumは端末からではなくそのファイルからコマンドを読み取って実行します。 Chapter8.txt:パッケージをダウンロードしますが、インストールはしません。それらを/var/cache/yumディレクトリ、または指定可能な別のディレクトリに保存する場合: Chapter8.txt:$ sudo yum install --downloadonly package Chapter8.txt:または、インストール コマンドの発行後にプロンプトが表示されたら、「y」や「n」の代わりに「d」と入力します。--downloaddir= オプションを使用しない場合は、パッケージは、/var/cache/yumの下のダウンロード元のリポジトリに応じた場所にダウンロードされます。依存関係を満たすために、他の必要なパッケージもダウンロードされます。 Chapter8.txt:yumコマンドを使って履歴を表示することができます、また、以前のコマンドのオプションを修正し再実行したり、戻したりする場合: Chapter8.txt:$ sudo yum history Chapter8.txt:dnf Chapter8.txt:dnfは、yumの後継という位置付けのもので、RHEL 8のyumを基にしています。 Chapter8.txt:Fedoraシステムでdnfの使用法を少しずつ学ぶことができます。というのも、Fedoraシステムは日々のタスク処理の大部分にyumコマンドのサブセットを利用しており、yumの各用途はdnfと同じであると言われているからです。 Chapter8.txt:詳細については、「Using the DNF software package manager 」と「DNF, the next-generation replacement for yum」を参照してください。 Chapter8.txt:デモ:yumとdnfユーティリティの使用方法 Chapter8.txt:このビデオは、yumユーティリティとdnfユーティリティの使用方法を示します。 Chapter8.txt:演習 Chapter8.txt:演習の要件 Chapter8.txt:次の演習を実行するには、RHEL 7やCentOS 7など、yumベースのシステムにアクセスできる必要があります。Fedora、RHEL 8、またはCentOS 8では、dnf を yum の代わりに使えば、その後のコマンドや説明は同じです、dnf は後方互換性があります。 Chapter8.txt:課題 8.1:YUM基本コマンド Chapter8.txt:🚩 Chapter8.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter8.txt:Exercise 8.1: Basic YUM Commands Chapter8.txt:1. Check to see if there are any available updates for your system. Chapter8.txt:2. Update a particular package. Chapter8.txt:3. List all installed kernel-related packages, and list all installed or available ones. Chapter8.txt:4. Install thehttpd-develpackage, or anything else you might not have installed yet. Doing a simple: Chapter8.txt:$ sudo yum list Chapter8.txt:will let you see a complete list; you may want to give a wildcard argument to narrow the list. Chapter8.txt:Solution 8.1 Chapter8.txt:1.$ sudo yum update Chapter8.txt:$ sudo yum check-update Chapter8.txt:$ sudo yum list updates Chapter8.txt:Only the first form will try to do the installations. Chapter8.txt:2.$ sudo yum update bash Chapter8.txt:3.$ sudo yum list installed "kernel*" Chapter8.txt:$ sudo yum list "kernel*" Chapter8.txt:4.$ sudo yum install httpd-devel Chapter8.txt:課題 8.2:yumを使って、パッケージの情報を得る Chapter8.txt:🚩 Chapter8.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter8.txt:Exercise 8.2: Using yum to Find Information About a Package Chapter8.txt:Usingyum(and notrpmdirectly), find: Chapter8.txt:1. All packages that contain a reference to bash in their name or description. Chapter8.txt:2. Installed and available bash packages. Chapter8.txt:3. The package information forbash. Chapter8.txt:4. The dependencies for the bash package. Chapter8.txt:Try the commands you used above both asrootand as a regular user. Do you notice any difference? Chapter8.txt:Solution 8.2 Chapter8.txt:Please Note Chapter8.txt:Depending on your distribution version, you may get some permission errors if you do not use sudo with the following commands, even though we are just getting information. Chapter8.txt:$ sudo yum search bash Chapter8.txt:$ sudo yum list bash Chapter8.txt:$ sudo yum info bash Chapter8.txt:$ sudo yum deplist bash Chapter8.txt:課題 8.3:yumを使って、パッケージ グループを管理する Chapter8.txt:🚩 Chapter8.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter8.txt:Exercise 8.3: Managing Groups of Packages with yum Chapter8.txt:Please Note Chapter8.txt:On RHEL you may get some permission errors if you don’t use sudo with some of the following commands, even whenwe are just getting information. Chapter8.txt:yum provides the ability to manage groups of packages. Chapter8.txt:1. Use the following command to list all package groups available on your system: Chapter8.txt:$ yum grouplist Chapter8.txt:2. Identify theBackup Clientgroup and generate the information about this group using the command Chapter8.txt:$ yum groupinfo "Backup Client" Chapter8.txt:3. Install using: Chapter8.txt:$ sudo yum groupinstall "Backup Client" Chapter8.txt:4. Identify a package group that’s currently installed on your system and that you don’t need. Remove it usingyumgroupremoveas in: Chapter8.txt:$ sudo yum groupremove "Backup Client" Chapter8.txt:Note you will be prompted to confirm removal so you can safely type the command to see how it works. Chapter8.txt:You may find that thegroupremovedoesnotremove everything that was installed; whether this is a bug or a featurecan be discussed. Chapter8.txt:課題 8.4;新しくyumレポジトリを追加する Chapter8.txt:🚩 Chapter8.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter8.txt:Exercise 8.4: Adding a New yum Repository Chapter8.txt:According to its authors (athttp://www.webmin.com/index.htm): Chapter8.txt:“Webminis a web-based interface for system administration for Unix. Using any modern web browser, you can setup useraccounts, Apache, DNS, file sharing and much more. Webmin removes the need to manually edit Unix configuration files like/etc/passwd, and lets you manage a system from the console or remotely.” Chapter8.txt:We are going to create a repository for installation and upgrade. While we could simply go the download page and get the current rpm, that would not automatically give us any upgrades. Chapter8.txt:1. Create a new repository file calledwebmin.repoin the/etc/yum.repos.ddirectory. It should contain the following: Chapter8.txt:webmin.repo Chapter8.txt:[Webmin] Chapter8.txt:name=Webmin Distribution Neutral baseurl=http://download.webmin.com/download/yum Chapter8.txt:mirrorlist=http://download.webmin.com/download/yum/mirrorlist Chapter8.txt:enabled=1 Chapter8.txt:gpgcheck=0 Chapter8.txt:(Note you can also cut and paste the contents from http://www.webmin.com/download.html.) Chapter8.txt:2. Install the webmin package. Chapter8.txt:$ sudo yum install webmi Chapter8.txt:知識チェック Chapter8.txt:「第8章 - yum」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter8.txt:クイズ開始 Chapter8.txt:問題 8.1 Chapter8.txt:yum install は、新しいパッケージをインストールするために使います。True or False? Chapter8.txt:A. True Chapter8.txt:B. False Chapter8.txt:問題 8.2 Chapter8.txt:yum updateは、引数としてパッケージを指定できません。True or False? Chapter8.txt:A. True Chapter8.txt:B. False Chapter8.txt:問題 8.3 Chapter8.txt:yum provides は、引数として指定されたファイルを含むパッケージの検索には使用できません。True or False? Chapter8.txt:A. True Chapter8.txt:B. False Chapter8.txt:問題 8.4 Chapter8.txt:yum searchは、パッケージ名と短い説明で検索ができます。True or False? Chapter8.txt:A. True Chapter8.txt:B. False Chapter9.txt:Zypper Chapter9.txt:はじめに Chapter9.txt:第9章はじめに Chapter9.txt:SUSEベースのシステムでは、zypperプログラムがrpmプログラムを使用するための高度で洗練されたサービスを提供し、Red Hatベースのシステムのyumと同じ役割を果たします。パッケージのインストール、更新、削除時に、依存関係を自動的に解決できます。外部ソフトウェア リポジトリにアクセスして同期を取り、必要に応じてソフトウェアを取得してインストールします。 Chapter9.txt:学習目標 Chapter9.txt:この章の終わりまでに、次のことができるようになります。 Chapter9.txt:zypperとは何かを説明できます。 Chapter9.txt:zypperを使用できるクエリについて説明できます。 Chapter9.txt:zypperを使用して、パッケージをインストール、削除、アップグレードができます。 Chapter9.txt:より高度で付加的なzypperコマンドについて精通します。 Chapter9.txt:zypper Chapter9.txt:zypperとは? Chapter9.txt:zypperは、SUSE LinuxとopenSUSEでパッケージをインストールおよび管理するための、高レベルのコマンド ライン ツールです。機能と基本的なコマンド構文もyumと非常によく似ており、rpmパッケージでも動作します。 Chapter9.txt:zypperは、リポジトリからパッケージを取得し、発生した依存関係を解決しながらインストール、削除、更新を行います。外部ソフトウェア リポジトリにアクセスして同期を取り、必要に応じてソフトウェアを取得してインストールします。 Chapter9.txt:Zypperのクエリ Chapter9.txt:次に、クエリを含む一般的な操作の実行例を見てみましょう。 Chapter9.txt:実行可能なアップデートのリストを表示する場合: Chapter9.txt:$ zypper list-updates Chapter9.txt:使用可能なリポジトリをリストする場合: Chapter9.txt:$ zypper repos Chapter9.txt:文字列でリポジトリを検索する場合: Chapter9.txt:$ zypper search Chapter9.txt:パッケージに関する情報をリストする場合: Chapter9.txt:$ zypper info firefox Chapter9.txt:リポジトリを検索して、どのパッケージがファイルを提供するかを確認する場合: Chapter9.txt:$ zypper search --provides /usr/bin/firefox Chapter9.txt:zypperによるパッケージのインストール/削除/アップグレード Chapter9.txt:次に、一般的に実行されるzypper操作の例を見てみましょう。 Chapter9.txt:パッケージのインストールまたは更新する場合: Chapter9.txt:$ sudo zypper install firefox Chapter9.txt:インストールまたはアップグレードするときに確認を求めない場合: Chapter9.txt:$ sudo zypper --non-interactive install firefox Chapter9.txt:これはスクリプトで使う場合に有用で、yum -yを実行するのと同じです。 Chapter9.txt:インストールされているすべてのパッケージを更新する場合: Chapter9.txt:$ sudo zypper update Chapter9.txt:引数としてパッケージ名を指定すると、それらのパッケージと必要な依存関係のみが更新されます。確認を求めずにこれを行う場合: Chapter9.txt:$ sudo zypper --non-interactive update Chapter9.txt:システムからパッケージを削除する場合: Chapter9.txt:$ sudo zypper remove firefox Chapter9.txt:yumの場合と同様に、削除するパッケージを必要とするパッケージも一緒に削除するため、削除コマンドには注意する必要があります。 Chapter9.txt:付加的なzypperコマンド Chapter9.txt:時には、複数のzypperコマンドを順番に実行する必要があります。コマンドごとにデータベース全体を再読み取りしないようにするため、次のようにシェル モードでzypperを実行できます。 Chapter9.txt:$ sudo zypper shell Chapter9.txt:> install bash Chapter9.txt:... Chapter9.txt:> exit Chapter9.txt:zypperはreadlineライブラリをサポートしているため、bashシェルと同じコマンド ライン編集機能をzypperシェルでも使用できます。 Chapter9.txt:新しいリポジトリを追加する場合: Chapter9.txt:$ sudo zypper addrepo URI alias Chapter9.txt:これは指定されたURIにあり、追加後は指定された別名(エイリアス)を使用します。 Chapter9.txt:リストからリポジトリを削除する場合: Chapter9.txt:$ sudo zypper removerepo alias Chapter9.txt:削除したいリポジトリの別名を使用します。 Chapter9.txt:/var/cache/zyppの領域をクリーン アップして保存する場合: Chapter9.txt:$ sudo zypper clean [--all] Chapter9.txt:デモ:YaSTの使用方法 Chapter9.txt:このビデオは、GNOMEインターフェイスを使用したOpenSUSEのパッケージ管理用のグラフィカル ツールの使用方法を示したものです。 Chapter9.txt:演習 Chapter9.txt:演習の要件 Chapter9.txt:これらの実習を行うには、SUSEやopenSUSEなど、zypperベースのシステムにアクセスできることが必要です。 Chapter9.txt:課題 9.1:zypper 基本コマンド Chapter9.txt:🚩 Chapter9.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter9.txt:Exercise 9.1: Basic zypper Commands Chapter9.txt:1. Check to see if there are any available updates for your system. Chapter9.txt:2. Update a particular package. Chapter9.txt:3. List all repositories the system is aware of, enabled or not. Chapter9.txt:4. List all installed kernel-related packages, and list all installed or available ones. Chapter9.txt:5. Install theapache2-develpackage, or anything else you might not have installed yet. (Note httpd is apache2 on SUSE systems.)Doing a simple: Chapter9.txt:$ sudo zypper search Chapter9.txt:will let you see a complete list; you may want to give a wildcard argument to narrow the list. Chapter9.txt:Solution 9.1 Chapter9.txt:1.$ zypper list-updates Chapter9.txt:2.$ sudo zypper update bash Chapter9.txt:3.$ zypper repos Chapter9.txt:4.$ zypper search -i kernel Chapter9.txt:$ zypper search kernel Chapter9.txt:5.$ sudo zypper install apache2-devel Chapter9.txt:課題 9.2: zypper を使って、パッケージの情報を得る Chapter9.txt:🚩 Chapter9.txt:以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ/タブが閉じます。 Chapter9.txt:Exercise 9.2: Using zypper to Find Information About a Package Chapter9.txt:Using zypper(and notrpmdirectly), find: Chapter9.txt:1. All packages that contain a reference tobashin their name or description. Chapter9.txt:2. Installed and availablebashpackages. Chapter9.txt:3. The package information forbash. Chapter9.txt:4. The dependencies for the bash package. Chapter9.txt:Try the commands you used above both asrootand as a regular user. Do you notice any difference? Chapter9.txt:Solution 9.2 Chapter9.txt:1.$ zypper search -d bash Chapter9.txt:Without the-doption only packages withbashin their actual name are reported. You may have to dozypper infoonthe package to see wherebashis mentioned. Chapter9.txt:2.$ zypper search bash Chapter9.txt:3.$ zypper info bash Chapter9.txt:4.$ zypper info--requires bash Chapter9.txt:will give a list of filesbashrequires. Perhaps the easiest way to see what depends on havingbashinstalled is to do Chapter9.txt:$ sudo zypper remove --dry-run bash Chapter9.txt:For this exercisebashis a bad choice since it is so integral to the system; you really can’t remove it anyway. Chapter9.txt:知識チェック Chapter9.txt:「第9章 - zypper」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。 Chapter9.txt:クイズ開始 Chapter9.txt:問題 9.1 Chapter9.txt:zypper install は、新しいパッケージをインストールするために使います。True or False? Chapter9.txt:A. True Chapter9.txt:B. False Chapter9.txt:問題 9.2 Chapter9.txt:zypper updateは、パッケージを引数として指定できません。True or False? Chapter9.txt:A. True Chapter9.txt:B. False Chapter9.txt:問題 9.3 Chapter9.txt: zypper what-provides は、引数として指定されたファイルを提供するパッケージの検索には使用できません。True or False? Chapter9.txt:A. True Chapter9.txt:B. False Chapter9.txt:問題 9.4 Chapter9.txt:zypper searchは、パッケージ名と短い説明で検索ができます。True or False? Chapter9.txt:A. True Chapter9.txt:B. False