ksaitoの日記

日々試したことの覚え書き

玄箱PROのdebootstrap成功!

移転しました。

自動的にリダイレクトします。

KURO-BOX/PROでようやくdebootstrapが成功しました。
いくつかポイントがありました。
設定については、この連休中にやろうと思いますが一山越えた感じです。

USBでハードディスクを接続

作業場所としてUSBハードディスクを接続しました。
起動すると/mnt/disk1に自動的にマウントされます。

hostsへの登録

KURO-BOX/PROの/etc/hostsは、起動のたびに初期化されてしまうようです。
下記を/etc/hostsに登録します。

203.178.137.175 ftp.jp.debian.org

debootstrapが失敗原因

そのまま実行すると失敗します。

/mnt/disk1 # debootstrap sarge /mnt/disk1/debinst_sample http://ftp.jp.debian.org/debian/
I: Retrieving debootstrap.invalid_dists_sarge_Release
I: Validating debootstrap.invalid_dists_sarge_Release
I: Retrieving debootstrap.invalid_dists_sarge_main_binary-arm_Packages
I: Validating debootstrap.invalid_dists_sarge_main_binary-arm_Packages
W: http://ftp.jp.debian.org/debian/dists/sarge/main/binary-arm/Packages.gz was corrupt
I: Retrieving debootstrap.invalid_dists_sarge_main_binary-arm_Packages
I: Validating debootstrap.invalid_dists_sarge_main_binary-arm_Packages
W: http://ftp.jp.debian.org/debian/dists/sarge/main/binary-arm/Packages was corrupt
/usr/sbin/debootstrap: /usr/sbin/debootstrap: 7: /usr/lib/debootstrap/pkgdetails: not found
/mnt/disk1 #

失敗しているのは/usr/lib/functionsの407行目の/usr/lib/pkgdetailsです。

details="$($PKGDETAILS $p $m1 $pkgdest)"

エラーとなった時に$PKGDETAILS, $p, $m1, $pkgdestは、下記が設定されていてます。

PKGDETAILS=/usr/lib/debootstrap/pkgdetails
p=adduser
m1=http://ftp.jp.debian.org/debian
pkgdest=/mnt/disk1/debinst_sample/var/lib/apt/lists/debootstrap.invalid_dists_sarge_main_binary-arm_Packages

手動で実行しても同じ結果となります。

/mnt/disk1 # /usr/lib/debootstrap/pkgdetails adduser http://ftp.jp.debian.org/debian /mnt/disk1/debinst_sample/var/lib/apt/lists/debootstrap.invalid_dists_sarge_main_binary-arm_Packages
-sh: /usr/lib/debootstrap/pkgdetails: not found

pkgdetailsのリコンパイル

仕方ないのでソースからコンパイルし直してみます。
ソースを取得するために/etc/hostsに書きを登録します。

128.101.240.212 ftp.debian.org

付属のCDから開発環境をコピーします。

/mnt/disk1 # zcat development_kit/hddrootfs.tar.gz | (cd kurodev; tar xv)
/mnt/disk1 # cd kurodev/
/mnt/disk1/kurodev # ls
bin    dev    home   mnt    root   share  tmp    var
boot   etc    lib    proc   sbin   sys    usr
/mnt/disk1/kurodev #

ソースを取得して開発環境でコンパイルする。

/mnt/disk1 # wget http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_0.2.45-0.2.tar.gz
Connecting to ftp.debian.org [128.101.240.212:80]
debootstrap_0.2.45-0 100% |***************************************| 33682    --:--:-- ETA
/mnt/disk1 # cd kurodev/mnt
/mnt/disk1/kurodev/mnt # zcat /mnt/disk1/debootstrap_0.2.45-0.2.tar.gz | tar x
/mnt/disk1/kurodev/mnt # ls
debootstrap-0.2.45
/mnt/disk1/kurodev/mnt # chroot /mnt/disk1/kurodev


