電話でね!♪ Hm Hm♪ Linux on the Phone!♪ ― 2007/03/17 22:59
タイトルのフレーズで曲が頭に浮かんだあなた!よっぽどのOldies好きで無い限り、結構なお年ですな。
WX321Jを購入した理由の一つに挿入したmicroSDがUSBストレージで使えるので、それにLinuxをインストールして電話から立ち上げたかった事が大きい。
単にこのタイトルを謳いたかったっす。
母艦はThinkpad X40、OSはもちろんGentoo Linux。
まず、X40でSDカードの認識をさせる。X40でのSDカードの認識にはmmc_core、sdhci、mmc_blockが必要。kernelのconfigで
MMC/SD Card support ---> <M> MMC support <M> MMC block device driver <M> Secure Digital Host Controller Interface support (EXPERIMENTAL)として上記のモジュールを有効にしてkernelを再構築する。もし、モジュールじゃなくてkernelに組み込みたかったら<M>を<*>にする。さらっとググったところによると、モジュールにするとudevのruleを書いても自動でモジュールを読み込んでくれないらしい。スロットは問題無いけど。で、挿入したSDカードを認識させるには、root権限で以下を実行。
modprobe mmc_block購入したSDカードはmicroSDカードでSD、miniSD両方のアダプタを持ったpqiの1Gのもの。 まずは、パーティション分割して、WX321Jが使う部分とLinux部分を分ける。電話で使うデータは大した事は無いと思うので、電話:128MB、Linux:残り全部にする。電話からはLinux用のパーティションはどうせ見えないので、Linux用のファイルシステムはext3にする。まずは、SDカードのマウントを解除。
xxxxx# umount /mnt/vfat次にfdiskでの作業。まずはSDのパーティション情報の確認。
xxxxx # fdisk /dev/mmcblk0 このディスクのシリンダ数は 30480 に設定されています。 間違いではないのですが、1024 を超えているため、以下の場合 に問題を生じうる事を確認しましょう: 1) ブート時に実行するソフトウェア (例. バージョンが古い LILO) 2) 別の OS のブートやパーティション作成ソフト (例. DOS FDISK, OS/2 FDISK) コマンド (m でヘルプ): p Disk /dev/mmcblk0: 998 MB, 998768640 bytes 4 heads, 16 sectors/track, 30480 cylinders Units = シリンダ数 of 64 * 512 = 32768 bytes デバイス Boot Start End Blocks Id System /dev/mmcblk0p1 1 30480 975352 6 FAT16 コマンド (m でヘルプ):次に現在のパーティションを削除して、結果を確認。
コマンド (m でヘルプ): d Selected partition 1 コマンド (m でヘルプ): p Disk /dev/mmcblk0: 998 MB, 998768640 bytes 4 heads, 16 sectors/track, 30480 cylinders Units = シリンダ数 of 64 * 512 = 32768 bytes デバイス Boot Start End Blocks Id System コマンド (m でヘルプ):で、新たなパーティション作成。第一パーティションを電話で使う領域、第二パーティションをLinuxにする。第一領域をFAT16にするのを忘れずに。
コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 1 最初 シリンダ (1-30480, default 1): Using default value 1 終点 シリンダ または +サイズ または +サイズM または +サイズK (1-30480, default 30480): +128M コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 2 最初 シリンダ (3908-30480, default 3908): Using default value 3908 終点 シリンダ または +サイズ または +サイズM または +サイズK (3908-30480, default 30480): Using default value 30480 コマンド (m でヘルプ): t 領域番号 (1-4): 1 16進数コード (L コマンドでコードリスト表示): 6 領域のシステムタイプを 1 から 6 (FAT16) に変更しました コマンド (m でヘルプ): p Disk /dev/mmcblk0: 998 MB, 998768640 bytes 4 heads, 16 sectors/track, 30480 cylinders Units = シリンダ数 of 64 * 512 = 32768 bytes デバイス Boot Start End Blocks Id System /dev/mmcblk0p1 1 3907 125016 6 FAT16 /dev/mmcblk0p2 3908 30480 850336 83 Linux コマンド (m でヘルプ):最後に実際に領域を作成。
コマンド (m でヘルプ): w 領域テーブルは交換されました! ioctl() を呼び出して領域テーブルを再読込みします。 警告: DOS 6.x 領域を作成、または変更してしまった場合は、 fdisk マニュアルの追加情報ページを参照してください。 ディスクを同期させます。これで領域が出来たので、次はそれぞれのパーティションにファイルシステムを作成。 それぞれ以下を実行。
xxxxx # mkfs.vfat -F 16 /dev/mmcblk0p1 xxxxx # mkfs.ext3 /dev/mmcblk0p2WX321JでSDカードを初期化する。メニューから「データフォルダ」→「メニュー」→「microSD初期化」。 で、中身の確認。
xxxxx # mount -t vfat /dev/mmcblk0p1 /mnt/sd xxxxx # ls /mnt/sd dcim private sd_bindfat16部分はこれで特にすることは無い。次はいよいよLinuxの準備。使用ディストリビューションは色々考えたが、CD1枚強のスペースがある事から、1CD Knoppixを使う事にする。DL サイトからknoppix_v5.1.1CD_20070104-20070122+IPAFont_AC20070123.isoをget。
このイメージを/mnt/cdromにマウント。
xxxxx # mount -t iso9660 -o loop knoppix_v5.1.1CD_20070104-20070122+PAFont_AC20070123.iso /mnt/cdrom xxxxx # ls /mnt/cdrom Aist README.install2win.ja autorun.inf boot grub4dos install2win.bat version.txt KNOPPIX autorun.bat autorun.pif cdrom.ico index.html ipa-fonts-document.pdfここではLinuxパーティションのマウントポイントを仮に/mnt/ext3とする。
xxxxx # mount /dev/mmcblk0p2 /mnt/ext3必要なファイルを/mnt/cdromから/mnt/ext3にコピー。
xxxxx # cp -a /mnt/cdrom/{boot,KNOPPIX} /mnt/ext3 xxxxx # ls /mnt/ext3次にgrubのインストール。この状態ではgrubがSDカードを有効なデバイスとして認識しないので、一旦WX321Jに差し戻して、WX321JのUSBストレージ機能を使ってインストールする。
xxxxx # umount /mnt/ext3WX321J上でSDカードを初期化した段階からUSBストレージ機能を使って進めても良かったんやけど、一応SDカードでの認識をX40で確認したかったので、ちょっとややこしくなった。で、WX321J上で「USBデータストレージ」を開始して、電話とX40をUSBケーブルで繋ぐ。この状態で電話は/dev/sdaとして認識されている。まずは/boot/grubを/dev/sda2上の/bootにコピーする。
xxxxx # mount /dev/sda2 /mnt/ext3 xxxxx # cp -a /boot/grub /mnt/ext3/boot xxxxx # ls /mnt/ext3/boot/grub default ffs_stage1_5 jfs_stage1_5 pxegrub stage2 ufs2_stage1_5 device.map grub.conf menu.lst reiserfs_stage1_5 stage2.netboot vstafs_stage1_5 e2fs_stage1_5 grub.conf.sample minix_stage1_5 splash.xpm.gz stage2.old xfs_stage1_5 fat_stage1_5 iso9660_stage1_5 nbgrub stage1 stage2_eltorito xxxxx # umount /mnt/ext3では、実際にgrubコンソールで、/dev/sda(SDカード)のMBAにgrubをインストールする。grubでは、この場合はsdaはhd1になる。
xxxxx # grub grub> root (hd1,1) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd1) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd1)"... 15 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd1) (hd1)1+15 p (hd1,1)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded Done. grub> quit xxxxx #最後に/mnt/ext3/boot/grub/menu.lstの編集。/mnt/ext3/boot/isolinux/isoliunux.cfgを参考に以下のように書き換える。
/mnt/ext3/boot/grub/menu.lst:
timeout 8 title Linux on the Phone (Powered by Knoppix) root (hd0,1) kernel /boot/isolinux/linux ramdisk_size=100000 init=/etc/init lang=ja BOOT_IMAGE=knoppix initrd /boot/isolinux/minirt.gzrootがhd0になってるのは、WX321Jが起動ドライブになるため。
で、これでX40を再起動。ブートデバイス選択でWX321Jを含むメニューが出てくるのにちょっと手間取る。ブートデバイスでWX321Jを選ぶと、見事にgrubも立ち上がり、Knoppixも立ち上がる。上の画像がその画面。まーまーストレス少なく使える。
でもね、やっぱりね♪ 電話じゃ物足りない。♪
今後はKnoppixじゃ無くて、やっぱGentooにしようと思う。
※尚、上記の方法は私個人の環境で試しての結果なので、同様の方法で成功する保証はありません。また、上記方法を試してのデータ損失、故障などを被った責任は当方には一切ありません。自己責任でお試しください。
コメント
トラックバック
このエントリのトラックバックURL: http://clementia.asablo.jp/blog/2007/03/12/1255690/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。