wiki:VineSeed_x86_64_setup_kenta

はじめに

現在開発中の AMD64/EM64T アーキテクチャ向け VineSeed (便宜上、以下 x86_64版 VineSeed と表記)のインストール方法をまとめたメモです。

x86_64版 VineSeed は現在のところインストーラが用意されていませんので、i386版 Vine-4.2 をインストールした環境から、手作業でいくつかのRPMパッケージをインストールして、x86_64版 VineSeed の環境を作る方法を取る必要があります。

基本的な手順は次の通りで、手順 1. からの必要な作業時間はネットワーク環境やスキルにも依りますが 2-30分です。

更新履歴

初出

Date: Sat, 22 Dec 2007 23:59:04 +0900
From: NAKAMURA Kenta <kenta@XXXXXXXX>
Subject: [VineSeed-x86_64:00453] Re: How to x86_64 (Re: 1st step to x86-64 env)
Message-Id: <20071222231326.8221.F0A0AD85@…>

最終更新

2007/12/27

VineSeed x86_64環境の構築手順

準備:最小環境での Vine 4.2 環境の作成

Vine 4.2 を最小構成でインストールし、コンパクトな Vine の環境を構築します。 ただし、『インスト-ルの種類』を選択する画面にて最小構成を選択した場合には、ssh, lftp, wgetなどのパッケージがインストールされませんので、この後の手順でrpmパッケージのダウンロードに困ることになります。少なくとも lftp, wget の2つは追加で導入しておくといいでしょう。

なお、これらのパッケージがあらかじめインストールされますので、『パッケージグループの選択』画面にて最小を選択することをお奨めします。

0. 必要なパッケージをダウンロードしてアーカイブを展開

これ以降の手順で必要なパッケージの一覧を末尾の Appendix に掲載しています。 これらのパッケージを

 ftp://ftp.t.ring.gr.jp/pub/linux/Vine/VineSeed/pool

などからダウンロードします。

なお、現在の VineSeed では kernel-2.6.23 が最新となっていますが、kernel-2.6.23 以降では新しい mkinitrd >= 4.2.1.8-0vl2 を必要とするので、手間を省くために最初は kernel-2.6.16 をインストールしています。 この古いバージョンの kernel は

http://trac.vinelinux.org/browser/people/kenta/kernel-2.6.16-0vl73.x86_64.rpm?format=raw

から入手可能となっています。

また、Appendix に掲載したパッケージをまとめてひとつのアーカイブとしたファイルも

http://trac.vinelinux.org/browser/people/kenta/VineSeed.x86_64.pack.tar.bz2?format=raw

から入手可能となっています。

1. kernel をインストールし再起動

# rpm -ihv --ignorearch --oldpackage stage0/kernel-2.6.16-0vl73.x86_64.rpm
# /sbin/reboot

Vine-4.2 の環境ではより新しい kernel-2.6.16-0vl76.27.i386 がインストールされていますので、"--oldpackage" オプションが必要となります。 Vine-4.1 をベースにした場合には "--oldpackage" オプションは不要です。

『パッケージグループの選択』画面にて最小を選択した場合には、binutils がインストールされないため、いわもとさんメモの手順 5 mkinitrd の書き換えは不要です。

再起動後に uname コマンド等で、x64_64バイナリの kernel が使用されていることを確認します。

$ uname -a
Linux localhost.localdomain 2.6.16-0vl73 #1 SMP Fri Mar 30 02:02:18 JST 2007 x86_64 x86_64 x86_64 GNU/Linux

2. glibc の入れ替え

# rpm -Uhv --ignorearch stage1/glibc-* \
  stage1/compat32-glibc-2.5-12vl3.i686.rpm \
  stage1/tzdata-2007d-1vl1.noarch.rpm

パッケージを指定する順番を変えるとアップグレードに失敗することがあるようです。 上述の通りに指定することをお奨めします。

3. binutils の入れ替え

# rpm -Uhv --ignorearch stage2/binutils-2.17.50.0.6-2vl3.x86_64.rpm

kernel をインストールする際に /sbin/mkinitrd が strip コマンドを使用しますので、binutils を入れ替えておきます。 なお、binutils がインストールされていない場合には、必ずしも入れ替える必要はありません。

4. rpm, apt とそれに必要なパッケージの入れ替え

# rpm -Uhv --ignorearch --force stage3/*
# echo x86_64-redhat-linux > /etc/rpm/platform

インストール済みの bzip2-1.0.3-0vl2.i386, ncurses-5.4-0vl3.i386 と同じリビジョンのパッケージをインストールしようとするため、conflict が起こる旨のメッセージが出ます。 そこで、ここでだけは "--force" オプションを追加します。

また、/etc/rpm/platform には "i686-redhat-linux" などが書かれていますので、これを "x86_64-redhat-linux" に書き換えます。

5. i386 package の x86_64 package への置き換え

  1. x86_64 パッケージ の無いものをあらかじめ削除しておきます。
    # rpm -e dump rmt nss_ldap \
      kernel-module-ipw3945 kernel-module-madwifi kernel-module-ndiswrapper \
      kernel-module-zd1211 bcm43xx-fwcutter
    