BusyBox v1.1.1 (2006.11.29-02:37+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

/ # cd /mnt/debootstrap-0.2.45/
/mnt/debootstrap-0.2.45 # ls
Makefile       debootstrap.8  po             sarge.buildd   slink
debian         functions      potato         sid            woody
debootstrap    pkgdetails.c   sarge          sid.buildd     woody.buildd
/mnt/debootstrap-0.2.45 # make pkgdetails
make: dpkg: Command not found
gcc -Wall -W -O2   -c -o pkgdetails.o pkgdetails.c
gcc -o pkgdetails pkgdetails.o
/mnt/debootstrap-0.2.45 #

もう一度、手動で実行してみるとうまくいきます。

/mnt/disk1/kurodev/mnt/debootstrap-0.2.45 # ls
Makefile       functions      po             sid            woody.buildd
debian         pkgdetails     potato         sid.buildd
debootstrap    pkgdetails.c   sarge          slink
debootstrap.8  pkgdetails.o   sarge.buildd   woody
/mnt/disk1/kurodev/mnt/debootstrap-0.2.45 # ./pkgdetails adduser http://ftp.jp.debian.org/
debian /mnt/disk1/debinst_sample/var/lib/apt/lists/debootstrap.invalid_dists_sarge_main_binary-arm_Packages
adduser 3.63 all http://ftp.jp.debian.org/debian pool/main/a/adduser/adduser_3.63_all.deb f11ac678b771f2dd03a46b69ed8ddcaa98230
/mnt/disk1/kurodev/mnt/debootstrap-0.2.45 #

開発環境でdebootstrapを実行する

debootstrapを展開

/mnt # chroot /mnt/disk1/kurodev/


BusyBox v1.1.1 (2006.11.29-02:37+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

/ # cd /mnt
/mnt # mkdir debootstrap
/mnt # cd debootstrap
/mnt/debootstrap # ar x ../debootstrap_0.2.45-0.2_arm.deb
/mnt/debootstrap # cd /
/ # zcat /mnt/debootstrap/data.tar.gz | tar x
/ # 

コンパイルしたpkgdetailsを入れ替える。

/ # cp /mnt/debootstrap-0.2.45/pkgdetails /usr/lib/debootstrap
/ #

debootstrapを実行する。

/ # cd /mnt
/mnt # debootstrap sarge /mnt/debinst http://ftp.jp.debian.org/debian
I: Retrieving debootstrap.invalid_dists_sarge_Release
/usr/sbin/debootstrap: /usr/sbin/debootstrap: 218: wget: not found
E: Failed getting release file http://ftp.jp.debian.org/debian/dists/sarge/Release
/mnt #

なぜか、開発環境には、wgetがないので本体からコピーします。
/etc/hostsも必要でした。

~ # cp /usr/bin/wget /mnt/disk1/kurodev/usr/bin/
~ # cp /etc/hosts /mnt/disk1/kurodev/etc

リトライします。

~ # chroot /mnt/disk1/kurodev/


BusyBox v1.1.1 (2006.11.29-02:37+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

/ # debootstrap sarge /mnt/debinst http://ftp.jp.debian.org/debian
I: Retrieving debootstrap.invalid_dists_sarge_Release
I: Validating debootstrap.invalid_dists_sarge_Release
I: Retrieving debootstrap.invalid_dists_sarge_main_binary-arm_Packages
I: Validating debootstrap.invalid_dists_sarge_main_binary-arm_Packages
I: Checking adduser...
I: Checking apt...
I: Checking apt-utils...
I: Checking aptitude...
I: Checking at...
I: Checking base-config...
I: Checking base-files...
I: Checking base-passwd...
I: Checking bash...
I: Checking bsdmainutils...
I: Checking bsdutils...
I: Checking console-common...
I: Checking console-data...
I: Checking console-tools...
 ... 省略 ...
Setting up console-tools (0.2.3dbs-56) ...

Setting up libtextwrap1 (0.1-1) ...

Setting up console-common (0.7.49) ...
Looking for keymap to install:
NONE

Setting up base-config (2.53.10.2) ...

I: Base system installed successfully.
umount: /mnt/debinst/dev/pts: not mounted
umount: /mnt/debinst/dev/shm: not mounted
umount: /mnt/debinst/proc/bus/usb: not mounted
/ #

一山越えた...