Windows上でLinuxをインストール

Linuxを学ぶためにWindows端末でLinuxをインストールしました。
## １）PowerShellのアップグレード
#### Windows PowerShell
#### Copyright (C) Microsoft Corporation. All rights reserved.
#### 新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows
#### とメッセージがあったので、
#### PowerShell 7 をインストール（MSI パッケージのインストール）
#### (リンクURL)　https://learn.microsoft.com/ja-jp/powershell/scripting/whats-new/migrating-from-windows-powershell-51-to-powershell-7?view=powershell-7.4
## PS7をインストール後に、PowerShellでWSLを実行
![スクリーンショット 2024-03-27 180132.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587793/2d8f1b30-51f7-d678-51be-ebe27973b735.png)
#### 既定のLinux「Ubuntu」をインストール
![スクリーンショット 2024-03-27 180316.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587793/c0289937-976a-1409-7204-5600801bea2f.png)
![スクリーンショット 2024-03-27 180641.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587793/92fb0116-a63c-c8c3-c680-18193f5a645f.png)
#### 仮想マシンプラットフォーム、Linux用Windowsサブシステムがインストールされ、
#### インストール完了、再起動を実施。
#### 再起動後にパスワードを設定。
![スクリーンショット 2024-03-27 182157.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587793/687501cb-ef60-d06a-009b-34103f470491.png)
## Ubuntuを起動
![スクリーンショット 2024-03-28 132746.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587793/261384da-624b-edb1-83d3-3ec91dc37cbc.png)
![スクリーンショット 2024-03-28 090930.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587793/0d1e4c0a-b242-be22-e7d0-b2e33ab6432a.png)
#### lsコマンドでディレクトリを表示（Windows上のフォルダと見比べる）
![スクリーンショット 2024-03-28 101840.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587793/572dd13a-b05b-6eec-ac63-312ab7f62a97.png)

