2007年12月28日

[vine-users:077922] インストールCDを使わない「微妙な」レポート(長文)

馬場崎です。
今回、このバージョンアップ時期に合わせたわけではありませんが、
ちょっと「微妙な」レポートを報告します。

タイトルの「インストールCDを使わない」という部分はハードウェアとしての
光学ドライブを使用しないという程度の意味で、CDイメージファイルは使います。
起動できる光学ドライブがあってCDイメージからCD-ROMを作成できる環境が
あるなら、普通にインストールを行った方が便利です。つまり、CD-ROMが

使えるなら、この方法でより便利になったりはしません。

事の発端は数年前に光学ドライブの無いノート型機器を所有した事からですが、
先日ThinkPadを使いはじめ、そのHDDの隠し領域にレスキューとレストアが
用意されていて、同様の事も出来るんでは無いかと考え、合わせて書きました。

■■[条件……※敢えて取り組む価値があるかどうかをお考え下さい]
・稼働しているVineLinux機。grub等が使える事
・HDDに1GB程の空き領域。もしくはUSBメモリでも条件付で可能
・CD-ROM等の光学ドライブが無い、もしくは起動できる光学ドライブではない
※新規インストールの場合はHDDを取り出す作業が入るので、起動可能な光学
ドライブを用意する事とどちらが手間なのかは判断してください。
※他に全くLinux環境が無い場合は、この方法では無理です。新品のHDDに
インストール可能ですが、それでもいくつかの事を済ませておくためにLinuxが
必要です。普通にCDからインストールしましょう。
※また、この方法ではパーティションの切り直しはしません。やると大変です。
(可能ですが手順を間違えた時のリスクが大きいです)パーティションを切り直す
インストールを行いたい場合も普通のインストールをしましょう

■■[下準備……ケースバイケースなので面倒です]
僕のケースではノートパソコン用の2.5インチHDDにVineLinuxを用意してあり
まして、これは例えばUSB-HDD接続で対応機器に繋ぐとそれでVineLinuxが使える
という所までできあがっています。
ちなみにこういうHDDを作るには、結局はインストールCDが必要です。
(windows環境からの挑戦は困難の極みです)
そうやってHDDを作る際に、これはdebianユーザーの記事でそう思ったのですが、
将来の事を考えて1GB程の空き領域を残してあり、それが「更新領域」です。

1. この領域をFAT32等でフォーマットして、
2. インストールCDイメージファイルと/isolinux 以下のファイルを置き、
3. /boot/grub/menu.lst に書き足して
4. grubからインストーラーを動かす
……というのが主旨になります。(同様の記事は@ITにもありました)

(*応用*)
USBメモリから起動可能な機器(あるいは起動時に認識可能なだけでも良いです)
では、同様の事をUSBメモリに対して行い、HDDにインストールしてあるgrubから、
USB機器のハードウェア番号を指定する事で達成できます。
さらに踏み込めればUSBメモリにGRUBをインストールする事で
「インストールUSBメモリ」ができあがります。
もっともこれについてはUSBから起動するイメージファイルが用意されて
いますので、「ファイルコピーで済ますか、起動イメージを使うか」という
判断が必要です。
(僕の紹介する方法は、一度成功すれば次からはUSBメモリ内部のファイルを
更新すればよくて、それはWindows環境でも可能という部分だけは利点です
が、そもそも確実に起動するかは、やはり専用の起動イメージの方が上です)

この他にも、例えばそうした空き領域もUSBメモリも無いという環境であっても、
現在の /ファイルシステム以下にCDイメージファイルと/isolinuxを配置して
似たような実践をされた方がいらっしゃいます。
ただこれが「とても微妙な所」でして、これだとファイルシステムに
フォーマットがかけられない(たぶんエラー)ので、APTを使った dist-upgrade の
方が整合性の面で軍配が上がり、あえて行うのはむしろリスクが高くなって
しまうと思われます。

また、CDイメージファイルを置かずにhttp/ftp経由で持ってくるという事も
可能なのですが、サーバーや経路の事を考えて判断してください。

整理しまして、ベターなのは現在VineLinuxが稼働しているHDDに空き領域があって、
それを使うという事。あるいはそれほど手間をかけずにそれが作れる事。
次点が可能ならUSBメモリを使うという事。USB起動も視野に入れましょう。
それ以外なら、光学ドライブを用意する事をお薦めします。

■■[VineLinuxやWindowsから準備する]
使用する領域はFAT32でフォーマット済みであるとします。
(ext2ファイルシステムで無ければならない理由が無いという理由なので
ext2や3でも構いません)

grubの書き換えやmenu.lstの書き換えが不要なら、この作業はWindows環境
でもできます。(お店のインターネット環境でも可能かもしれません)

その領域やUSBメモリに、一つはCDイメージファイル(Vine42-i386.iso)を
置きます。これは Ringサーバー http://www.ring.gr.jp/)等から入手できます。
もう一つは「isolinux」というディレクトリを作り、同じくRingサーバー等の
VineLinux4.2の i386 ディレクトリ以下に配置されている isolinux/以下の
ファイルを一通り入手して配置します。
(必須なのはその内の二つですが一応セットになっていますので)
この二種類を配置するだけなので、USB-HDDみたいなものを使ってWindows環境
からでもできる作業です。

1GBあれば領域にいくらか余裕がありますので、アップグレード/インストール
作業に関わって必要な情報、スクリプト、パッケージなんかも保存できます。

VineLinux環境であれば次のような内容を /boot/grub/menu.lst に書き足せば
準備完了となります。

## /boot/grub/menu.lst ##
title UpgradeVineLinux
root (hd0,3)
kernel /isolinux/vmlinuz ramdisk_size=8192
initrd /isolinux/initrd.img

