2016年2月28日日曜日

trusty non-pae を使ってみた

Ubuntu 14.04 LTS text non-pae 'Trusty-npae124-text.iso'を使ってみた。

おいおいわかるのだが、これは普通のAlternate CDとはかなり違う(勉強していたのでわかる)。
使い方がわからないので、調べながら使う。
VAIO-C1でも起動できる。CDで起動すると、shellのプロンプトが出る。
Installerは、コマンドで起動する(かなり特殊だ)。ヘルプのようなものも付いているので、それを読んだ。

「ハードディスクを全部上書きしてしまう。パーティションテーブルも破壊される。治す手段はない。」のような事と、「install後にgpartedで切り直せ。」的なことが書いてあった。
うーん。どういう事だ?
installを行えば、HDDの内容が壊されるのは当たり前のことだ。それをわざわざ強調するのは、どういうことだ?
インストーラなら、途中でパーティションを編集することもできるものだろう。なぜ終了後に切り直しなんてさせるんだ?
この2つの疑問から、だいたい構造がわかった。
HDDのイメージをパーティションテーブルごとまとめてxz圧縮したもの"live/dd_Trusty-npae124-text.img.xz")を、展開しながらHDDに書きこむのだ。
パッケージもへったくれもない。

マイコンボードでLinuxをinstallするのに似ている。実はAlternateではない普通の最近のInstall CDもパッケージは入っていない。まとめられたデータをただコピーするのだ。
これは、間違いも少なく簡単で、Install時間が短くて済む。
しかし、VAIO-C1では、問題がある。BIOSが古すぎて、ブートコードは、HDDの先頭から80GB以下に置かなければならないのだ。
このVAIO-C1は、HDDを256GBのSSDに置き換えているので、余裕で80GB以上ある。
この場合、単一パーティションにできない。

このような場合、/bootのみを2GB程度の小さなパーティションにして先頭付近に配置し、残りのほとんどを/用のパーティションにするのがいい。
しかし、HDDイメージ内の一部のディレクトリを別パーテションへ分離することはできない。
80GBで/をつくって、170GBをデータ領域のようにしてもいいが、なんか使いにくい。

いろいろ考えたが、やばり/bootのみ小さな別パーティションにすることにした。
Installerを使ったら、そのような形ではInstallできないが、コマンドプロンプトが出るので、手動で作業すればいいだろう。
一旦作業を中止し、そのための用意を行う。
HDDイメージのままでは、/bootを分離できないので、CD内の"live/dd_Trusty-npae124-text.img.xz"を展開して、loopマウントする。
その中の内容をcpioで取り出して圧縮する(/dev下の特殊ファイルとかがあるので)。
もうddのイメージはいらないので、ファイルを置き換えて、Bootable CDを作りなおし、CDに焼く。

新たに作ったCDで起動する。
まず、fdiskを使って、パーティションを分ける。sda1を/boot用に2GB、sda2を/用に240GB(とりあえず)、sda3をswap用に2GBにする。
パーティションを分けたら、mkfs -t ext4で、sda1とsda2を、mkswapでsda3を初期化する。
それぞれのUUIDを記録しておく。

適当なディレクトリ(何でもいいがx/とする)を作って、そこにsda2をマウントする。x/bootを作ってそこにsda1をマウントする。
ディレクトリを重ねておいて、x/の下で、cpioでまとめ直したファイルを展開する。こうすることで、boot/以下がsda1に入る。
その後、一旦、x/を出て、mount -bind で、/devをx/devにマウントする。
chroot x/ を行い、x/をルートディレクトリとした環境にする。/proc, /sys, /dev/pts を適切にマウントする。

余計なユーザが最初からいるので、deluserしておいて、自分のアカウントをadduserする。
adduser後に、自分をsudo と rootグループに追加しておくこと。
さもなくばinstall後にsudoできなくなってしまう。

/etc/fstabをパーティション構成にあわせて編集する。
さっきメモしておいたUUIDをここで使うのだ。

最後にgrub-install /dev/sda を行って、grubをinstallする。 その後再起動すれば、立ち上がる。

起動後に、apt-get したら、169個の更新があった。カーネルも母艦でコンパイルして、入れなおした。
残念なことに、atyfbの設定をメモしないで、前の環境を削除してしまった。
もう何年も前なので、設定はすっかり忘れた。唯一覚えていることといえば、C1でatyfbを動かすのには、かなり苦労したということだ。
ドライバパッチが残っているのが救いだ。
設定を調べなおして、今度はしっかりメモをしておこう。

14.04は、grubがgrub2になっていた。
そのせいで、起動パラメータの与え方が少し違っており、それもまたatyfbへの設定をややこしくしている。
なんだかんだで、もう少し手がかかりそうだ。

0 件のコメント:

コメントを投稿