SqueezeでUSBメモリからブート、その1

 Debian squeezeをUSB Memory Stickから
bootさせる手順の覚書。
多少不正確なので、間違い等を突っ込んでいただけると助かりますm_ _m

D.3. Unix/Linux システムからの Debian GNU/Linux のインストールを参考に
よく分からないところ補足。


 以降の説明では、

  • インストール済みのDebian環境をHost(on HDD)
  • 作成しようとしているUSB上のDebian環境をTarget(on USB)
    • 作成後のブート先も同じatombox

を用います。

Host上で

install debootstrap

 普通にapt-getでインストール。

# apt-get update
# apt-get install debootstrap

set USB Memory Stick on PC

boot先のUSBメモリにパテーションを作成と、
ext3へのフォーマット。

 USBメモリのデバイスファイル(/dev/xxx)は、fdiskやdmesgで確認してください。
以下、HDDとUSBメモリの場合。

# fdisk -lu
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048  1940402175   970200064   83  Linux
/dev/sda2      1940404222  1953523711     6559745    5  Extended
/dev/sda5      1940404224  1953523711     6559744   82  Linux swap / Solaris
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     7895039     3946496    b  W95 FAT32

 パーティションの作成*1

# umount /dev/sdb1
# fdisk /dev/sdb
> p #=> show partition
> d #=> delete a partition
>> 1 #=> select deleted partition number
...
> n #=> create partition
>> p #=> select primary partition
>>> 1
>>>>   #=> select default 1
>>>>   #=> select default 1018
> a #=> bootable flag
>> 1
> w #=> write table to disk and exit

 ext3でフォーマット

mkfs -t ext3 /dev/sdb1
if make FAT32

 FAT32が良いって方は以下で。

# fdisk /dev/sdb
...
> a
>> 1
> m #=> help
> l #=> list known partition types
> t #=> change a partition's system id
>> c #=> c  W95 FAT32 (LBA)
> w
# mkfs.vfat -c -F 32 /dev/sdb1

install debian userland on USB Memory Stick

 debootstrapでuserlandを作成。

# /usr/sbin/debootstrap --arch i386 squeeze /mnt http://ftp.us.debian.org/debian

change root on usb

 HostからTargetに移動します。

# LANG=C chroot /mnt /bin/bash
Targetに移って

make device file

 デバイスファイルを作成*2
まずはmakedevインストール。

# apt-get update
# apt-get install makedev

で、procをmount。

# cd /
# mount -t proc /proc proc
# mount
... #procがmountされているか確認

で、/tmp/dev以下にデバイスファイル作成、/devにコピー。

# cd /tmp
# mkdir dev
# cd dev/
# MAKEDEV generic
# tar cf - * | (cd /dev; tar xvf -)

mount partition

 fstabを編集してmountします。

vi /etc/fstab
mount -a
if you use UUID

 Hostで実行。


 fstabのマウントデバイス指定をUUIDで指定するため。

# blkid
/dev/sdb1: UUID="1ac48147-35e8-467b-b897-309368321bfc" TYPE="ext3"
/dev/sda1: UUID="a482ec8d-1d51-4c18-9acb-9bebcda657af" TYPE="ext3"
/dev/sda5: UUID="5fe95910-8403-468e-a933-48983a92c3a6" TYPE="swap"
# cat /etc/fstab

config timezone

 設定してない。

config network

 デフォルトでHostの設定が反映されてたような?

vi /etc/network/interfaces
vi /etc/resolv.conf
vi /etc/hostname
vi /etc/hosts

config apt

 デフォルトでHostの設定が反映されてたような?

install kernel

 で、TargetにLinuxKernelインストール。

# apt-cache search linux-image-2.6.32-5-686-bigmem
# apt-get install linux-image-2.6.32-5-686-bigmem

 が、firmwareどうたらとエラーが出る。
ググると、nonfreeのドライバが理由っぽいのでsource.listにnonfree等を追加。

# vi /etc/apt/sources.list

 Hostで実行して、HostとTargetのsource.listの差分。

nonfreeのパッケージをインストール出来るように、
contribとnon-freeを追加。

# diff /etc/apt/sources.list /mnt/etc/apt/sources.list
1c1
< #
---
> # deb http://ftp.us.debian.org/debian squeeze main
11,12c11,12
< deb http://ftp.jp.debian.org/debian/ squeeze main
< deb-src http://ftp.jp.debian.org/debian/ squeeze main
---
> deb http://ftp.jp.debian.org/debian/ squeeze main contrib non-free
> deb-src http://ftp.jp.debian.org/debian/ squeeze main contrib non-free
19a20
>

で、firmwareをインストール。

# apt-get install firmware-linux-nonfree
# apt-get install firmware-linux

setup grub2

 grubのインストール*3

# aptitude install grub
# grub-install /dev/sdb
# update-grub

 なんか、update-grubでsysどうたらとエラーがでる。
のでHostの/etc/mtabをコピって、mountする。

# cat /etc/mtab
proc /proc proc rw,noexec,nosuid,nodev 0 0
sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0
# mount sys
# update-grub

edit /boot/grub/device.map

 ちょこちょこっと修正したような?でも修正は不要だったと思います。

 で、設定完了。
HDD外してUSBメモリだけにして
再起動してみるとエラー><


 GRUBの選択後に

Gave up waiting for root device. ...

 と、エラーが出りゅw;
その2に多分続いたよ><