古いLinux CentOSを仮想マシンにインストールする  インストール～キーボード日本語化

どうしても古い32bit環境を作りたかったので。
ひと段落付いたので記事にします。

やったこと
1. VirtualBoxへのCentOS 5.1インストール
2. 最低限の変更: キーボードをJPに変更
3. 挫折: yumのレポジトリ変更

## **基本的なOSインストール手順**

大体同じなので記載しておきます。

1. OSのCDを買う。or CD-ROMにisoイメージを焼く
2. 空のPCを用意する。
3. CDブートにより起動する。
    BIOSと呼ばれるCPUごとの起動順番を変更します。起動後"Intel XXX"と書いてる間にF11とか何かを押すと移動します。
    これはPC依存
4. 手順に従いインストールする。
5. 必要な設定を行う。

自分の知る限りはこんな感じ。CD代わりにUSB等別の起動方法も聞いたことはあるけど

## **基本的な仮想マシンインストール手順**

実は上記とほぼ一緒。ハード的な部分がソフトに変わっただけです。
手順の番号も通常の番号と対応してます。

1. isoイメージをダウンロードする。(CDである必要はない)
2. 仮想マシンのハードディスクを作成する。
3. isoイメージを使って起動する。
   CDを作る or isoイメージのマウントをして、起動設定で指定します。仮想マシンによって異なります。
   VirtualBoxなら設定⇒ストレージで指定可能
4. 手順に従いインストールする。
5. 必要な設定を行う。

## **やったこと: 1. VirtualBoxへのCentOS 5.1をインストール**

###1. isoイメージをダウンロード

