UNIXやLinuxのシステム管理(システム・コマンド・設定)に関する世界観1(OS)です。
Linuxは、オープンソースで開発されている、UNIX互換OSです。
UNIXと同様にC言語で開発されており、Windowsのようにバイナリ(プログラムの動作に必要)だけではなく、ソースコード(人間がプログラムを開発するために必要な、人間の理解できるおおもとの設計図としてのプログラム)が公開されています。そして、このソースコードは自由にコピーや再配布ができます。誰でもこのコードをネットで配布できるため、多くの場合無料です。
UNIXとは、コンピュータのOSとしては伝統的なOSで、マルチタスク・マルチユーザーのタイムシェアリングシステムとして知られています。開発の早くからマルチタスクで設計されており、安定や信頼性が高く、サーバーやワークステーションのように「多くの人々とネットワークで接続して動作する」という優位性に長けています。
UNIXはAT&Tによって「シンプルなOS」として開発され、当時のAT&Tが独占禁止法のためにコンピュータ業界への参入を禁じられており、パブリックドメインでソースコードを公開したことから大学や研究所のミニコンやワークステーションなどに爆発的に普及しました。その後カリフォルニア大学バークレー校のBSDなどを経て改良されましたが、独占禁止法が解除されたためにパブリックドメインではなくなりました。結果、GNUなどがフリーなUNIXのクローンを開発することを目指し、BSDからAT&Tの権利のあるコードを書きなおしたPC用のBSDなども開発されましたが、それらがなかなか提供されず、MINIXという教育用のUNIX互換OSを使っていたリーナス・トーバルズが、MINIXを改良し、リーナスが書いたコードだけで全ての部分が動くモノリシックカーネルに成長し、GNUと組み合わせることで完全にフリーなOSとなりました。Linuxはさまざまなネット上の善意の貢献者によってボランティアで開発され、Red Hatなどの企業も参入して、今日に至ります。
Linuxでは、ほとんどのソフトウェアがオープンソースで、多くのディストリビューション(Linuxカーネルとさまざまなソフトウェアを合わせてひとつのOSとして動くようにした、Linuxの配布・提供版)ではパッケージ管理システムから、簡単にコマンド操作で新しいソフトウェアを導入することができます。
パッケージ管理システムは上手くできていて、リポジトリと呼ばれるサーバー上のパッケージの提供場所で配布され、すでにコンパイルされており全ての必要事項(インストールや設定や依存関係の解決のための事前準備)が整っています。Debianではapt、Fedoraではdnfで簡単に公式のリポジトリからパッケージを導入できます。また、コマンド一発で全てのパッケージをリポジトリに公開される最新版に更新できます。
ほとんどのソフトウェアがオープンソースであるため、自分の手で開発することがとても簡単です。このため、良く「ハッカーのOS」と言われます。このハッカーとは、システムを破壊し不正に侵入する「クラッキング」を行う悪意あるハッカーではなく、システムを自分の手で作り変え、とても高度なことを実現する「善意のハッキング」をする人を指します。
オープンソースも参照のこと。
UNIXはそもそもがコマンドラインでの操作を念頭に置いており、Linuxでも本当のLinuxのパワーを発揮する現場はコマンドラインです。
Linuxではcp, ls, mkdir, cdなどのコマンドと、BashやTcshのようなシェルを使うことで、コマンド操作でプログラムを実行できます。このメリットは、「プログラム自体が単純になる」、「スクリプトなどで自動化しやすい」、「ネットワークからリモート操作をSSHのようなリモートログイン操作で行うことができる」、「GUIのウィンドウシステムからもターミナルと呼ばれるソフトウェアで簡単にコマンド操作ができる」などがあります。
UNIXの考え方として、「システムは単体のプログラムではなく複数のプログラムの関係から生まれる」というものがあります。このため、ファイルシステムや入出力とともに、パイプやリダイレクトのような機能を使うことで、「簡単にコマンドとコマンドを組み合わせて操作する」ことができます。
BashやUNIXコマンド(基本)も参照のこと。
Linuxの基本はコマンド操作ですが、現代的なOSとしてはコマンドと文字だけのOSというのは考えられません。ディスプレイに表示されたウィンドウをマウスで操作しながら、プログラムを目で確認しながらクリックやキー入力で操作したいでしょう。
Linuxには、こうしたGUI操作を実現する「ウィンドウシステム」と呼ばれるソフトウェアとして、X11という機構があります。Linuxの上でX11サーバーを動かし、Xサーバーをマウスで操作しながら、Xクライアントと呼ばれる、Windowsで言えばWindowsアプリケーションに当たるGUIプログラムを操作することができます。
ただし、X11にはWindowsのような「標準的なGUI」は存在しません。Linuxでは、X11をコアの機構として導入しながら、さまざまなデスクトップ環境やウィンドウマネージャを試すことができます。主なデスクトップ環境には、GNOME, KDE, Xfce, LXDE, LXQt, MATE, Cinnamonなどが存在します。また、ウィンドウの部品(スクロールバーやメニューボタンなど)も、X11の素の状態では提供されていません。こうした部品はウィジェット・ツールキットと呼ばれます。GNOMEではGTK, KDEではQtと呼ばれるツールキットを使います。
Linuxにはコマンドのプログラムも多いですが、X11を用いたGUIのプログラムも意外と多いです。良く使われるものに、WebブラウザのMozilla Firefoxや、OfficeソフトウェアのLibreOffice、イラスト・デザインソフトウェアのGIMPやInkscapeなどがあります。
X11やデスクトップ環境/ウィンドウマネージャも参照のこと。
Linuxを使う上で、一般的に使われるぐらい優れたソフトウェアはサーバーです。サーバーとは、Webブラウザなどでインターネットを見る時に、自分の側にあるソフトウェアがWebブラウザだとするなら、Webサイトの相手側にあるソフトウェアをWebサーバーと呼びます。
サーバーにはWeb以外のサーバーもありますが(たとえばファイルサーバーのNFSやSamba、メールサーバーのPostfixなど)、Linuxで良く使われるのはApacheやNginxと呼ばれるWebサーバーです。このWebサーバーに加えて、スクリプト言語であるPerl/PHP/Python/Rubyや、データベース管理システムであるMySQL/PostgreSQLが良く使われます。最近はRails/Django/LaravelのようなWebフレームワークや、Node.jsなどJavaScriptによる最先端のソフトウェア基盤、あるいはコンテナ・仮想化技術であるDockerやKubernetesなどが良く使われます。
Linuxはこうしたサーバーとネットワークのために良く使用されています。その理由は、コマンドラインのOSであるため、GUI機能を導入しなくて良く、またUNIX系のOSであるため安定性や信頼性に優れており、UNIXのツール(たとえばviやsed)を使うことでシステムの管理がしやすいから、などの理由です。UNIXはそもそもが端末とメインのコンピュータを分けて使うことを想定しており、シングルタスクのDOSをベースとしたWindowsと違って早くからマルチタスクを取り入れているため、並列的なネットワーク処理に優れています。
WebサーバーやファイルサーバーやメールサーバーやRDBMSや仮想化も参照のこと。
Linuxは、パソコンで動くWindows以外のOSを「少し触ってみたい」という方にもおすすめです。特に、最近のLinuxは初心者向けになっており、複雑な設定ファイルをいじらなくても、自動認識と自動設定、そしてGUIからの設定ツールで多くのことができるようになっているからです。
また、プログラミングの勉強がしたい方にも向いています。それは、開発ツールも無料で手に入るからです。Windowsのネイティブアプリケーションを作るためには、Visual Studioという高価なソフトウェアを購入しなければなりませんが、LinuxではGCCなどが無料かつオープンソースで手に入ります。
また、「Windowsをただ使うだけではなく、新しいOSを入れてカスタマイズしたい」という方にも向いています。先に書いたデスクトップ環境以外に、X11のウィンドウマネージャをカスタマイズすることができます。LinuxにはEnlightenment, Window Maker, Openbox, FVWM, JWM, タイル型ウィンドウマネージャなどの面白いウィンドウマネージャがたくさんあり、これらはGNOMEやKDEの代わりに使うことができます。
それから、「Linuxの独特の雰囲気に触れてみたい」という方にもおすすめできます。たとえば、GNOMEアプリケーションやKDEアプリケーションでは、ウィンドウマネージャだけではなく、それぞれの独自のGUIアプリケーションを開発しており、それぞれのプロジェクトで雰囲気が違います。特に、KDEアプリケーションには、ウィンドウマネージャだけではなく、「あらゆるアプリケーションをありったけ開発している」という特徴があり、それぞれのKDEアプリケーションを触りながら、簡単に開発に参加できます。
Linuxディストリビューションも参照のこと。
Linuxには、けっこう覚えることは多いです。コマンドについては基本的な考え方やオプションを知る必要がありますし、デバイスファイルやマウントなどを中心とするファイルシステムの考え方や、カーネルとユーザーランドの違い、設定ファイルの記法、ログや監視機構、あるいはシステムコールの記法なども覚えなければ、本当の意味でLinuxのマスターにはなれません。
ですが、実際のところ、Linuxはそうした部分が面白いのです。そうした部分を知れば知るほど、どんどんLinuxの世界にはまっていって、病みつきになります。
ある意味、ディストリビューションによってシステムのさまざまなことが変わってくる、というのも、難しいとは言えますが、逆に面白いです。FedoraやDebianでやっていたことが、GentooやArchでは全く違います。同じソフトウェアを動かすのであっても、パッケージやシステムの関係からやり方が全く違ってきます。
また、エンジニアの開発に使うのであれば、C/C++, Java, Perl, Python, Rubyなどの絶好の「練習用プラットフォーム」になります。言語だけではなく、gitやmakeなどの開発ツールについても同様で、絶好の実験台になるでしょう。
OSというのはカーネルが中心にあり、それ以外のソフトウェアは多くがカーネルと協調して動きます。Linuxはモノリシックカーネルですが、優れたスケジューラやプロセス管理機構、仮想メモリ管理機構、ファイルシステム、ネットワーク、そしてデバイスドライバなどのカーネル由来の機構があります。本当にハードウェアに近いところを触りたいのであれば、Linuxカーネルはその練習機会を与えてくれるでしょう。ですが、素人には簡単には難しく、MINIX本のようなリーナス・トーバルズが読んだ本などを勉強する必要があります。
GNUツールチェイン、Make、Emacs、vi、Git、C、Pythonなども参照のこと。
自分の書いたブログ「わたしの名はフレイ」2020/10/31より。
最近のLinuxでは、並列処理を行うことの難しいinitに代わってsystemdがよく使われている。
Linuxのコマンドラインインターフェースでは、シェルとしてbashを使い、grep, find, xargs, sed, awk, viのようなコマンドを用いてテキストストリームの編集や検索を行うことができる。
ほかのファイルシステム操作関係のコマンドとしてはmount, fdisk, parted, mkfs, mkswap, du, df, dd, rsync, tar, chrootなどがある。
また、ネットワーク関係のコマンドとしてはifconfig, iproute2, netstat, route, traceroute, nslookup, ping, sshなどがあり、モニタリング系のコマンドとしてはtop, iostat, vmstat、プロセス表示・強制終了コマンドとしてはpsやkillなどがある。
また、ネットワークファイルシステムとしてNFS、SambaやFTPサーバ・クライアントソフトウェアが利用できる。WebサーバソフトウェアにはApacheとNginxがある。定期的にコマンドを実行するソフトウェアとしてはcronが知られる。
GNOME 2については、GNOME 3の大幅なユーザーインターフェースの変更に否定的かつ旧来のインターフェースを支持するユーザによってMATEが派生している。同様のKDE 3から派生したTrinityがある。
LinuxはWindowsとは違ってコマンド主体のOSであり、操作もGUIだけではなくコマンドラインやプレーンテキストの設定ファイルなどを駆使して行うが、こうした「Windowsとの違い」はWindowsしか知らない現代のパソコンユーザーには興味深い。そのため、「純粋に楽しみのためにLinuxを使う」という層はいくらか居る。特にLinuxはオープンソースのOSであり、コストをかけることなく導入することができる。そのため、「試しに使ってみたらけっこう面白かった」「コマンドで操作するのはGUIとは違った面白さがある」といったホビイストのLinux愛好家は多い。特にリーナス・トーバルズなどを中心にインターネット上で開発されているOSであるため、「ネットのLinux関連の情報やニュースに詳しくなる」という楽しみ方が存在し、オープンソースであることなどからOS内部の仕組みを知ることが容易で、「どんどん詳しくなってどんどん深みにはまる」という面白さがLinuxにはある。
GPLでライセンスされていることにより、GPLを守る限りにおいて、Linuxのソースコード(プログラムとして記述されたソフトウェアの設計図)の改変・コピー・再配布が許される。ソースコードが公開されていることにより、誰もがLinuxのプログラム内容を閲覧することができ、編集して自分なりに書き換えた後に実行することも、編集後の結果をインターネット上で発表し、パッチを公開することもできる。しかしながら、GPLにおいては、配布する際にソースコードを必ずユーザーに公開する必要がある。また、少しでもGPLソフトウェアのソースコードを用いて開発したソフトウェアは、GPLでライセンスしなければならない。これを「継承条項」あるいは「コピーレフト」などと呼ぶ。こうしたGPLの特性のため、Linuxカーネルのソースコードを第三者が「自分のものにする」ことはできず、同様のGPLライセンスが半永久的に保たれ続ける。つまり、永久にLinuxカーネルは自由にコピー・改変・再配布が可能なままとなる。こうしたGPLの特性は、「ウイルスのようだ」といって批判されることも少なくないが、GPLを裁定しているFSFやGNUプロジェクトは、X Window SystemのMIT/Xライセンスのような緩いライセンスでは、永続的に自由を保つことができず、そのためもともとのXがフリーであったにも関わらず、多くのUNIXではXはフリーではなかったなどと説明している。
また、オープンソースには「無保証の原則」がある。これは、「無償でどんなに自由に使っても構わないが、きちんと動くかどうか保証はしない」というものである。よって、作る側ではなく使う側に責任があり、どんなに劣ったソフトウェアであっても開発側に責任を求めることはできない。しかしながら、Linuxディストリビューションには、商用で高額なライセンス料金を取る代わり、動くことを保証(サポート)するものもある。Red Hat社のRHELなどがこれに当たる。RHELは、もっとも安いエディションで10~17万円ぐらいの価格となっている。エンタープライズシステムなどで、保証と長期サポートが必要であれば、こうした商用のLinuxディストリビューションを購入することも選択肢になる。
また、Linuxは「バザール開発」と呼ばれるオープンソースの開発モデルを採用している。「オープンソース」はエリック・レイモンドによる用語で、「乱交まがいにオープンにし、パッチをとりこみまくる」という、一見成功するように見えない開発モデルだが、リーナス・トーバルズの高い技量と、インターネット上の善意の開発者の「たくさんの目玉があること」により、Linuxカーネルは急速に、現代的機能の豊富な安定し信頼できるカーネルへと成長した。しかしながら、Mozilla.orgの失敗例(いつまでも安定したバージョンをリリースできなかった)のように、「オープンソースは必ずしも魔法のお鍋ではない」とも言われている。
Linuxにおいてユーザーランドの多くを構築するGNUプロジェクトやFSFは、GPLを積極的に押し進めることで、「全てのコンピュータユーザーにフリーソフトウェアを提供し、コピーなどの自由な権利を守ること」のために活動している。
Linuxとオープンソースについては、このような批判的意見があるにも関わらず、Linuxに多くの場合付属するパッケージソフトウェアとして、カーネルだけではなく開発ツール(コンパイラ、インタープリタからX Window SystemやGUIツールキットまで)、サーバーソフトウェア、データベース管理システムなどがほぼ全てオープンソースのライセンスで提供されることから、「無償で開発環境を得たい」とするシステム・エンジニアや学生・入門者の間で、実用あるいは教育・研究用としてLinuxシステムは広く使われている。また、UNIX系のOSであることから、FreeBSDなどと同じように「高負荷になっても耐えられる」という特徴があり、このことからWebなどのサーバーシステムにおいてもLinuxは広く使われている。デスクトップOSとしては、多くの場合標準として採用されているGNOMEなどを別のデスクトップ環境やウィンドウマネージャにカスタマイズして取り換えたり、多くのオープンソースパッケージ(MS-Office代替のOfficeソフトウェアなどを含む)を簡単に導入したりすることができるため、「Geek」(オタクの意味)の間で愛好家が多い。エンタープライズシステムとしては、UNIXと同様IBMのメインフレームよりも安価な「オープン系」のシステムとして、性能や可用性を重視するクラスタや、GoogleのようなIT企業の用いる巨大データベースなどにOSとしてLinuxが使われることも一般的になってきている。
LinuxがFreeBSDのような他のUNIX系OSと異なる点は、さまざまなパッケージの寄せ集めであること。Linuxという言葉が意味するのはカーネルだけであり、多くの場合ディストリビューションとして配布されているパッケージの集合をインストールする。これはFreeBSDなどのOS一式を開発するモデルとは対照的だが、あるひとつのプロジェクトが全てを支配するのではなく、さまざまなシステムが有志によって開発されるという「多様性」のメリットがある。また、さまざまなパッケージがGPLやパーミッシブ・ライセンスでそれぞれ配布されていることが、全体の大きな共栄圏である「コミュニティ」を形成する。これは企業においても例外ではなく、現にChromiumやMozcのようなオープンソースパッケージはGoogleのような商用企業によって開発されたものが、ディストリビューションによって配布されている。オープンソースは再配布やコピーが許されるため、こうしたコミュニティの作ったオープンソースパッケージをディストリビューションのリポジトリで再配布できる。また、最近ではFlatpakのような仕組みもあり、ディストリビューションのパッケージとサードパーティのパッケージを(主にデスクトップ向けに)分離し、ユーザがパッケージを導入しやすくする試みも行われている。
このようなディストリビューションによるパッケージ版のバイナリは、多くの人が「寄せ集め」と言って想定するのには反して、パッケージのメンテナがきちんとシステムとの整合性を考慮してパッケージ化しているため、多くの場合、特にDebianやRed Hatのような大手ディストリビュータの場合、自分でtarballをmakeしてビルドするよりも、期待される通り動くことが多い。セキュリティパッチやバグ修正などの更新サポートも受けられるため、信頼性が必要なサーバーなどのシステムにおいては、ディストリビューションのパッケージを導入することが推奨される。特にRHELのような商用ディストリビューションはサポート期間が長く、サブスクリプション契約によって最新のシステムにアップグレードすることも、変更することなく既存システムを保守することもできる。
また、最近ではコンテナ仮想化技術であるDockerを仮想サーバのために利用することができ、Docker Hubを利用すれば、パッケージをインストールする必要すらなく、dockerコマンドだけで必要なサーバのコンテナイメージを導入することができる。Kubernetesを使えば、Docker環境における複数ホストの連携を簡単に行うことができ、面倒な作業なしに巨大クラスタを構築できる。こうした技術により、Linuxは急速に仮想サーバ・コンテナクラウド市場で有力なOSとなりつつある。また、DockerはLinux上で動くコンテナ型仮想化システムだが、Linux自体をWindowsやmacOSで動かすためにVirtualBoxやVagrantを使うことがある。
また、以前のLinuxやオープンソースでは、開発に参入する障壁がとても高かったが、最近はGitなどの高度なツールやホスティングサイトが増え、オープンソースの開発に参入する障壁がとても低くなった。gitのコマンドを使い、GitHubやGitLabなどのホスティングサイトにアカウントを登録すれば、誰でも簡単にリポジトリをクローンして変更をコミットし、リポジトリにプッシュしてプルリクエストをすることで、自分の変更をすぐさま登録できるようになっている。GitはLinuxカーネルの開発のために作られたバージョン管理システムで、前世代のCVSやSubversionに比べて高パフォーマンスであることで知られている。
パッケージ管理も参照のこと。
Linuxカーネルも参照のこと。
自分の書いたブログ「わたしの名はフレイ」2020/10/31より。
カーネルはオペレーティングシステムの中核となるソフトウェアであり、以下のような機能を実現する。
コンテキスト切り替えと仮想アドレス空間により、複数のプログラムを同時に実行することができる。
コンテキスト切り替えは、とても小さな時間でプロセスを次々に切り替えて実行し、その際CPUのレジスタの内容を(Linuxにおいては)task_structと呼ばれる構造体に退避してプロセスを安全に停止・再実行する。
仮想アドレス空間は、プログラムがメモリ上のアドレスにアクセスした時点で、カーネルが論理アドレスを物理アドレスに翻訳する。
このようにすることで、CPUとメモリがたとえ1つしかなかったとしても、それぞれのプログラムの数だけあるかのように仮想化することができる。
Linuxカーネル(プロセス)やLinuxカーネル(メモリ管理)も参照のこと。
割り込みは、IOデバイスなど時間のかかる処理を行う際に、カーネルがデバイスの応答を待つ間別のタスクを実行し、デバイスが応答した時点でカーネルにイベントを通知して割り込む仕組みである。
Linuxカーネル(割り込み)も参照のこと。
カーネルはデバイスを操作するために、デバイスドライバという仕組みを使う。
それぞれのデバイスドライバがデバイスコントローラの詳細を知っており、カーネルはデバイスドライバを介してハードウェアデバイスにアクセスする。
デバイスにはキャラクタ型デバイスとブロック型デバイスがある。
Linuxカーネル(デバイス)も参照のこと。
プロセスはそれぞれの独立したメモリ空間を得るが、スレッドはひとつのプロセスの中で複数のスレッドを並列実行し、同じメモリ空間を共有する。
しかしながら、プロセスにおいても、プロセス間通信を利用することで、メモリやデータを共有することが可能となる。
Linuxカーネル(プロセス間通信)やLinux API(プロセス・メモリ)も参照のこと。
カーネルは、プロセスを強制終了するためにシグナルを利用する。
何の指定もされていない時、カーネルはシグナルの扱いについてデフォルトの動作を行うが、シグナルはユーザープロセスの側で「トラップ」することができる。
この時、シグナルを受信したプロセスがどのように対応するか、プロセスの側で書き換えることができる。
Linuxカーネル(シグナル)も参照のこと。
カーネルはファイルシステムとして、ストレージにおけるデータを格納することができる。
代表的なファイルシステムに、Linuxのブロック型ファイルシステムであるext2やext4、LinuxにおいてB-Tree方式を採用したReiserFS, XFS, Btrfsなどがある。
Linuxカーネル(ファイルシステム)やext2も参照のこと。
カーネルは、ネットワーク通信におけるソケットインターフェースをサポートしていることがある。
ソケットはUNIXにおけるファイルシステムと同様のネットワーク通信インターフェースであり、BSDにおいて実装された。
ソケットは互いに接続したときに有効となり、片方に書き込むと片方から読み込むことができる。
ソケットを介してカーネルはネットワークインターフェースにおけるTCPやUDPのプロトコル通信を行う。
TCPは多くの機能があり、誤りを検出した際に再送制御を行ったりすることができる。
UDPはそうした機能がない代わり、ビデオや音声などを送る際に多少の誤りがあっても無視してデータの送受信を高速にやりとりすることができる。
Linuxカーネル(ソケット)も参照のこと。
カーネルは、プロセスが要求するシステムコール呼び出しに対してサービスを提供する。
典型的なのは入出力やファイルシステム操作であり、たとえばopen(), close(), read(), write()といったシステムコールに対してファイルの読み書きや入出力(IO)処理を請け負う。
また、システムコールに加えて、C言語のライブラリがstdioとして用意する標準入出力のAPIがあり、これはたとえばprintf()やfgets()などが挙げられる。
stdioはバッファ処理を行うためシステムコール呼び出しよりも高速にリソースにアクセスでき、また固定長の入出力だけではなくバイト単位(1文字ごと)や行単位の入出力APIをサポートしている。
Linuxカーネル(IO・入出力)やLinux API(システムコール)やLinux API(stdio)を参照のこと。
Linuxのインストールの前に、今のWindowsの環境を残しておきましょう。
出来るだけ大切なバックアップを取ることがお勧めされることが多いですが、僕はWindowsのハードディスクごと取り出してしまって、同じ型のハードディスクを装着するのがお勧めです。ハードディスクごと、Windowsの大切な環境を取っておくことが出来ます。
Linuxのインストールは簡単で、ダウンロードしたisoファイルをお好みのCD/DVD書き込みソフトで焼いて、そのディスクから起動し、インストーラーに従ってシステムを構築します。
ただ、isoをデータとして焼かないように注意しましょう。isoはディスクイメージファイルと呼ばれるもので、正しい設定で焼かないと、その中のイメージを構築してくれません。データファイルとして焼いてしまうと、Windowsで操作するデータアーカイブとして焼かれてしまいます。きちんと起動できるディスクにするためには、正しい設定で焼かないといけません。これは書き込みソフトによって違います。
isoがきちんと焼けたら、通常はCD/DVDから起動することができる。出来ない時はBIOSでハードディスクよりもCD/DVDディスクの方を優先して起動するように設定する必要がある。
インストール時の設定の時に注意することは、
・ネットワークの設定。自動設定されても上手くいかない時は自分でネットワークの構成を確認した上で設定する必要がある。特に、Wi-Fiなどに繋ぐ時は、無線のアクセスポイントとそのためのパスワードを入力しなければ、ネットワークにはつながらない。
・rootユーザーと使用する一般ユーザーの設定。パスワードを忘れないようにしよう。
・パーティションの設定。自動でも動く場合があるが、手動で設定するならば十分なディスク容量を配置しなければならない。
・インストールするパッケージの選択。通常はデスクトップのインストールを行うが、GNOME 3よりもKDEやMATEをインストールすることが出来る。ここで知っておくべきこととして、「全てのデスクトップを全部入れるのはあまりお勧めしない」ということ。アプリケーションパッケージがたくさん入って、端末やテキストエディタが何種類もあって「とても使い辛い」ものになってしまう。よって、GNOME 3を使うつもりなら、出来るだけGNOME 3だけをインストールすること。おすすめはMATE。
インストール後の設定として注意すべきなのは、日本語入力。そのままでは日本語入力ができないことがある。GNOME 3なら、インプットエンジンが統合されているため、その上で設定を行う必要がある。KDEなどの場合は専用のパッケージをインストールする必要があることもある。
Linuxのインストールに失敗することは本当に日常茶飯事で、僕もUbuntuがインストールできなかったせいで仕方なくDebianを使ったりしたことがある。
また、インストールできても起動しないことや設定の関係で使えるまでのレベルに達しないこともある。良くあるのは、「GNOMEやKDEが起動しない」ということ。
諦めるのも良いが、せっかくだから別のディストリビューションを試してみよう。もちろん、Windowsに戻すという方法もアリだ。失敗した時のためにも、真面目にWindows環境を残しておこう。
OSの中核であるLinuxカーネル、あるいは、OSとしてのGNU/Linuxシステムのこと。
Linuxとはを参照のこと。
AT&Tのベル研究所が開発した、C言語を用いたOSシステムのこと。
UNIXも参照のこと。
フリーなUNIXのクローンを開発することを目指しているプロジェクトのこと。
GNUも参照のこと。
GNUのユーザーランドとLinuxカーネルを一緒にした、Unixライクなシステムのこと。
Linuxのユーザランド入門も参照のこと。
ソースコードが公開され、コピーや再配布が可能になっている(二次的著作物のコピーや再配布の制限を許さない場合もある)ソフトウェアのこと。
OSSも参照のこと。
GNUの提唱する、自由にコピーや再配布が出来るソフトウェアのこと。
フリーソフトウェアのための、コピーレフトなライセンス。
UNIXにおける、ウィンドウシステム。これによって、コマンドライン・インターフェースのUNIXでも、GUIによる操作を使用することが出来る。
X11も参照のこと。
コミュニティによる、安定したディストリビューション。
Debianを参照のこと。
Debianをベースに、速いサイクルでのリリースを目指す、初心者向けのディストリビューション。
Ubuntuを参照のこと。
Fedoraをベースに、会社であるRed Hatが開発する、エンタープライズ・クラスの安定性を持つ、有料のディストリビューション。
Red Hatを参照のこと。
Red Hatによる、コミュニティ主導の最先端の技術の搭載と開発を目指したディストリビューション。
Fedoraを参照のこと。
SUSEと言う、Red Hatのライバル会社による、コミュニティ主導のディストリビューション。有料版もある。
SUSEを参照のこと。
Portageと言う、ソースベースのパッケージ管理システムを搭載した、独特のディストリビューション。
Gentooを参照のこと。
Ubuntuをベースに、使いやすくして、独自のMATEとCinnamonと言うデスクトップ環境を搭載したディストリビューション。
Linux Mintを参照のこと。
ローリングリリースモデルを採用し、シンプル第一の概念で開発される、上級者向けのディストリビューション。
Arch Linuxを参照のこと。
オープンソースのRHELのソースコードを再利用した、コミュニティによるRHELクローン。
Centosを参照のこと。
ディストリビューションの詳細はLinuxディストリビューションを参照のこと。
Linuxのインストール方法。
高スペックなパソコンなら、VirtualBoxの仮想環境にインストールすることも出来ます。
VirtualBoxを参照のこと。
CD/DVDへのISOイメージのダウンロードと、その焼き方。