title RescueVineLinux
root (hd0,3)
kernel /isolinux/vmlinuz expert rescue ramdisk_size=8192
initrd /isolinux/initrd.img
## ここまで ##

menu.lst を書き直さなくても、grubさえ動いていれば、対話モードでも
編集モードでも値を与えて作業を進められます。

ここではgrubで稼働しているものとして書きましたが、対象HDDに grub が
インストールされていない場合はインストールする必要があり、注意が
必要です。

例えば、今使用しているlinux機器にUSB-HDDを繋ぎ、それに対してここまで
紹介してきた方法を使って準備をして、HDDの交換でインストールを開始しようと
するようなケースです。
初歩的にはパーティションの起動フラグの確認も必要ですし、自機では無くて
対象のHDDのマスターブートレコードやパーティションにちゃんと導入されたか
確認が必要になります。
うっかりミスが時間を浪費しますので良く確認しましょう。

■■[GRUBに与えるパラメータの意味]
前段で紹介した二種類の起動パラメータについて説明をします。
もっとも特に難しい事は無くて isolinux のパラメータを借りてきただけです。

インストールCD内部の /isolinux/isolinux.cfg を見るとインストール
開始画面でのモードを選ぶ際のパラメータが並んでいます。
通常のインストールを開始するラベルが linux 、
グラフィックを用いない text 、
詳細なインストールが進行する expert 、
キックスタートの ks 、
低解像度の lowres 、
ローカルシステムを起動(インストールしない)する local 、
メモリテストのmemtest86
……があり、lilo.confと良く似た書式になっています。

それぞれの kernel vmlinuz の部分が grubの書式では
kernel (ハードウェア番号)/isolinux/vmlinuz
……へと対応する事になります。initrd.img も同様です。
ただgrubでは通常、追加のパラメータは kernel 行の方に書きますので
append 行の initrd.img 以外の内容は kernel 行の方に空白で区切って書きます。

rescue モードは扱いが違っていて、ラベルとして挙げられておらず、通常は
「linux rescue」のように追加入力して渡されます。
いずれにしても append のパラメータなので kernel行の方に書きます。
従って、前段で用意した2グループは、一つはVineLinuxインストーラが動き、
もう一つはrescueモードが動くメニューアイテムとなります。text や lowres を
追加すれば、そうしたメニューアイテムを作ることになるという理屈です。
※余計な話になりますが、grubを起動に使っているのでそこからisolinux(.bin)
を起動に使うことは出来ません。ので、そのメニューをそのまま使う事は
出来ません。
(もっといえばisolinuxはisoファイルシステム用なので動きませんですね。
fatの場合はsyslinuxを使うのがお薦めだったと思います)

必須分だけだと、isolinux/ディレクトリから vmlinuz と initrd.img を取り出して
/ディレクトリに置いて menu.lst の書き方を /vmlinuz と書いても動作は同じに
なります。

環境依存な部分はそれぞれのハードウェア番号「root (hd0,3)」の部分です。
この例では「内蔵HDDの第4パーティション」なので (hd0,3) となっています。
外部のUSB-HDDだったりUSBメモリだったりして2番目の第1パーティションなら
(hd1,0)と変わります。grubのメニューアイテムが出るような状態ならここを
間違えてもエラーが出て戻るだけですので、上手く行かない時は通常の起動を
して確認するとか、その場で書き直して試すのもよいかと思います。

■■[動作の実際]
この方法に取り組んだのは、今回で2度目になります。前回は準備と試行と
実施で手一杯なまま、検証出来ずに終わりました。
今回はこの方法で更新できるという確認が取れての報告になります。
(もう一歩踏み込めば更新パーティション単独動作も出来そうです)

流れとしては、(grubのmenuは対応済みで)Vine4.2が更新されて、
Ringサーバーから Vine42-i386.iso と isolinux/以下を入手して、
更新用の第4パーティションに配置するだけで、フォーマットをかける事の
できる更新インストールができます。
この第4パーティションの容量と、grubの対応する範囲で、今後同じ方法で
VineLinuxバージョン5でも6でも行ける寸法です。

環境に関わる部分と、/home/ディレクトリ以下についてはインストールとは別の
問題と考え、踏み込んでいません。
引き継ぎたい時もあれば、すっぱり削除したい時もあると僕も考えるからです。

また、rescue モードをメニューアイテムに加えているのは、2007年は割と
rescue モードのお世話になり、いつでも使えるようにしたかったからです。

ちょうど今使っているThinkPadには、ボタン一つで「レスキュー&リカバリー」へ
進めるようになっていますが、出来る事に限りがあるので不足を感じています。

ディスクそのものを疑いたい時や、生きている範囲で救出したい時、chrootで
実際の動作をテストしたい時、今年は本当にrescueモードに助けられました。

唯一、使用機器で rescueモードを使うためにはわざわざ光学ドライブを繋いで
起動する必要があり、それを残念に思っていたのです。ですが、先日VineLinuxが
4.2に更新された時、やっと盲点に気づきました。
「インストール出来るなら、rescueモードも動くに決まっているじゃないか」
……というわけで、自分がとても悔しかったので投稿して恥を残しておきたいと
思います。

長文失礼致しました。(いつも長くてすみません)

みなさま良いお年を。

--
__/__/__/__/__/__/__/__/__/__/__/__/
ZON or MaruArt.
>> Babasaki Seiichirou (Jap)
E-Mail mindgear@xxxxx
Nokia N800 zon@xxxxx
__/__/__/__/__/__/__/__/__/__/__/__/

投稿者 xml-rpc : 2007年12月28日 16:40
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/68115
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。