2014年4月25日金曜日

Linux超初心者ためののLinux概要

※Linux初心者の著者が、さっきググった内容を、自分の中の整理のために
書き綴ったものです。信用ならない文章です。ちょこちょこ手直しします。

Unix系といわれるOSの中の一つのLinux。
「OS」自体の説明は、google先生に聞いてください。

OSの中心部(カーネル)の名前がLinux。
そこに色々なソフトウェアを付け足して実用性のある構成にまとめたのが「ディストリビューション」。

ディストリビューションは星の数ほど(?)あるけど、現在では主に
・Debian系(.deb形式で配布。Debian、Ubuntu、Linux Mint等)
・Red Hat系(.rpm形式で配布。Redhat、Fedora)
が二大派閥のよう。

Debian系は、方向性が「自由」という思想的な面を重視しているイメージで、
Red Hat系は企業のサーバや商業・プロユースとしての実用性を重視したイメージ。
個人的に。
私はプロではなくサーバを立てる訳でもないので主にDebian系に注目。

Debian系、特にLinuxMintを含むUbuntu系はLinuxの中では
非技術者の取り込みにも積極的に思える。

※著者はTubro LinuxとUbuntuとMintと大学の頃のUnixしか触ってないので
あくまでイメージです。


----------------------------------

ディストリビューションによる違いは、単に付属するソフトウェアの種類が異なる、というだけではありません。

・どのくらい最新の機能を取り入れるか?
という考え方一つとっても、チャレンジング・積極的・早期に取り組む立場のディストリビューションと
安定性を重視してじっくり取り組むディストリビューションがあります。
 
・バージョンアップとサポート
サポートというのは、商業的ソフトで言うところのサポートとは異なりますが、
問題が発見されれば修正を行う、という意味合いで考えればいいと思います。
AというディストリビューションのXというバージョンのサポートが半年なのであれば、
半年たてばそのバージョンに対する修正は打ち切るという事。

Ubuntuなどは、半年に一回、メジャーアップデートがあり、
メジャーアップデート前のバージョンから後のバージョンにする場合は
OS自体をインストールし直す事が推奨 らしいです。
サポート期間はそのバージョンのリリースから9ヶ月との事なので、
まあ半年に一回はOSをインストールし直す、という事になりそう。

それが大変で嫌だ、という人の為に、2年に1度だけロングタイムサポート(LTS)版というバージョンが
リリースされて、これは5年間サポートされるとのこと。
でも、半年後にリリースされるであろう、 LTSではない最新バージョンに移行してはいけない事になり、最新機能は使えなくなる。

どのディストリビューションもこういう手法というわけではなく、WindowsXPのように、
細かいバージョンアップを繰り返していれば長く使える方向性のものもあります。


----------------------------------

他にも、ディストリビューションによってコミュニティの活発さに違いがあります。通常のディストリビューションには、メーカーの問い合わせ窓口に相当するものが無いわけで、インターネット上のコミュニティが活発かどうかは初心者にとって重要です。既に多くの情報がインターネット上に載っているディストリビューションなら、それがそのままFAQになるでしょう。


-----------------------------------

ディストリビューション自体による分類とは別に、採用されているGUIによる区分もあります。
※GUIとは、グラフィカル・ユーザ・インターフェイスの略。
大雑把にいうと、マウスやタッチパネルでコンピュータを操作できるようにしてくれているソフトウェア。
逆に、CUIとかCLIと呼ばれる、キーボードから文字でコンピュータに命令を送る操作方法もあります。Linuxを使う場合、WindowsよりCUIを使う場面が増えるでしょう。


今では
・Gnome系
・KDE系
なんかが主流のようです。
「系」としているのは、そこから派生しているGUIがあるからです。
今人気のLinux Mintがデフォルトとして採用しているMATEは、Gnome系です。

Windowsと違って、ユーザインターフェースがOSと明確に分かれています。
Windowsみたいなユーザインターフェースもあれば、スマートフォンのようなものもあります。
ディストリビューションによっては、複数のGUIからユーザが選択できるものもあります。
やろうと思えば自力でGUIを変更することも可能です。

各GUIでGUIソフトを楽に作るためのライブラリ(プログラムの部品みたいなもの)も提供されていて、多くのソフトがそれらを使って開発されています。
逆にそれが原因で他のGUIでは使えなかったりするソフトもあるようです。
同じディストリビューションだけど、選んだGUIが違ったから動かないソフトが有るということ。 

最近はUbuntuという有名ディストリビューションがUnityというGUIに変更して大ヒンシュクのようです。


---------------------


多くのディストリビューションは64bitバージョンと32bitバージョンを提供しています。
利用可能かどうかは主にCPUに搭載されている機能に依存するようです。
64bit版を利用するメリットは、搭載メモリが多いほうが大きく、搭載メモリが少ないなら
CPUが対応していても32bit版を使ったほうが幸せとか・・・
64bit版/32bit版のどちらを使うかのメリット・デメリットは単純ではないようなので、
別途google先生にきいてみてください。



誰かに質問する時には、
ディストリビューションとバージョン
GUIに関係する場合はGUI名称
64bitか32bitか
を明記したほうが話が早いでしょう。

--------------------