## 各ディレクトリの意味
### /bin
#### /binは、Binary Folderの略で、OSの最小限の正常な駆動のため、すべてのユーザーが使用する実行ファイルが入っているディレクトリです。つまり、基本的なコマンドが保存されたディレクトリで、cat、chmod、chown、cp、date、echo、kill、ln、ls、mkdirなどのプログラムが含まれています。
### /boot
#### /bootディレクトリは、Linuxの起動に必要なファイルが格納されているディレクトリです。 以下に詳細を説明します。
#### ブートローダーとカーネル:
#### ブートローダー（例：GRUB LegacyまたはGRUB2）は、カーネル（vmlinuz）とinitramfsをメモリにロードし、カーネルを起動します。カーネルはオペレーティングシステムの中核であり、ユーザーモードプログラムの実行を開始する前に使用されるデータを含んでいます。
#### /bootディレクトリの役割:
#### 起動時に不要な設定ファイルとマップインストーラを除いて、起動プロセスに必要なすべてがここに置かれています。カーネルがユーザーモードプログラムの実行を開始する前に使用されるデータも格納されており、保存されたマスターブートセクターとセクターマップファイルが含まれる場合があります。
### /dev
#### /devディレクトリは、Linuxのハードウェアデバイスを表すファイルが格納されている場所です。 以下に詳細を説明します。
#### デバイスファイル:
#### デバイスファイルは、ハードウェア機器（キーボード、マウス、プリンターなど）をファイルまたはディレクトリの形で表現するために用意された特殊なファイルです。これらのファイルは、標準入出力を介して読み書きでき、どのディレクトリからでもアクセスできます。
#### /devディレクトリの役割:
#### ハードウェアデバイスをファイルとして扱えるようにするため、キーボード、マウス、プリンターなどのデバイスファイルがここに存在します。例えば、フロッピーディスクを持っている場合、/dev/fd0ディレクトリのfd0にフロッピーディスクが対応しています。
### /etc
#### /etcディレクトリは、Linuxオペレーティングシステムの設定ファイルが格納されている場所です。 以下に詳細を説明します。
#### 設定ファイル:
#### /etcディレクトリには、システム全体の設定ファイルが含まれています。アプリケーションやサービスの設定ファイルもここに保存されます。
#### 主な特徴:
#### システム全体の設定: /etcディレクトリは、システム全体に影響する設定情報を管理するための場所です。例えば、ネットワーク関連の設定、アプリケーションの構成、ユーザーの設定などがここに格納されます。
### /home
#### /homeディレクトリは、Linuxユーザのホームディレクトリとして知られています。以下に詳細を説明します。
#### ホームディレクトリとは、基本的にユーザがログインした直後に配置される場所です。ユーザ作成時に「/home」の下に「ユーザ名のディレクトリ」が作成されます。「/home/<ユーザ名>」がホームディレクトリとなります。
#### ホームディレクトリの役割は、ユーザが自由にファイルやディレクトリを作成できる空間です。他のユーザは通常、あなたのホームディレクトリに変更を加えることができません。ホームディレクトリは、ユーザの個別の設定やファイルを保存する場所でもあります。
### /init
#### initは、Linuxオペレーティングシステムにおいてプロセス制御やランレベルの変更を行うコマンドです。 以下に詳細を説明します
#### initの役割:
#### プロセスの起動: initは他のプロセスを起動させる役割を持ち、全てのプロセスの親である。
#### PID 1: Linuxカーネルの起動後、initは最初に実行され、PID 1が付与されます。
#### initの種類:
#### SysVinit: 最初期のinitで、プロセスの起動を並列処理できないという欠点があります。
#### Upstart: SysVinitと完全な互換性を持ちながらも並列処理に対応していましたが、条件が揃うと無条件で起動/停止される可能性がありました。
#### Systemd: 起動を高速にし、設定をシンプルにすることを設計思想としている。Upstartとは異なり、必要なプロセスのみを起動できる作りになっています。主要なLinuxディストリビューションで採用されており、並列処理が可能です。
#### Systemdの起動の流れ:
#### 1. /usr/lib/systemd/systemdが起動されます。
#### 2. Unitの依存関係を検索し、有効化すべきUnitの一覧が作成されます。
#### 3. 一覧を基に、順序関係に基づいてUnitが順番に有効化されます。
#### 4. 順序関係を持たないUnitは並列に起動処理が行われます。
#### Unitとは:
#### Unitはサービスやソケット、デバイスなどをまとめたもので、設定ファイルによって自動起動するターゲットを設定します。
### /lib
#### /libディレクトリは、Linuxシステムにおいてライブラリファイルが配置されている場所です。 以下に詳細を説明します。
#### ライブラリとは:
#### ライブラリは、プログラミングを行う際によく利用するパーツをまとめたものです。標準的なライブラリは、プログラムやアプリケーションが共通して参照するバイナリファイルを含んでいます。
#### /libディレクトリの役割:
#### バイナリファイルの共有: /libディレクトリには、/binや/sbinのコマンドを実行するのに必要なファイルが配置されています。例えば、基本的なコマンド（ls、cp、cdなど）に必要なライブラリがここに含まれています。64ビットシステムでは、共有ファイルは別途「/usr/lib64」ディレクトリに存在します。基本的にユーザーは/libディレクトリを直接変更することはありません。
### /lost+found
#### /lost+foundディレクトリは、Linuxファイルシステムにおいて特定の目的で使用されるディレクトリです123. 以下に詳細を説明します。
#### 目的:
#### ファイルの保管: /lost+foundディレクトリは、ファイルシステムの整合性チェック（fsck）時に、ディレクトリ構造が壊れた場合に参照できなくなったファイルを保管するために使用されます。通常、ディレクトリ構造が壊れた場合、ファイルの対応関係が崩れてしまうため、これらのファイルはinode番号を基にして/lost+foundディレクトリにリンクされます。
#### ファイルの保存:
#### /lost+foundディレクトリに保存されるファイルは、fsckやファイルシステム用のチェックツールを使用して修復作業を行った際に発生します。これらのファイルには仮の名前が付けられ、iノードを基にして識別されます。
### /media
#### /mediaディレクトリは、Linuxにおいて一時的にマウントされるリムーバブルデバイス（外付けハードディスク、USBフラッシュドライブ、CD-ROM、DVDなど）のマウントポイントを提供するディレクトリです。外部装置をLinuxシステムに接続した際、そのデバイスは通常自動的にマウントされ、/mediaディレクトリの配下に配置されます。例えば、CD-ROMやUSBメモリなどがここに該当します。また、ユーザーのホームディレクトリはWindowsで言うところの「CドライブのUsersフォルダ」に相当し、Linuxでは「/home」ディレクトリ以下に配置されます。
### /mnt
#### /mntディレクトリは、Linuxにおいて一時的に他のファイルシステム（別のディスクやネットワークストレージなど）をマウントするためのディレクトリです。 以下に詳細を説明します。
#### マウントとは:
#### マウントは、外部の記憶媒体をLinuxファイルシステムの一部としてアクセス可能にするための方法です。例えば、USBメモリやCD-ROMなどが外部記憶媒体に該当します。
#### マウントポイント:
#### Linuxではドライブレターの概念はありません。代わりに、ファイルシステムのディレクトリツリーに「枝」を追加することで外部記憶媒体を利用します。一般的には「/mnt」または「/media」ディレクトリにマウントすることが多いです。
#### マウントとアンマウント:
#### マウントにより、記憶媒体の読み込みや書き込みが可能になります。アンマウントは必ず行うべき操作で、記憶媒体を安全に取り外すために必要です。実際には、Linuxデスクトップ環境ではUSBメモリを刺すと自動的にアイコンが表示され、ファイルの読み書きができることが多いです。しかし、CUI（コマンドラインインターフェース）での操作では手動でマウント操作が必要です。
### /opt
#### /optディレクトリは、Linuxにおいてアドオンアプリケーションソフトウェアパッケージをインストールするために予約されている場所です。 以下に詳細を説明します。
#### アドオンアプリケーション:
#### /optディレクトリには、システムにデフォルトで含まれていないソフトウェアパッケージや外部のサードパーティソフトウェアがインストールされます。これらのアプリケーションはシステムの一部ではなく、追加の機能を提供するものです。
#### 具体的な使い方:
#### パッケージファイル単体をdpkgやrpmでインストールする場合、通常は**/opt**にインストールします。可変ファイルは**/var/opt**、設定ファイルは**/etc/opt**に配置することが推奨されています。
### /proc
#### /procディレクトリは、Linuxにおいて仮想ファイルシステムとして機能し、プロセスに関連する情報やシステムのその他の情報（メモリ状況やCPU性能情報など）を保持しています。以下に詳細を説明します。
#### 仮想ファイルシステム:
#### /procディレクトリは、実際のファイルシステムではなく、ランタイム（プログラム実行時）のメタデータ（データに関するデータ）を保持している特殊な場所です。カーネル（OSの中核部分）が制御に使用する情報を提供します。
#### 起動とアンマウント:
#### OS起動時に「/proc」がマウント（ストレージ＝物理を、ディレクトリ＝論理）され、シャットダウン時にアンマウントされます。
#### ディレクトリの中身:
#### 共通的なファイル: プロセス共通ファイルには「meminfo」（メモリの合計・空き・バッファ・キャッシュなどの各種情報）や「cpuinfo」（CPUのプロセッサの型や性能情報など）が含まれています。PIDディレクトリ内のファイル: 各PIDディレクトリ内には、プロセスの情報を保持するファイルがあります（例：cmdline、cpu、cwd、environ、exe、stat、statmなど）
### /root
#### /rootディレクトリは、Linuxシステムにおいてルートユーザー（スーパーユーザー）のホームディレクトリです。 以下に詳細を説明します。
#### ルートユーザー:
#### ルートユーザーは、Linuxシステムにおいて最高の権限を持つユーザーです。通常、システム管理者やセキュリティ担当者がルートユーザーとしてログインします。
#### /rootディレクトリの役割:
#### ルートユーザーのホームディレクトリとして機能します。ルートユーザーはここにログインすると、システム全体の設定や管理作業を行うことができます。
### /run
#### /runディレクトリは、Linuxシステムにおいて実行中のプログラムのPIDファイルを格納する場所です。以下に詳細を説明します。
#### 目的:
#### /runディレクトリは、システムが起動してからシャットダウンするまでの期間（ランタイム）に利用される一時的なファイルを保管する場所です。主に実行中のプロセスに関する情報が格納された「pidファイル」が存在します。
#### PIDファイルとは:
#### プロセスID（PID）ファイルは、実行中のプロセスの識別子を格納するファイルです。これにより、プロセスの重複実行を防ぎ、プロセスの管理や監視が容易になります。
### /sbin
#### /sbinディレクトリは、Linuxシステムにおいて管理システムコマンドが格納される場所です。 以下に詳細を説明します。
#### 管理システムコマンド:
#### /binコマンドはrootユーザーでも使えるコマンドですが、/sbinコマンドは、通常環境パスが通っていないため、デフォルトでは一般ユーザーは使用できません。ここには、システム管理者が使用するシステム管理用のコマンドが保存されています。例えば、以下のコマンドが**/sbinディレクトリ**に格納されています:
#### ifconfig: ネットワークインターフェースの設定を表示・変更するコマンド
#### e2fsck: extファイルシステムのチェックと修復を行うコマンド
#### ethtool: イーサネットデバイスの設定を表示・変更するコマンド
#### halt: システムを停止するコマンド
### /snap
#### /snapディレクトリは、LinuxにおいてSnapパッケージをインストールするために予約されている場所です。以下に詳細を説明します。
#### Snapパッケージ:
#### Snapは、さまざまなLinuxシステムで動作するユニバーサルなパッケージ管理システムです。Snapパッケージは、最新のアプリやユーティリティをクラウド、サーバー、デスクトップ、およびIoT向けに安全に配布することを可能にします。
#### 具体的な使い方:
#### パッケージごとに個別のディレクトリにインストールされます。リビジョンごとに個別のディレクトリにインストールされるため、独立性が高く、他のパッケージやOSに影響を与えにくい仕組みです。
### /srv
#### /srvディレクトリは、Linuxにおいてサービスに関連するデータを格納する場所です。 以下に詳細を説明します。
#### FHS (Filesystem Hierarchy Standard)による定義:
#### /srvディレクトリは、サービスに関連するデータを格納するためにFHS（Filesystem Hierarchy Standard）で標準化されています。例えば、ApacheのDocumentRootやDBサーバーのデータ領域などをここに配置することができます。
#### 具体的な使い方:
#### ソースからApacheをインストールした場合、ドキュメントルートを**/srv**以下に置くことも可能です。
### /sys
#### /sysディレクトリは、Linuxにおいてシステムファイルシステム（sysfs）の一部であり、カーネルが管理するデバイスやドライバの情報を提供します123. 以下に詳細を説明します。
#### 目的と役割:
#### /sysディレクトリは、カーネルオブジェクトに関する情報とインターフェースを提供する特殊なファイルシステムです。Linuxカーネルが実行時にデバイスやドライバーなどのカーネルオブジェクトに関する情報を、ユーザースペースに公開するための手段として機能します。
#### 公開されている情報:
#### 主に以下の情報が公開されています:
#### 1. デバイス情報:
#### 各デバイスに関する詳細な情報が含まれています。デバイスの種類、状態、設定などが含まれています。
#### 2. ドライバーとのインタラクション:
#### ユーザーは/sysを通じてドライバーと対話できます。特定のデバイス機能を有効または無効にするために、ファイルを読み書きすることができます。
#### 3. カーネルパラメータの調整:
#### カーネルの動作を制御するためのパラメータも/sysを通じてアクセス可能です。システム管理者はランタイム中にカーネルの動作を微調整できます。
#### 階層構造:
#### /sysディレクトリは階層的な構造をしています。デバイス、バス、ドライバーなどによって整理された階層構造が公開されています。
#### 仮想ファイルシステム:
#### /sysは実際のファイルではなく、カーネルデータ構造へのインターフェースを提供する仮想ファイルシステムです。ここに存在するファイルは実際のディスクスペースを消費していません。
### /tmp
#### /tmpディレクトリは、Linuxにおいて一時的（temporary）なファイルを置くディレクトリです. プログラムが動作する際に一時的に利用するファイルを保存しておくなどの用途で利用されます。
#### このディレクトリは少し特殊な性質を持ちます。まず、システムのユーザであれば誰でも「読み書き」できるようになっています。read権限はともかく、write権限まですべてのユーザに与えられているのは珍しい存在です。ただし、/tmpディレクトリには「スティッキービット」が設定されており、作成したファイルやディレクトリを削除することができるのは作成者（所有者）だけという特殊な動作をします。そのため、作成したファイルを他のユーザー（プロセス）から削除されてしまうことがないようになっています。そして、システムを再起動すると、このディレクトリに存在するファイルはすべて消去されます。また、システムによっては一定期間アクセスがないファイルは削除されるようになっている場合もあります。
#### 「/tmpディレクトリ」は、基本的にはプログラムのためのディレクトリで、ユーザが利用するディレクトリとは考えられていません。特に、システム再起動時にファイルが残っていることを前提にすることができませんので、「消えてしまっては困る」というファイルはこのディレクトリには絶対においてはいけません。たとえ一時的に置いておくにしても、意図しない再起動が起こってしまったら消えてしまうことを忘れないようにしましょう。
### /usr
#### /usrディレクトリは、Linuxにおいて各ユーザーが共通して利用するプログラムやライブラリなどが置かれるディレクトリです. 以下に詳細を説明します。
#### 役割:
#### /usrディレクトリは、通常「ユーザーディレクトリ」と読まれますが、「ユーザーのディレクトリ」ではありません。ユーザーの個人的なファイルは/home配下のホームディレクトリに置くことが通例です。このディレクトリは、各ユーザーが共通して利用するプログラムやライブラリ、システム管理者向けのコマンドなどが格納されています。
#### サブディレクトリ:
#### /usrディレクトリのサブディレクトリにはさまざまなものがあります:
#### /usr/bin: ユーザが利用する一般的なコマンドの格納場所。
#### /usr/sbin: システム管理者向けコマンドやプログラムの格納場所。
#### /usr/lib: ライブラリの格納場所。
#### /usr/local: ローカルで管理するファイルの格納場所。
#### /usr/share: 共有リソースなどを格納するディレクトリ。
### /var
#### /varディレクトリは、Linuxにおいて変化する (variable)データを置くためのディレクトリです. 以下に詳細を説明します。
#### /varディレクトリの役割:
#### /varディレクトリは、システム運用中に生成されたり削除されたりする一時的なデータを保存する場所です。例えば、ログファイル、データベースキャッシングファイル、ウェブサーバーのイメージファイルなどがここに位置します。
## プロンプトを変更
#### 環境変数ファイル「.bashrc」のカラープロンプト部分を見て、ホスト名をプロンプトに表示しないように設定変更。
#### 行「PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@」の途中にあった「\h」を削除。
![スクリーンショット 2024-03-28 134459.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587793/77b948d4-f4a5-f44e-131c-7efc60fdb7d3.png)
![スクリーンショット 2024-03-28 134226.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587793/3bdcc87b-15b1-2417-22e2-e02d5cbe7b82.png)
以上です。
## 「なりたい自分の、その先へ」
### エンジニアファーストの会社、助け合いの共同体、ワークスタイルは多様、集まり帰る場所のある会社
## 株式会社CRE-COエンジニアリングサービス
### https://www.cre-co.jp/
### 伊藤 俊広
### 私たちと一緒に働きませんか？
### https://en-gage.net/cre-co/