search
LoginSignup

This article is a Private article. Only a writer and users who know the URL can access it.

More than 1 year has passed since last update.

posted at

updated at

Unix 環境構築概観

この記事は村松研 Unix チュートリアルのコンテンツです.

研究室での物理シミュレーションは,主に Unix 系 OS と呼ばれる OS が動く計算サーバで実行することになります.
ここでは,Unix サーバ接続の窓口とするため,ローカル環境で UNIX コマンド操作やプログラミングの練習をするために,あなたのパソコンに Unix 環境を構築してみましょう.

Unix 系 OS とは?

研究室では主に Unix 系 OS を扱うことになります.
環境構築を始める前に Unix・Linux(後述)とは何か,また,今後何度も見ることになるであろう他の重要な名称について軽く触れておきましょう.

UNIX(ユニックス)は,1969 年に AT&T 社ベル研究所で開発開始された OS です.
初期は無償でソースコードを提供していたため,学術機関を中心に広く使われるようになりました.

特に,カリフォルニア大学バークレー校で修正・拡張されたものは BSD (Berkeley Software Distribution) として知られます.
後に AT&T が UNIX のライセンスビジネスを始めると,BSD 中の AT&T 由来のソースコードを取り除いて再実装するプロジェクトが推し進められました.
その成果を基盤とし,現在でも使われる OS としては,オープンソースソフトウェア (OSS)(ソースコードが商用・非商用を問わず利用・修正・頒布が可能)である FreeBSD が有名です.

一方,同時期に Linus Torvalds が UNIX 互換な OS の核(カーネル)として,Linux(リナックス)を開発し,オープンソースソフトウェアとして公開しました.
Linux は,フリー(無料ではなく自由の意)ソフトウェア OS の開発を目的とする GNU(グヌー)(Gnu's Not Unix) プロジェクトで開発されたツール・ユーティリティ・ライブラリなどや,その他の団体・個人が開発したソフトウェアと組み合わせて,Linux ディストリビューションというパッケージの形で広く用いられています.
上記ソフトウェア類の組み合わせ方や,パッケージ管理システムの種類により様々な Linux ディストリビューションがあり,Debian(デビアン)とその派生である Ubuntu(ウブントゥ)や,Red Hat Linux とその派生である CentOS(セントス,セントオーエス)などが有名です.

現在では,"UNIX" という名称は商標として The Open Group に管理されており,この団体が策定した仕様に準拠していると認証されたシステムのみが UNIX と呼ばれます.
上記 Ubuntu,CentOS,FreeBSD など UNIX 準拠のほとんどのフリーソフトウェアは,認証費用が高額であることから認証を受けておらず,UNIX の名を使うことができません.
そのため,これら UNIX 準拠なシステムを指す名称として "Unix 系 (Unix-like, UNIX system-like) OS" が使われます.

ちなみに,Apple 社の macOS は Mach(マーク.BSD をベースに開発された.)カーネルと FreeBSD をベースに開発されており,The Open Group の認証も受けている UNIX です.

セットアップする環境の選定

計算サーバでは多くの場合 Linux が使われます.
2017 年 11 月のスーパーコンピュータ TOP500 リストでは,すべてのスーパーコンピュータが Linux を使っていたそうです.
筆者の身の回りの(スーパーコンピュータでない)サーバでは,特に CentOS を使っていることが多いです.

このような Unix 系計算サーバにアクセスして作業するには,手元に Unix 環境があると便利です.
Unix 環境を構築していない Windows からでもアクセスする方法はあるのですが,ローカル環境で Unix 操作(UNIX コマンド)やプログラミングの練習をすることも考えると,一度 Unix 環境を構築しておくのが良いでしょう.
構築の方法は,次の画像のようにいくつか考えられます.

セットアップする Unix 環境の選定
セットアップする Unix 環境の選定

Ubuntu ではなく他の Linux ディストリビューションを用いる,Cygwin ではなく MSYS+MinGW を用いるなど他の選択肢もありますが,ここでは省略しました.

Ubuntu は使いやすさを重視して開発され,デスクトップ OS として利用されることの多い Linux ディストリビューションです.
Unix 系 OS の操作に慣れてきたら,Ubuntu などを自分のパソコンに直接インストール(Windows や macOS との共存,デュアルブート・マルチブートを含む)することを考えてみるのも良いでしょう.
筆者は Arch Linux という Linux ディストリビューションをメイン OS として使っていますが,少なくとも大学生活では不自由を感じたことはありません.
Linux はサーバ用途のみならず,デスクトップ OS としても快適に使うことができます.

以下,画像中の選択肢に対応した,環境構築方法の解説記事へのリンク(一部)と簡単な説明です.
説明を確認したら,解説記事へ進んでセットアップを始めましょう.

  1. Ubuntu on WSL(解説記事)
    • WSL という機構を介して,Windows 上で一部の Unix 系 OS を動かすことができます(Windows10 のバージョン 1709 以降で利用可能な機能).
    • Windows のエディション・バージョンの確認方法は後述します.
    • Windows10 を使っている方にとっては,非常に手軽かつ(Cygwin のような)問題の少ない方法となりそうです.
  2. Ubuntu on VirtualBox
    • OS が動くコンピュータマシンをエミュレートする(仮想マシン)ことで,既存の OS 上で異なる OS を動かすことができます.
    • 仮想マシンのソフトとしては,VirtualBox や VMWare が有名です.
    • 他の選択肢と比べて必要なコンピュータリソースが大きい傾向があり,メモリの少ないパソコンでは,Web ブラウザとの同時実行などで動作が重たくなる可能性があります.
    • 筆者の経験上,画像中ではメモリが 4GB より大きいパソコンで利用推奨としましたが,4GB でも動きます.
    • お使いのパソコンのメモリサイズ(スペック)の確認方法は後述します.
    • Ubuntu よりも軽量な Lubuntu や Xubuntu などを用いるという手もあります.
  3. Cygwin
    • cygwin1.dll という動的リンクライブラリ(詳細略)を用いるよう,Unix 向けツールのソースコードをコンパイルすることで,Windows 上で Unix 向けソフトウェアを動かすことができます.
    • 多くの Unix ユーティリティが同様の仕組みのもと,すぐに使えるよう整備済みとなっています.
    • 上記の公式で整備済みのユーティリティ以外を使いたい場合,自分でソースコードからコンパイルすることになりますが,cygwin1.dll は Unix 完全互換ではないので,必ず動作する保証はありません.
    • 仮想マシン(VirtualBox など)と比べて軽快で使い勝手がいいですが,上記の点を含む Cygwin 固有のトラブルシューティングは,初心者には少々難しいかもしれません.
  4. homebrew の導入
    • macOS は何もせずとも元から Unix 環境ですが,C コンパイラ(XCode 環境)とパッケージ管理システム homebrew を導入します.

Windows における上記三点の環境の違いは,WSL を解説しているこの Web マンガがわかりやすいです.
興味のある方は確認してみると良いでしょう.

Windows のバージョン・スペックの確認方法

spec_version.png
Windows のバージョン・スペックの確認方法

  1. Windows メニューから設定ボタンをクリック
  2. 「システム」をクリック
  3. 「バージョン情報」をクリック
  4. 「デバイスの仕様」でスペック(「実装 RAM」がメモリサイズ),「Windows の仕様」でエディション・バージョンを確認できます.

Unix 環境構築を行う上で必要な前提知識・環境選定は以上です.
選んだ環境のセットアップを開始しましょう.

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up