以下を参考に、[ここ](http://archive.kernel.org/centos-vault/)からisoをダウンロード
https://qiita.com/timothy_o/items/d7d7b8de23b426eddf2f

うちのネットワークは貧弱なので、ネットワークインストール用のisoを落としてきました。

マウントの為にはisoイメージをCD認識(?)させる必要があります。
昔はCD-ROMにわざわざ焼いた記憶があるのですが、
**Windows 10ならisoファイルを右クリック⇒マウント**とやれば、Eドライブ辺りにマウントされます。最新OSはすごいです。

###2. 仮想マシンのハードディスクを作成する。

仮想マシンソフトをダウンロードしてきて、新規作成します。
私はネットワークがごちゃごちゃしないイメージのあるVM wareが好きなのですが、商用は有料になったので、NATでのホストとの接続に難のあるイメージのVirtual Boxを使いました。
(私用なのでどちらもOKですが、Virtual Boxは癖があるイメージなので家でも敢えて使ってます。)

以下からダウンロードしてインストール。頑張れ！
http://www.oracle.com/technetwork/jp/server-storage/virtualbox/downloads/index.html

インストール出来たら起動
⇒新規でHDを作ります。
多分Linux系はRedhat系はDebian系かだけ間違えてなければOKじゃないすかね？試してないので断言はできませんが。

いつも忘れてしまいますが、**Redhat系がyum**, **Debianがapt**でパッケージインストールすると覚えるとわかりやすいですかね。
私的にはでかい問題にぶち当たる時は大体CentOS, FedoraのようなRedhat系だったので、Debianのが好きです。
(UbuntuのUI、なんであんなにグラフィカルにしたんだろ。前のが好きだったのに)

###3. isoイメージを使って起動する。

起動先にisoイメージを選択します。
VirtualBoxなら設定⇒ストレージ⇒コントローラー:IDEでisoのドライブを指定。

###4. 手順に従いインストールする。

するんですが、CentOS 5.1ではネットワークの接続先を指定しないといけないんですね。
2018/11/23 更新
ある程度の古さなら、以下の要領でrikenのパスをarchive.kernel.orgの対応するパスに変更することでインストール完了。
http://d.hatena.ne.jp/mujiryouhin/20100204/1265280036

ですが、5.1等相当古いものはミラーサイトもファイルを用意していません。rikenのreadmeを参考に、以下[CentOS公式](http://vault.centos.org/)のHTTPサーバーとパスを指定してインストールします。

http://vault.centos.org/5.1/os/i386/

## **やったこと: 2. キーボードをJPへ変更**

これで準備完了。と思いきや、yumのパスが古すぎて通っていない。そりゃそうか。
とりあえずキーボードを、、、これUSキーボードやんけ！

Linuxのエディタでvimを使う人あるあるだと思うんですけど、
編集のためvim実行
⇒ないやんけ！インストールしよ
⇒設定古いやんけ！viでいいから最小構成の設定しよ
⇒**USキーボードで抜けられんやんけ！！**
ってなります。

vi使わない方への簡単な説明としては、エディタの編集を抜けるためには":q"を押さないといけないんですけど、最小構成でまずUSキーボードになっていると、**USのデフォルトの":"の位置が違うので、エディタが閉じられない！！**という状態になるので、今回最低限最初の設定で必要なキー配置はメモしました。

| JPで期待するキー      |       USキー |JPキー配置での対応文字
|:-----------------|:------------------|:------------------|
| :             | shift+; |+   |
| =          | ^|^|
|&           |shift+7 | '|
|"|shift+:|*|

これで何とか/etc/sysconfig/keyboardを開き、以下のように編集し、再起動してください。

```
# vim /etc/sysconfig/keyboard
KEYTABLE="jp106"
MODEL="jp106"
LAYOUT="jp"
```

これで普通にキー入力できる。後はyumのパスを書くだけだ！

## **やったこと: 3. yumのレポジトリ変更**

yumのリポジトリは`/etc/yum.conf`に記載されています。
大抵はそこから`/etc/yum.repos.d/CentOS-Base.repo`をincludeしています。

古いOSだとリンクがサポート切れてるところが多いので、悪戦苦闘しながら探します。

対象先検索で一番参考になったのが以下。各ミラーサイトが書いています。
https://www.centos.org/download/mirrors/

で、各サイトを覗いたんですが全部空…
一通り見てみて何もないのでよく見るとreadmeにこんなことが

```
If you know what you are doing, and absolutely want to remain at the 5.1
level, go to http://vault.centos.org/ for packages.
```
参考サイトあるじゃん！みなさんReadme読もうね！

ということでCentOS-Base.repoの各baseurlを同サイトに変更。
5.1/os/i386/の5.1とi386の部分は、それぞれお使いのVersionと32bit or 64bitかで切り替えてください。
(ちなみにCenOS5.1で$releaseverを記載すると、5に変換されるので注意です。)

```:/etc/yum.repos.d/CentOS-Base.repo
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://vault.centos.org/5.1/os/i386/
```

###**余談:yumの仕組み予想**

2018/11/23更新

yumの仕組みについて、見えたログから察するに

1. yum XXXを実行
2. confに書かれているサイトに飛ぶ
3. 対応されているサイトの、決まったフォルダ内の設定ファイルを読む。
   (updateなら`repodata/repomd.xml`)
4. 設定に記載されているファイルをダウンロード

みたいな感じです。うまくパスが通らない場合はこのどこかで失敗している形になります。

どうしてもyumのパスが通らない場合の対処策として、1.rsyncを使う, 2.rpmを探して直接インストールするという手段もあります。

1.rsyncを使う。

以下よりrsyncでの同期する方法があるようです(動作未確認)
https://www.isoppe.jp/?p=4378

2.rpmを探して直接インストール

対象のコマンド+RPM等で検索すると、RPMが単品でネット上に転がっていたりするのでそれをダウンロード
⇒`rpm -ivh ダウンロードしてきたRPMファイル`でインストールする方法です。
開発環境が閉じたネットワークで、データはscp等で直接置くしか手が無いような環境で使えます。

###**yumの仕組みからの邪な考え**

もしフォルダ配置さえあっていればRPMインストールできますって仕組みなら、一般公開RPMに自作マルウェアを埋め込んだRPMを作ってミラーサイトを作成
⇒旧OSS全サポートのミラーサイトが出来ましたよ！

みたいに展開すれば、凄い被害が出そう。特に古いOSを使うのは大抵社用だし。
皆さんミラーサイトの選定は注意しましょう。

##参考

古いisoイメージ検索
https://qiita.com/timothy_o/items/d7d7b8de23b426eddf2f

CentOS ネットワーク接続先指定
http://d.hatena.ne.jp/mujiryouhin/20100204/1265280036

公式CentOS
http://vault.centos.org/

キーボード日本語化
https://qiita.com/yoshiken/items/b06a97dd8958f3a6dd09