compat32-openldap が無いので nss_ldap.i386 も削除しておきます。

  1. apt パッケージインデックスファイルの同期
    # apt-get update
    
    インストール後、ここで初めて apt-get update します。 このとき、x86_64アーキテクチャ用のパッケージリストが参照されていることを確認しておきます。

なお、x86_64パッケージの apt をインストールする前に apt-get update を実行していた場合は、

/var/cache/apt/pkgcache.bin

を削除して apt-get update をやり直す必要があるようです。

  1. console-tools.i386 を kbd.x86_64 への置き換え
    # apt-get reinstall kbd initscripts compat32-glib2
    
    console-tools.x86_64 パッケージが無いので、あらかじめ console-tools.i386 を kbd.x86_64 に入れ替えておきます。
  1. i386 package の x86_64 package への置き換え
    # apt-get reinstall \
      $(rpm -qa --qf '%{name}.%{arch}\n' | grep -v compat32- | grep i386 | sed 's/\.i386//g') \
      compat32-pam
    

compat32 パッケージ以外の i386 パッケージを reinstall します。 依存関係で必要となる compat32-* パッケージも追加で指定しておきます。

  1. 重複してインストールされている i386パッケージの削除
    # rpm -e $(rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}\n' | grep -v compat32- | grep i386) \
      compat32-pam compat32-ncurses
    

一部 compat32-* パッケージが不足していて依存関係を満たせない compat32-* パッケージもここで削除します。

6. 完了

# apt-get upgrade

更新可能なパッケージをアップデートします。

Appendix. インストールしたパッケージのリスト

インストールに使用したパッケージは次の通りです。 stage* というディレクトリに分けてあらかじめ用意しています。 stage0 ディレクトリ以外は今日 (2007/12/25) 現在の VineSeed のパッケージです。

stage0/kernel-2.6.16-0vl73.x86_64.rpm

stage1/compat32-glibc-2.5-12vl3.i686.rpm
stage1/glibc-2.5-12vl3.x86_64.rpm
stage1/glibc-common-2.5-12vl3.x86_64.rpm
stage1/glibc-common-extra-2.5-12vl3.x86_64.rpm
stage1/glibc-headers-2.5-12vl3.x86_64.rpm
stage1/glibc-kernheaders-2.6.12.1-0vl2.x86_64.rpm
stage1/tzdata-2007d-1vl1.noarch.rpm

stage2/binutils-2.17.50.0.6-2vl3.x86_64.rpm

stage3/apt-0.5.15lorg3.93-0vl2.x86_64.rpm
stage3/beecrypt-4.1.2-9vl5.x86_64.rpm
stage3/bzip2-1.0.3-0vl2.x86_64.rpm
stage3/compat32-beecrypt-4.1.2-9vl5.i386.rpm
stage3/compat32-bzip2-1.0.3-0vl2.i686.rpm
stage3/compat32-device-mapper-1.02.22-0vl3.i386.rpm
stage3/compat32-e2fsprogs-1.40.2-0vl3.i386.rpm
stage3/compat32-libexpat-1.95.8-0vl6.i686.rpm
stage3/compat32-ncurses-5.4-0vl3.i686.rpm
stage3/compat32-neon25-0.25.5-0vl3.i386.rpm
stage3/compat32-openssl-0.9.8g-0vl1.i686.rpm
stage3/compat32-openssl097-0.9.7m-0vl4.i386.rpm
stage3/compat32-popt-1.10.2.2-0vl2.i386.rpm
stage3/compat32-readline-5.2-0vl1.i386.rpm
stage3/compat32-readline4-4.3-5vl4.i686.rpm
stage3/compat32-sqlite3-3.4.2-0vl2.i386.rpm
stage3/compat32-zlib-1.2.3-0vl5.i686.rpm
stage3/device-mapper-1.02.22-0vl3.x86_64.rpm
stage3/e2fsprogs-1.40.2-0vl3.x86_64.rpm
stage3/elfutils-libelf-0.126-0vl1.x86_64.rpm
stage3/expat-1.95.8-0vl6.x86_64.rpm
stage3/libexpat-1.95.8-0vl6.x86_64.rpm
stage3/libgcc-4.1.2-0vl15.x86_64.rpm
stage3/libstdc++34-4.1.2-0vl15.x86_64.rpm
stage3/libxml2-2.6.30-0vl1.x86_64.rpm
stage3/ncurses-5.4-0vl3.x86_64.rpm
stage3/neon-0.26.3-0vl1.x86_64.rpm
stage3/neon25-0.25.5-0vl3.x86_64.rpm
stage3/openssl-0.9.8g-0vl1.x86_64.rpm
stage3/openssl097-0.9.7m-0vl4.x86_64.rpm
stage3/popt-1.10.2.2-0vl2.x86_64.rpm
stage3/readline-5.2-0vl1.x86_64.rpm
stage3/readline4-4.3-5vl4.x86_64.rpm
stage3/rpm-4.4.2.2-0vl2.x86_64.rpm
stage3/rpm-libs-4.4.2.2-0vl2.x86_64.rpm
stage3/rpm-python-4.4.2.2-0vl2.x86_64.rpm
stage3/sqlite3-3.4.2-0vl2.x86_64.rpm
stage3/zlib-1.2.3-0vl5.x86_64.rpm

Attachments