1.端末 または Terminal
「端末エミュレータ」「ターミナルエミュレータ」と呼ぶべきものだと思いますが、「エミュレータ」部分は省略されるようになったのでしょう。
かつて、巨大なUnixホストコンピュータ(画面もキーボードもついていない) に、画面とキーボードだけの
「端末」を多数接続して、ホストコンピュータへの指示入力や結果の表示を行っていました。
これは完全に文字と数字だけの世界だったわけです。CUIというやつです。
マルチウィンドウでもなかったのです。

「端末」という機能は、現代のマルチウィンドウの中に、この昔の端末をエミュレート(再現?)するものでしょう。

ちなみにWindowsでは「コマンドプロンプト」という名前で登録されていますが、
これもおかしいと思います。
コマンドプロンプトとは、端末の中で、コンピュータがユーザからの指示待ちになったときに表示する
$
のような記号です。設定によっては、$の前に現在ログインしているユーザのIdを表示したり、
現在いるディレクトリを表示することも可能です。とにかく、コマンドプロンプトは$です
※設定で他の文字にも変えられます。

「コマンドプロントが表示されているときは、コマンドを受付可能な状態である」という定義なので、
あまり乱暴な使い方をすると話が通じにくくなるでしょう。


2.HDDやUSBのドライブレター的なもの(WindowsでいうC:的なもの)

昔ながらのIDE接続のHDDの場合、
hda
hdb
hdc
というように、hd*という名前が振られて行きます。
今のWindowsでは、複数のHDDをつないでどれがプライマリとかセカンダリとか
マスタとかスレーブとか気にしないかもしれませんが、
Linuxではプライマリ・マスター→プライマリ・スレイブ→セカンダリ・マスター
の順番で・・・要するに、パソコンの中でどこの端子に接続されているかで
abcdが振られていくので重要です。

パーティションは、HDDの名前の後に番号が振られます。
番号の振られ方は、1〜4は基本パーティション専用番号として確保されているようで、
論理パーティションは5以降の番号を振られる(多分)

今どきのS-ATA接続のHDDの場合、
sda
sdb
sdc
というように、sd*という名前が振られていきます。以下略。

※本来、このsd*という名称は、S-ATA接続デバイス用ではなく、
SCSI接続という別のタイプのHDD用の名称のようです。
なので、Linuxの説明を読んでいるとちょっと混乱する事があります。
今の所深く考えるのはやめておきます。


3.マウント、マウントポイント、ディレクトリ
Windowsと大きく異なるHDDの取り扱い。
Windowsでは、HDDの中に、ディレクトリ(フォルダ)構造がありました。
HDD毎に、一番上のディレクトリがありました。
※フォルダ=ディレクトリと思って大差ないと思います。

Linuxでは違います。

大きな一つのディレクトリ構造があり、HDDやパーティション、その他の記憶デバイス等を
ディレクトリに割り当てていきます。
ディレクトリの一番上は/ディレクトリ(rootディレクトリ)であり、HDDが沢山あってもこれは一つ。
すべてのディレクトリは、/ディレクトリ以下に作成されます。
それらを全部同じHDDやパーティションに作成してもいいわけですが、
下位のディレクトリを別のHDDやパーティションに割り当てる事も可能です。

割り当てるディレクトリを「マウントポイント」と呼びます。

sdaというHDDがあって
sda1
sda2
と2つのパーティションに区切っている場合、
/ディレクトリをsda1に割り当てることで、基本的にすべてのディレクトリはsda1パーティションに作成されますが、
「/hoge/hogehoge/ディレクトリはsda2に割り当てる」というような設定を行うと、
そのディレクトリとその配下のディレクトリはsda2に作成されます。
この場合、sda2を/hoge/hogehoge/というマウントポイントに割り当てた事になります。

WindowsでOS・アプリをインストールするパーティションと、データを保存しておくパーティションを分けている人がいると思いますが、似たような思想でしょう。
または、ディレクトリによってアクセス頻度が違ったり、ランダムアクセスが多かったり少なかったりする事が想定できる場合、
ハードウェアの得手不得手を踏まえて割り当てを行う事もあり得るようです。
SSDなんかはHDDよりランダムアクセスが早い反面、極端に沢山書き込みを行っていくと寿命が短いとか、そういう特徴を考慮できるという事でしょう。

ディレクトリ構造が1つであるため、Windowsのようにドライブレターは普段はあまり出てきません。


4.パッケージ
ソフトウェア本体と、付属する必要なファイルを梱包したセットのようなもののようです。
セットの中に何が必要かのルールがWindowsより厳密に保たれています。
パッケージはいくつかの形式があり、ディストリビューションによって採用している形式が異なります。

5.リポジトリ
インターネット上でソフトウェアを配布している場所・・・ですが、Windowsでのそのイメージとは異なります。
スマホのgoogle playやapp storeに近いイメージです。
ディストリビューション公式のリポジトリがある他、その他の非公式リポジトリや、
プロジェクト別のリポジトリがあるようです。
どのリポジトリを登録しているかによって、使えるソフトウェアが異なったりもします。
開発版ソフトを配ってるリポジトリ、安定版ソフトを配ってるリポジトリ、のようなケースもあるようです。
 リポジトリをOSに登録して、そこからソフトをインストールした場合、インストール、バージョンアップ、アンインストールまでパッケージ管理システムのようなものによって
ちゃんと管理され、ぐちゃぐちゃになりにくくなっています。










0 件のコメント:

コメントを投稿