Alpha マシンに Linux をインストール

それでは、いよいよLinuxのインストールの開始です。
ディストリビューションに依存する点もあるため、今回は代表的なLinuxディストリビューションであるRed Hat Linux 7.1とDebian GNU/Linux 2.2r4の場合を中心に解説を行います。
なお、インストールメディアに付いては、専門店で購入するか、インターネット上で公開されているISOイメージ(注2)から作成してください。

注2:
Red Hat Linux 7.1 - ftp://ftp.redhat,com/pub/redhat/redhat-7.1-en/iso/alpha/seawolf-alpha-disc1.iso
Debian GNU/Linux 2.2r5 - http://www.debian.org/CD/

Red Hat Linux については、最新の Red Hat Linux 7.2のAlpha版はRed Hat社からは提供されていないため、インターネットから無償でダウンロードできる最新版であるRed Hat Linux 7.1を利用しました。関連する情報として、Red Hat Linux 7.2 for Alpha FAQ (http://www.redhat.com/about/presscenter/2002/press_alphaFAQ.html)などを参照してください。

Debian GNU/Linuxについては、手元にあるメディアを利用したため、r5ではなくr4になっていますが、深い意味はありません。いまからメディアを取得するのであれば、r5を利用してください。

インストールの前準備

最近のPC用Linuxデュストリビューションでは、CDブートを有効にさえしておけば、自動的にインストーラが起動します。しかしAlpha版のLinuxまでは、インストーラを起動させるまでが大変(注3)、というかAlpha特有のノウハウが必要な部分になります。

注3:面白いともいいますが...(^^;

コンソールの種類とローダー

まず、AlphaマシンにおけるLinux(注4)の起動方法について、表1に整理しておきました。

注4:厳密にいうとLinuxカーネルと記述すべきところですが、この章では単にLinuxと省略しています。
表1: Linuxの起動方法
種類デュアルブート操作性起動可能OSローダ操作性パーティション
SRMコンソール 不可能(*1) 各種UNIX/OpenVMS/Linux aboot △(*2) BSD形式
milo DOS/BSD形式
ARCコンソール 可能 Windows NT/Linux milo DOS/BSD形式

SRMコンソールもARCコンソールも直接Linuxを起動することができないため、Linuxを起動するにあたってはx86版でいうliloのようなローダーというプログラムの仲介が必要になります。Alphaマシンにはabootとmiloというローダーがあり、miloはどちらのコンソールからでも起動できますが、abootはSRMコンソール専用になっています。 Linux自体はいずれの方式でも起動可能です。ただし各ディストリビューションのCD-ROMの構成をみるとmiloからの起動はあまり考慮されていないものが多いため、ここではabootから起動してインストールする方法を解説します(注5)。

注5:Windows NTとデュアルブートする場合など、最終的にmilo経由でLinuxを起動したい場合でも、とりあえずインストール自体はabootから行った方が簡単です。

SRMコンソールへの移行

まず現在ARCコンソールの場合はSRMコンソールへ移行します。AlphaBIOSの場合は「CMOS Setup...」からF6を押してAdvancedを選択し、図1のように、Console Selection をUNIX Console(SRM)にしてからF10を何度か押して、設定を保存します。ARCコンソールの場合は、Supplimentary menu -> Set up the system -> Switch to OpenVMS or Digital UNIX console... -> Switch to Digital UNIX のようにメニューをたどります。


図1: AlphaBIOSからSRMコンソールへの移行

電源を切って再起動すると、図2のように「>>>」というSRMコンソールのプロンプトが現れますので、

Digital Personal Workstation 433au
Console V7.2-1 Mar  6 2000 14:47:02
>>> boot dka
         ~~~ ← CD-ROMのデバイス名(環境依存)

図2: SRMコンソール

のようにしてCD-ROMから起動します。dkaというのは機種によって変わりますが、CD-ROMのデバイス名になります。各機種のデバイス名については show config というコマンドを実行することで図3のように確認できます。


図3: show configコマンドの結果(一部)
CD-ROMのデバイス名がdka0でSCSIディスクのデバイス名がdkc0であることが確認できます。
なお画面が流れてしまう場合は、ctrl+Sとctrl-Qで画面表示の一時停止、再開を行ってください。

うまくいくと、CD-ROMにあるabootが読み込まれて図4のような画面表示の後、


図4: aboot の起動

aboot>

というabootのプロンプトになります。最近のディストリビューション(注6)では、ここで「l」を押すことで、図5のように起動メニューの一覧が表示されます。なおその他のabootのコマンドについては、「h」を入力することで表示されます。

注6: Red Hat Linux 7.1とDebian GNU/Linux 2.2r4で確認しています。 なお、このメニューは/etc/aboot.confというファイルによって設定します。詳細は後述するSRM-HOWTOを参照してください。


図5: abootのメニュー(Red Hat Linux 7.1の例)

ここで起動したいメニューの数値を

aboot>3 ← 3番のメニューを選択

のように入力するだけで、簡単にインストールを開始することが可能です。 なおRed Hat Linux 7.1の場合、GUIインストールはディスプレイカードの検出に失敗してしまうようですので、テキストモードでのインストールをお勧めします。 なお、古いabootを利用しているディストリビューションの場合は、このメニュー機能がないため、「l」や「h」といったコマンドは利用できません。この場合は予めカーネルのパス名などを調べておいた上で、以下のように直接パスを入力して起動を行う必要があります。

aboot> kernels/generic.gz root=/dev/hda 
       |~~~~~~~~~~~~~~~~~ |~~~~~~~~~~~~
       Linuxカーネル      カーネルの起動オプション

なお、どのような起動オプションの指定が必要かはディストリビューションによって異なってきますので注意が必要です。上記はLASER5 Linux 6.0でうまくいった例です。 rootファイルシステムのマウント後にインストーラーが起動すれば、最大の難関のクリアです(^_^)。

インストールの注意点

以下、Alphaマシン固有の注意点について記述します。Linux共通の事項に付いては他のドキュメントなどを参照してください。

パーティション分割

表1に示したように、パーティションの形式により利用できるローダーが限定されますので、この時点で最終的にインストールするローダーを決定する必要があります。なおインストーラをabootで起動していても最終的なローダーをmiloにすることや、その逆も可能です。 今回は最終的なローダーとしてabootを利用する前提で、BSD形式のパーティションを作成してみましょう。パーティション設定では手動設定を選択して、図6のようにfdiskを起動してパーティションの設定を行う必要があります。BSD形式のパーティションはfdiskでないと作成できませんので、注意してください。

以下は、パーティションbにswap用として128MB、パーティションeに/用として1024MBを割り当てた場合の例です。

Command (m for help): b ← BSD形式のパーティション作成モードを指示
Warning: starting partitions at cylinder 1 will...
   ← パーティションはシリンダ2から開始するようにという警告
/tmp/sda contains no disklabel.
Do you want to create a disklabel? (y/n) y
   ← ディスクがBSD形式になっていなかった場合は、BSD形式用のパーティション管理情報を新規に作成することを求められる。
BSD disklabel command (m for help): n
Partition (a-h): b
First cylinder (1-1106, default 1): 2
   ← 先頭のシリンダは、abootをインストールするために利用しないでおく
Last cylinder or +size or +sizeM or +sizeK (2-1106, default 1106): +128M

BSD disklabel command (m for help): t
Partition (a-c): b
Hex code (type L to list codes): 1 ← ext2 は8、swapは1を指定
                                 一覧を表示したい場合はLを指定する
BSD disklabel command (m for help): n
Partition (a-h): e
First cylinder (1-1106, default 1): 19
Last cylinder or +size or +sizeM or +sizeK (19-1106, default 1106): +1024M

BSD disklabel command (m for help): t
Partition (a-c): e
Hex code (type L to list codes): 8

BSD disklabel command (m for help): p ← 結果表示
5 partitions:
#       start       end      size     fstype  [fsize bsize cpg]
  b:        2        18        17     swap
  c:        1      1106      1105     unused       0     0
   ← cパーティションは慣習的にディスク全体を意味するため、このようにディスク先頭を含むように設定されています。
  e:       19       149       131     ext2

BSD disklabel command (m for help): w ← 書き込み

図6: パーティション設定例

パーティション作成の後は通常通りインストールを行っていきます。

abootローダーの書き込み

インストールの最後にabootを書き込む必要があります。 abootの書き込みは、インストールの一貫として行える場合もありますが、筆者が確認した限りでは構成によっては書き込みに失敗する場合や、そもそも自分で書き込まないといけない場合も多いため、手作業で行う方法を知っておいて損はないでしょう。 abootを書き込むためには、まずローダーのイメージファイルを探す必要があります。これは通常bootlxという名前で/bootディレクトリにあります。またswritebootという書き込みプログラムが実行可能である必要もあります。 Alt + F2などを押して、別のコンソールからシェルを起動した上で、図7のようにインストール済の領域にchrootしてコマンドを起動してみましょう。

#mount ← インストール先の領域がどこにマウントされているかを確認する
/dev/root / ext2 rw 0 0
/proc /proc proc rw 0 0
/dev/pts /dev/pts devpts rw 0 0
/tmp/cdrom /mnt/source iso9660 ro 0 0
/tmp/loop /mnt/runtime cramfs ro 0 0
/tmp/sda5 /mnt/sysimage ext2 rw 0 0 ← ここが起動イメージ
/proc /mnt/sysimage/proc proc rw 0 0
  (*) dfコマンドがあれば、dfコマンドでも同様の出力が得られます
#chroot /mnt/sysimage ← Red Hat Linux 7.1の場合
  (*) Debian GNU/Linux 2.2r4の場合は #chroot /target
#/sbin/swriteboot ← コマンドを起動してみる
Usage: swriteboot [-f[1-8]] [-c[1-8]] [-v] disk bootfile [kernel]

図7: abootローダの書き込み

コマンドの動作が確認できたら、以下のようにしてabootをインストールしてください。これによりディスク先頭のシリンダ1にabootが書き込まれます(注7)。

#/sbin/swriteboot /dev/sda /boot/bootlx
注7: このため、パーティション作成時にディスク先頭を利用しないようにする訳です。

もし、

#/sbin/swriteboot /dev/sda /boot/bootlx
error: bootcode overlaps with partition #3. If you really want to this, use -f3

のようなエラーがでた場合は、ディスク先頭のシリンダ1を利用しているパーティションが存在しています。
cパーティションをシリンダ1から確保している場合など、上書きをしても問題ないという場合は、エラーメッセージに記述されている「-f[パーティション番号]」オプションを利用して強制的に書き込んでください。これで、インストールは完了です。

再起動後、SRMコンソールから起動してみましょう。
図8のように入力することで無事起動に成功すれば、まずはインストール完了です。

>>>boot dkc -file 5/boot/vmlinuz.gz -flags "root=/dev/sda5"
                  ||~~~~~~~~~~~~~~~         |~~~~~~~~~~~~~
                  ||                        +----- 起動オプション
                  |+----- パーティション内のLinuxカーネルへのパス
                  +---- パーティションe(eは5番目)

図8: SRMコンソールからのaboot経由でのLinuxの起動

コラム: SRMコンソールのコマンド

SRMコンソールを操作する上で、最低限これだけは知っておいた方がよいと考えるコマンドに付いて、説明します。なお詳細は、SRM-HOWTO(http://www.linuxdoc.org/HOWTO/SRM-HOWTO/)などを参照してください。

boot
さまざまなオプションをつけて、ローダーやOSを起動します。Linuxを起動する場合の例は、図xx15を参照してください。
show config
ハードウェア設定を表示します。接続されているデバイスのデバイス名を確認する際などに便利です。
show
定義されている変数の一覧を表示します。
set os_type nt
SRMコンソールからARCコンソールに移行する際に利用します。
set auto_action HALT
自動起動する場合はBOOT、SRMコンソールのプロンプトを表示させたい場合は、HALTを指定します(例ではHALTを指定)。
set bootdef_dev "dkc"
起動するデバイス名(例ではdkc)を指定します。
set boot_file "5/boot/vmlinuz"
起動時に利用するファイル名(例では5/boot/vmlinuz)
set boot_osflags "root=/dev/sda5'
起動時に利用するフラグ(例ではroot=/dev/sda5)
set language 36
101キーにする場合は、36を指定します。

自動起動の設定

手作業で起動することが確認できたら、最後に自動起動の設定を行いましょう。 まずは、図9のように変数に適切な値を設定して、bootコマンドにオプションをつけずにLinuxが正しく起動することを確認してください。

>>> set bootdef_dev "dkc"
>>> set boot_file "5/boot/vmlinuz"
>>> set boot_osflags "root=/dev/sda5"
>>> boot ← オプションなしでLinuxを起動

図9: 自動起動の設定準備

ここまで正常にLinuxが起動したら、最後にSRMコンソールから

>>> set auto_action BOOT

として、auto_action変数をBOOTに設定します。これで再起動すると自動的にLinuxが起動するようになる筈です。

次回はWindows NT?

ここまでどうでしょうか? さすがワークステーションだけあって、一筋縄ではいかないところもありますが、慣れればそんなに難しくはありません。 次回は、miloをローダーとしてWindows NTとのデュアルブートを実現させてみたいと思います。

参考情報

注記・補足

  1. Alpha 版の Red Hat Linux の最新版については、
    http://www.compaq.com/alphaserver/linux
    http://www.jpn.hp.com/solutions/infrastructure/linuxalpha/distribution/
    より入手できます。
  2. 本文書は、UNIX USER 2002年5月号の「甦れ!UNIXワークステーションたち」に掲載された「AlphaマシンにLinuxをインストール」の草稿の一部を筆者の方で HTML 化して掲載しているものです。


Copyright (C) 1998-2009 TAKAHASHI, Motonobu
Last update: 2002-11-29 01:20:22 JST
webmaster@monyo.com