Envaderを利用して、システムの確認方法、OSのバージョン確認について学んだ。

30代後半、未経験からIT業界のエンジニア転職へ挑戦している、kobakichiです。

今回は、環境構築が不要で、オンラインでLinuxについて学べるオンライン学習サービス、Envaderを利用して、OSのバージョン確認方法について学んだのでその振り返りとまとめです。

Envaderについて気になる方がいましたら、リンクを貼っておきますので参考までに。。

[Envader](https://envader.plus/)

[コース一覧](https://envader.plus/course)

[今回使用したシナリオ](https://envader.plus/course/1/scenario/1010)

## 記事の概要

この記事では、`uname`コマンドとそのオプション、またその他のOSのバージョン確認の方法についてEnvaderを通して自分なりに解釈したことをまとめました。
未来の自分へ向けて、必要な時にすぐに思い出せるように。。。。


## OSのバージョン確認とは。

まずコマンドの使い方などに触れる前に、OSとは何なのか？OSのバージョンとはなんなのか？について考えます。

### OS(Operating System)
> OSとは、ソフトウェアの種類の一つで、機器の基本的な管理や制御のための機能や、多くのソフトウェアが共通して利用する基本的な機能などを実装した、システム全体を管理するソフトウェア。

[IT用語辞典様より引用](https://e-words.jp/w/OS.html)

OS自体もソフトウェアの一種なんですね。
キーボードやマウス、RAM(Random Access Memory)、外部記憶装置(ストレージ、ディスク、HDDなど)の管理などを行なっていて、電源を入れると最初に起動するのがOSなのか。ふむふむ。

つまりこうやって文字をキーボードから入力できているのもOSさんのおかげということですね！

### OSには種類がある
OSは一つだけしか無い。というわけではなく、複数の種類が存在している。

- Windows
- macOS
- UNIX
- Linux
- iOS
- iPadOS
- Android

などなど。
記事を検索している中で、iPadOSなんてものの存在を初めて知りました。
ただOSと言っても、このほかにもまだまだあるみたいなので、種類だけでもたくさんあるんだな〜と改めて感じています。

### OSのバージョンとは
OSにはたくさんの種類がある事は分かりました。
では、`uname`コマンドを使って確認しようとしている、OSのバージョンとは何なのか？について少し深掘りです。

#### OSのバージョンの例
分かりやすいであろうWindowsのOSを見てみると、

- Windows 2000（2000年）
- Windows XP（2001年）
- Windows Vista（2006年)
- Windows 10（2015年）
- Windows 11（2021年）

なるほど。良くパソコンで表示されている、Windows~というのがOSのバージョンなのか。

これがある事によって、Windows2000で動いていたアプリケーションが、Windows11では動かない。と言った事が起こり得るため、バージョンの確認が必要になる場面があるという事なんですね。

## unameコマンドでシステム情報を表示してみる

`uname`コマンドは、システム情報を表示するコマンドです。

実行してみました。

```bash
envader@172-19-1-2:~$ uname
Linux
```

このように、`uname`コマンドだけだとOSのカーネル情報のみが出力されるみたいで、バージョンの確認まではできません。
ではどうするか？ですが、`uname`コマンドにオプションを付けて実行する事で、バージョン確認やCPUの種類などが確認できます。

### unameコマンドのオプション

`uname`コマンドのオプションを見ていきましょう。

#### -a(all)
全てのシステム情報を表示する。

```bash
envader@172-19-1-2:~$ uname -a
Linux 172-19-1-2 5.4.120+ #1 SMP Fri Jul 23 10:06:55 PDT 2021 x86_64 GNU/Linux
```

まとまって表示できるのは嬉しい気がするけど、実際何が書かれているのか理解しづらい。
このallで表示した内容を細かく切って表示していくのが次から実行していくオプションになるのでしょう。

#### -v(kernel-version)
カーネルのバージョンを表示する。

```bash
envader@172-19-1-2:~$ uname -v
#1 SMP Fri Jul 23 10:06:55 PDT 2021
```
カーネルが#1SMPでFri Jul 23 10:06:55 PDT 2021にコンパイルされたもの、と読むらしい。

#### -r(kernel-release)
カーネルのリリース情報を表示する。
```bash
envader@172-19-1-2:~$ uname -r
5.4.120+
```
カーネルは5.4.120+としてリリースされたもの、と読むらしい。

#### -p(processor)
コンピューターのCPU情報を表示する。
```bash
envader@172-19-1-2:~$ uname -p
unknown
```
Envaderでは環境の理由でかどうか分かりませんが、unknownと表示されたので、自分のpcで確認してみる。
```bash
) uname -p
i386
```
自分のPCには、i386系のCPUが搭載されている事が分かりました。
Intelのx86（当時16bit）を32bitに拡張したCPUとのこと。
ちなみにiはインテルのiみたいで、386系は若干古いやつみたい。
少しショックです。。。。

#### -m(machine)
コンピューターのマシンタイプの情報を表示する。
```bash
envader@172-19-1-2:~$ uname -m
x86_64
```
x86・x64はCPUのbit数を表していて、
x86→32bit
x64→64bit
という意味になるみたい。
こちらの記事が分かりやすかったです。
[x86_64 とは？](https://qiita.com/miyuki_samitani/items/d6cf512b17010e97cfb4)

#### -n(nodename)
ホスト名を表示する。
```bash
envader@172-19-1-2:~$ uname -n
172-19-1-2
```
@の次からホスト名なので、上記の表示になるということか。

## catコマンドでOSのバージョンを確認する。
OSのバージョンを確認するには、catコマンドを使い、`/etc/os-release`を表示させます。

```bash
envader@172-19-1-2:~$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
VERSION_CODENAME=stretch
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
```

Debianだと、`/etc/debian_version`でバージョン情報を表示できるみたいです。

```bash
envader@172-19-1-2:~$ cat /etc/debian_version
9.13
```

## まとめ

今回は、OSのシステム情報と、OSのバージョンを確認する方法を学びました。

正直、`uname`コマンドと`etc/os-release`では同じことをしていると認識していたのですが、`uname`ではシステム情報を表示させて、`etc/os-release`ではOSのバージョンを確認していて、それぞれ役割が違うんだなと認識しました。

最後まで読んでいただき、ありがとうございました。

## 参考にさせていただいた記事一覧

[パソコンのOSとは？OSの種類と自分のパソコンのOSの調べ方
](https://www.4900.co.jp/smarticle/7128/#3Windows)

[OS 【Operating System】 オペレーティングシステム / 基本ソフト](https://e-words.jp/w/OS.html)

[ITスキルとアプリケーション](https://ja.wikibooks.org/wiki/IT%E3%82%B9%E3%82%AD%E3%83%AB%E3%81%A8%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3)

[unameコマンドの使い方：オプション含めてまとめました 【Linuxコマンド集】](https://eng-entrance.com/linux-command-uname)

[i386って何？](https://linuc.org/study/knowledge/332/)

[CPUのアーキテクチャの違いまとめ（x86/x64/x86_64/AMD64/i386/i686とはなんなのか？）](https://blog.framinal.life/entry/2020/04/22/041548#i386%E3%81%A8%E3%81%AF)

[x86_64 とは？](https://qiita.com/miyuki_samitani/items/d6cf512b17010e97cfb4)

[Linuxのバージョンの確認方法](https://qiita.com/bezeklik/items/5edb638becd8858abb80)

[Linuxディストリビューションの種類やバージョンを確認する](https://qiita.com/yamada-hakase/items/e8f2f9a26bfd763dd274)

[Linux OSのバージョン確認方法まとめ
](https://linuc.spa-miz.com/2021/03/18/linux-os-version-confirmation-method/)