忍者ブログ
PCメモ
PC関係のメモ、気付いたこと。 simhとChromium OSをいじって遊んでいます。 Chromium OSのカスタムビルドを配布しています。(http://chromiumosde.gozaru.jp) twitter: @zui22904336 PGP fingerprint: 45FC 0E47 A68A FA06 02FE 2BEF B72C C6E6 F9FF 1C19
Admin / Write
2024/03/19 (Tue) 19:03
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2014/05/11 (Sun) 12:10
Windows XPのサポート停止で古いXPマシンをどうしようか悩んでいる方も多いと思いますが、そのなかでも厄介なのはPentium MやCeleron Mマシンです。ネット閲覧程度ならまだ十分使えるのに選択肢が結構狭まってしまっています。

XPからの引っ越し先でLinuxを思い浮かべる方も多いと思いますが、最近のメジャーなLinuxディストリビューションではPentium MやCeleron Mマシンでブートすると以下のようなエラーがでて動かないことが多かったと思います。


(簡単に再現するためVirtualBoxを使っていますが、実機でも同じエラーになるはずです。)

そのため、Puppy LinuxやZolin OSといったいわゆる軽量Linuxを使うのが普通だったのかなと思います。

しかし、最新のlubuntu 14.04(これも軽量Linuxに分類されると思いますがw)ではこの問題への回避策がとられ、Pentium Mマシンでもブートできるようになりました。たぶんCeleron MもOKだと思いますが実機がないので試していません。

Ubuntuも同じかもしれませんが、非力なPentium Mマシンに入れる気はしないので試していません。

lubuntu14.04 をPentium Mマシンでブートする


とりあえず技術的な話は置いておいて、まずはCDからのブート方法だけを書いておきます。
今回は手持ちのPentium MマシンであるThinkPad T42でためしています。

lubuntuのダウンロード方法やCD-ROMへの焼き方などはここでは触れません。CDからブートした後のメニューでの操作方法についてのみ書きます。

  1. CDからブートします。
  2. 言語選択メニューが表示されるので日本語を選びます
  3. メニュー画面が出ます。
  4. F6を押すと以下の画面になります。
  5. ESCをおして選択肢を消します。画面下に起動オプションという欄があります。
  6. forcepaeと打ち込みます
  7. RETURNキーを押すとブートが始まります。forcepaeの指定が効いた場合は以下のような表示が出ます。WARNINGと出ていますが、これはforcepae自体がちょっと無理やりな機能だという意味で出ています。基本的に気にしなくて大丈夫ですが、Pentium Mなら100%ブートできるというわけではなく、もしかしたら動かないかもしれません、ということです。この点については後述します。
  8. しばらくするとおなじみのスプラッシュ画面がでますが、うちのThinkPadでは色がおかしくなってますww
  9. 無事起動しました。
この後はあとは左上のアイコンから普通にインストールできます。

HDDへのインストール手順はメニューに従うだけですしPentium Mマシンだからといって変わることはありませんので割愛します。

CDからのブート時にforcepaeを指定して起動した場合、HDDにインストールするとgrub.cfgにforcepaeの指定がちゃんと反映されるようになっていますので、以降は何もしなくても普通にブートします。

なお、この方法がつかえるのはPentium Mのみです。Celeron Mも可能だと思うのですが試してはいません。

結局forcepaeって何?


結局このforcepaeは何をやっているのか、というと、物理アドレス拡張(PAE)というCPUの機能が今起動しようとしているCPUにあるかどうかのチェックをバイパスし、PAEが使えるCPUとみなして強引に起動をかけてしまおうというものです。

Linuxカーネルは、起動時にCPUがどんな機能をサポートしているかを確認します。このときPentium MはPAEをサポートしている、という情報を返してきません。そのため、PAEを必要とする方法でビルドされた最近のLinuxカーネルは、Pentium MはPAEが使えないのでだめだ、というエラーを返してきます。

しかし、実はPentium Mは問い合わせにしかとするだけで、実際にはPAEが使えるようなのです。いわば隠し機能というやつです。意図的に隠し機能にしたのか単なるバグでCPU FlagからPAEが抜け落ちているのかはわかりません。

なので、今回の修正ではPentium M(またはCeleron M)の場合だけforcepaeが指定されたならPAEのチェックをバイパスし、PAEが使えるものとみなしてしまう、という機能を追加してPentium Mでも動けるようにしたわけです。

今回の修正ではCPUの種類をチェックしているので、Pentium M/Celeron M以外で本当にPAE機能がないCPUや、VirutalBoxなどの仮想環境でPAEをオフにした場合などはたとえforcepaeを指定しても以前と同様のエラーになります。これらについては上に書いたPuppy LinuxやZolin OSなどのnon PAEカーネルを使っているディストリビューションでないと動きません。

今回のPentium M向け修正でのカーネルパッチの内容は以下の場所で見ることができます。

[PATCH] x86: set Pentium M as PAE capable

このパッチを見れば、forcepaeが有効になるCPUのタイプもわかります。引用するとこんな感じです。

+	} else if (err == 0x01 &&
+		   !(err_flags[0] & ~(1 << X86_FEATURE_PAE)) &&
+		   is_intel() && cpu.level == 6 &&
+		   (cpu.model == 9 || cpu.model == 13)) {

いわゆるFamily6、model9または13のCPUでだけforcepaeが効くようになっています。これはPentium MとCeleron Mに相当しますがPentium MやCeleron Mという名前の付いたCPUがすべてこれに当てはまるかは把握していません。逆に、Family6 model9/13なCPUならみんなPAEを隠し持っているかというとそれも100%断言できるかは定かではありません。上でWARNINGを出していたのはその辺をふまえて「ちょっと無理やりなんだぜ?」と言っているんだと思います。

なお、PAEフラグが立っていない時、という条件がand条件で付いているので、PAEフラグをちゃんと返してくる一部のPentium Mにはこの修正の影響が出ないようになっています。

当初カーネルパラメータはforcepaeと言っていたようですが、もっと新しい記事ではカーネルパラメータの名前がpaeに変わっています。
lubuntuには、forcepaeと言っていた当時のパッチが取り込まれたようですね。

Chromium OSへの応用


このブログでは主にChromium OSを扱っていますが、このカーネルパッチをChromium OSのカーネルソースに適用してあげると(それだけではだめで別途SSE3対策が必要)一応うちのThinkPad T42でもブートまでは持っていくことができています。



ただ、CPU周りよりも周辺機器を動かすのが大変です。

まだ無線LANが動きません。有線でつなげば一応つかうことはできます。
トラックポイントは認識しますがタッチパッドは認識しません。
他にも起動時のスプラッシュ画面が出なかったり、起動直後は画面がピンク色でいったんターミナルに切り替えて戻すとちゃんと表示されたりします。他にもいろいろ問題がありそうです。

こんな感じでこちらのThinkPad T42は苦戦していますが、今のところ、CPU周りの問題だけはクリアになっていて、ブートだけなら問題なくできます。

ほかのPentium Mマシン向けにビルドする際でもCPU周りのカスタマイズ方法は参考になるかもしれませんので、この辺の話はまた別途書きたいと思います。

15.09.08 追記: ThinkPad T42で動作するChromium OSのカスタムビルドを公開しました。興味がありましたらお試しいただければと思います。

17.04.24 追記: 「本当にPAE機能がないPentiumⅢ以前のCPU」という記載がありましたが誤りであるというご指摘をいただきましたので訂正いたしました。






ランキングに参加してみました。クリックしていただければ嬉しいです。

にほんブログ村 IT技術ブログ IT技術メモへ
にほんブログ村

パソコン ブログランキングへ

拍手[13回]

PR


2014/04/06 (Sun) 13:24
数か月前にCentOS6を古いマシン(32bit)から64bit OSが動かせる新しいマシンにリプレースしたのですが、今の今までウィルススキャンソフトを入れていないという恐ろしいことに気づきました。

ということでリプレース前に使っていたClamAVを今のマシンに入れることにしました。
その手順をメモっておきます。作業は全部rootで行いました。

ダウンロード・インストール


リポジトリにrpmforgeが使えるように設定していればyumで以下のようにインストールできます。

# yum install --enablerepo=rpmforge clamav clamd


clamdの起動


clamdを起動しておきます。

# /etc/init.d/clamd start
Starting Clam AntiVirus Daemon: LibClamAV Warning: **************************************************
LibClamAV Warning: ***  The virus database is older than 7 days!  ***
LibClamAV Warning: ***   Please update it as soon as possible.    ***
LibClamAV Warning: **************************************************
                                                           [  OK  ]


ちなみにchkconfigはデフォルトでonになっているようですのでリブートしても自動で立ち上がるでしょう。

データベースの更新


上でデータベースが古いと出ているので更新します。

# /usr/bin/freshclam
ClamAV update process started at Sun Apr  6 11:54:37 2014
Downloading main-55.cdiff [100%]
main.cld updated (version: 55, sigs: 2424225, f-level: 60, builder: neo)
WARNING: getfile: daily-15077.cdiff not found on remote server (IP: 219.94.128.99)
WARNING: getpatch: Can't download daily-15077.cdiff from db.jp.clamav.net
WARNING: getfile: daily-15077.cdiff not found on remote server (IP: 211.10.155.48)
WARNING: getpatch: Can't download daily-15077.cdiff from db.jp.clamav.net
WARNING: getfile: daily-15077.cdiff not found on remote server (IP: 218.44.253.75)
WARNING: getpatch: Can't download daily-15077.cdiff from db.jp.clamav.net
WARNING: Incremental update failed, trying to download daily.cvd
Downloading daily.cvd [100%]
daily.cvd updated (version: 18746, sigs: 871270, f-level: 63, builder: neo)
Downloading bytecode.cvd [100%]
bytecode.cvd updated (version: 236, sigs: 43, f-level: 63, builder: dgoddard)
Database updated (3295538 signatures) from db.jp.clamav.net (IP: 27.96.54.66)
Clamd successfully notified about the update.



このfreshclamコマンドを日次で実行するスクリプトが/etc/cron.daily/freshclamという名前で自動でインストールされているので、以降は毎日定期的にアップデートが実行されるはずです。

スキャン実行スクリプトの作成


/etc/cron.dailyに日次スキャンを行うスクリプトを書いておきます。
# cd /etc/cron.daily
# vi clamscan

#!/bin/bash
LOG_FILE="/var/log/clamav/clamscan.log"

/usr/bin/yum -y update --enablerepo=rpmforge clamd 
/usr/bin/yum -y update --enablerepo=rpmforge clamav

/usr/bin/clamscan -i -r -l $LOG_FILE /home
/usr/bin/clamscan -i -r -l $LOG_FILE /raid6


とりあえず/homeと/raid6という2つのディレクトリをスキャンするように指定しています。-iは問題を検出したファイルだけを出力するオプション、-rはサブディレクトリもチェックするオプションです。-lオプションでログの出力先を指定しています。
あと、一応実行前にclamdとclamavの更新があればインストールするようにしています。

スキャンの実行


とりあえず作ったスクリプトでスキャンを実行しておきます。

# sh ./clamscan

こんなコマンドを実行してログを監視しておきます。10秒ごとにログの末尾30行を定期的に表示してくれます。

# watch -n 10 tail -n 30 /var/log/clamav/clamscan.log

何も出なければいいんですが、果たしてどうなることやら。問題がなければこんなログが出ます。

----------- SCAN SUMMARY -----------
Known viruses: 3290138
Engine version: 0.98.1
Scanned directories: 16114
Scanned files: 77250
Infected files: 0
Data scanned: 7608.61 MB
Data read: 1386266.04 MB (ratio 0.01:1)
Time: 705.741 sec (11 m 45 s)


infected filesが0なので平気だったようです。無事に終われば、後は毎日自動で実行されるはずです。






ランキングに参加してみました。クリックしていただければ嬉しいです。

にほんブログ村 IT技術ブログ IT技術メモへ
にほんブログ村

パソコン ブログランキングへ

拍手[0回]



2014/04/01 (Tue) 22:34
うちではCentOS6で2TBのディスク7台をRAID6で運用しているのですが、今日そのうちの1台が壊れたらしく、RAIDがデグレード状態になっていました。

ということで予備のディスクを使って復旧を行いました。

まず本当なら壊れたディスクをRAIDから除去するのですが、すっかり忘れてました。
ここからもうすでにいろいろまずかったのですが。 
 
で、マシンをシャットダウンしてディスク交換を行い、再起動しました。
fdiskで交換したディスクにパーティションを作って、パーティションタイプをLinux raid 自動検出に変えます。手順はこんな感じ。

# fdisk /dev/sdf

(略)

コマンド (m でヘルプ): n  ←新規パーティション
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p             ←基本領域
領域番号 (1-4): 1
最初 シリンダ (1-243201, default 1): 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-243201, default 243201): +243153   

コマンド (m でヘルプ): p 

Disk /dev/sdf: 2000.3 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdf1               1      243154  1953134473+  83  Linux  ←普通のLinuxパーティションなのでRAIDに変える

コマンド (m でヘルプ): t ←パーティションタイプ変更
Selected partition 1
16進数コード (L コマンドでコードリスト表示): fd     ←Linux RAIDを指定
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): p  ←状態確認

Disk /dev/sdf: 2000.3 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdf1               1      243154  1953134473+  fd  Linux raid 自動検出  ←Linux RAIDになった

コマンド (m でヘルプ): w    ←結果保存
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。
#

で、このディスクをRAIDに組み込みます。
# mdadm --manage /dev/md2 --add /dev/sdf
mdadm: added /dev/sdf

で、自動的にRAIDのリカバリが始まり、後は待つだけ。。。。

# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4] 
md2 : active raid6 sdc1[0] sdf[7] sdi1[6] sdh1[5] sdg1[4] sde1[2] sdd1[1]
      9765672000 blocks level 6, 64k chunk, algorithm 2 [7/6] [UUU_UUU]
      [>....................]  recovery =  0.0% (126080/1953134400) finish=1806.9min 

speed=18011K/sec


ん?!

なんか変だぞ?

よく見たら/dev/sdfになってるwww

ここは/dev/sdf1でないとダメじゃないですか!

ありゃま、どうしよう、ということでやり直しです。
まず、リカバリ中ですが無視していったんRAIDを止めました。

# mdadm --stop /dev/md2
mdadm: stopped /dev/md2

で、ミスって組み込んだ/dev/sdfをのぞいた6台でRAIDを組みなおします。

# mdadm --assemble /dev/md2 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdg1 /dev/sdh1 /dev/sdi1
mdadm: /dev/md2 has been started with 6 drives (out of 7).

間違えて/dev/sdfで組み込んじゃったHDDはパーティションテーブルがおかしくなっているはずなのでいったんクリアしておきます。

# dd if=/dev/zero of=/dev/sdf bs=512 count=64
64+0 records in
64+0 records out
32768 bytes (33 kB) copied, 0.260877 s, 126 kB/s

で、もう一度fdiskでパーティションを切り直し。手順は上に書いた通りです。
そして、今度こそは/dev/sdf1をRAIDに組み込みます。

# mdadm --manage /dev/md2 --add /dev/sdf1
mdadm: added /dev/sdf1

これで今度こそちゃんとリカバリが始まりました。

# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4] 
md2 : active raid6 sdf1[7] sdc1[0] sdi1[6] sdh1[5] sdg1[4] sde1[2] sdd1[1]
      9765672000 blocks level 6, 64k chunk, algorithm 2 [7/6] [UUU_UUU]
      [>....................]  recovery =  0.3% (6041092/1953134400) finish=1535.5min 

speed=21132K/sec

まったく、、我ながらなにやってるんでしょうかねwww
リカバリには丸一日かかるので放置しました。

で、終わったのでいったんリブートしました。するとまたデグレード。

みるとまた/dev/sdfがRAIDに取り込まれている。。。

これを忘れていたのが原因でした。

# mdadm --zero-superblock /dev/sdf

一度RAIDに取り込んだディスクは、ディスクの末尾にスーパーブロックというRAID専用の情報が書き込まれているので、これを消さないといけませんでした。

あと、よく考えたらAFTのことも忘れていました。AFTというのは物理セクタのサイズを従来の512バイトから4096バイトに拡張したものです。ただしLinux上だと論理セクタは512バイトのままのようです。
普通にfdiskでパーティションを切ると開始位置はシリンダにそろえられますが、これは論理セクタ単位だと63セクタになります。これだとAFTディスクの物理セクタサイズと一致しないので、fdiskを実行したとに以下のようなメッセージが出ます。

<非AFTディスクの場合>

ディスク /dev/sdg: 2000.4 GB, 2000398934016 バイト
ヘッド 255, セクタ 63, シリンダ 243201
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト  ← 物理セクタ=論理セクタ
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x0811122f

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdg1               1      243154  1953134473+  fd  Linux raid 自動検出
(ここに何も出ない)
  


<AFTディスクの場合>

# fdisk -l /dev/sdf

ディスク /dev/sdf: 2000.4 GB, 2000398934016 バイト
ヘッド 255, セクタ 63, シリンダ 243201
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト ←ここの物理が4096バイト
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
ディスク識別子: 0x00000000

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdf1               1      243154  1953134473+  fd  Linux raid 自動検出
Partition 1 does not start on physical sector boundary. ←こんなエラーが出る


fdiskを-uオプション付きで実行すると表示をセクタ単位にすることができます。それで実行すると以下のようになっています。

# fdisk -lu /dev/sdf

ディスク /dev/sdf: 2000.4 GB, 2000398934016 バイト
ヘッド 255, セクタ 63, シリンダ 243201
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
ディスク識別子: 0x00000000

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdf1              63  3906269009  1953134473+  fd  Linux raid 自動検出
Partition 1 does not start on physical sector boundary.

開始位置が63になっていて、これが8の倍数(4096/512)になっていないと性能が出ないという話があります。 性能が出ないだけで一応使えますが、とりあえずやり直すならfdiskを-u付きで起動して、ちゃんと物理セクタに合わせてパーティションを切りなおします。

[root@developper ~]# fdisk -u /dev/sdf

警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
      強く推奨します。.

コマンド (m でヘルプ): p

ディスク /dev/sdf: 2000.4 GB, 2000398934016 バイト
ヘッド 255, セクタ 63, シリンダ 243201, 合計 3907029168 セクタ
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
ディスク識別子: 0x00000000

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdf1              63  3906269009  1953134473+  fd  Linux raid 自動検出

コマンド (m でヘルプ): d
選択した領域 1

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 セクタ (63-3907029167, 初期値 63): 64 ← ここで64を指定
Last セクタ, +セクタ数 or +size{K,M,G} (64-3907029167, 初期値 3907029167):
初期値 3907029167 を使います ← Lastセクタは1足して8の倍数ならOK

コマンド (m でヘルプ): p

ディスク /dev/sdf: 2000.4 GB, 2000398934016 バイト
ヘッド 255, セクタ 63, シリンダ 243201, 合計 3907029168 セクタ
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
ディスク識別子: 0x00000000

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdf1              64  3907029167  1953514552   83  Linux

コマンド (m でヘルプ): t
選択した領域 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): p

ディスク /dev/sdf: 2000.4 GB, 2000398934016 バイト
ヘッド 255, セクタ 63, シリンダ 243201, 合計 3907029168 セクタ
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
ディスク識別子: 0x00000000

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdf1              64  3907029167  1953514552   fd  Linux raid 自動検出
(ここにエラーメッセージが出なければOK)
コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。


とりあえずこれで再度RAIDに組み込んでリカバリしたらうまくいきました。
RAIDのHDD置換はたまにしかやらないので手順を忘れてしまって一度だとうまくいかないことが多いです。今回はうまくリカバリできたけど、これから失敗しないようにしないと。。。



ランキングに参加してみました。クリックしていただければ嬉しいです。

にほんブログ村 IT技術ブログ IT技術メモへ
にほんブログ村

パソコン ブログランキングへ

拍手[0回]



2014/03/09 (Sun) 16:58
使おうとした4GBのUSBメモリが2GBずつ2つのパーティションに分かれていて、1つに戻したかったのでLinux(CentOS6.4)を使って作業しました。
その時のメモです。作業はすべてrootで行います。

  1. USBメモリをLinuxにつなぐ

     
  2. USBメモリのスペシャルファイル名を調べる。

    あらかじめUSBメモリのラベル名がわかっているなら、/dev/disk/by-labelにできたシンボリックリンクが指し示す実体を見ればわかります。

    linux# cd /dev/disk/by-label
    linux# ls -l
    lrwxrwxrwx. 1 root root 10  3\u6708  9 16:04 2014 HDDREG -> ../../sdj1

    この例ではUSBメモリにHDDREGというラベルがついていて、それの実体が/dev/sdj1であることがわかります。よってUSBメモリのスペシャルファイル名は/dev/sdjになります。
    念のため、fdisk -lを実行してパーティションの状態を確認します。
    linux# fdisk -l
    (略)
    ディスク /dev/sdj: 4001 MB, 4001366016 バイト
    ヘッド 64, セクタ 32, シリンダ 3816
    Units = シリンダ数 of 2048 * 512 = 1048576 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    ディスク識別子: 0x00000000
    
    デバイス ブート      始点        終点     ブロック   Id  システム
    /dev/sdj1   *           1        1967     2014192    e  W95 FAT16 (LBA)
    

    ファイルシステムがW95 F16なのでUSBメモリと考えて問題なさそうです。これを間違えてしまうと大変なことになるので慎重に調べます。不安なら/dev/disk/by-idや/dev/disk/by-pathでls -lコマンドを実行するのも効果的です。たいてい"usb"という文字列が含まれているシンボリックリンクがあります。今回の例を示すと以下のようになります。

    linux# ls -l /dev/disk/by-id
    (略)
    lrwxrwxrwx. 1 root root  9  3\u6708  9 16:31 2014 usb-Sony_Storage_Media_9B2001102180001905-0:0 -> ../../sdj
    lrwxrwxrwx. 1 root root 10  3\u6708  9 16:31 2014 usb-Sony_Storage_Media_9B2001102180001905-0:0-part1 -> ../../sdj1
    (略)
    linux# ls -l /dev/disk/by-path
    (略)
    lrwxrwxrwx. 1 root root  9  3\u6708  9 16:31 2014 pci-0000:00:1a.0-usb-0:1.4:1.0-scsi-0:0:0:0 -> ../../sdj
    lrwxrwxrwx. 1 root root 10  3\u6708  9 16:31 2014 pci-0000:00:1a.0-usb-0:1.4:1.0-scsi-0:0:0:0-part1 -> ../../sdj1
    (略)
    
  3. 以下のコマンドでUSBの先頭にあるパーティションテーブルを消します。
    ofがHDDだと大変なことになるので上に書いたように慎重に確認しておく必要があります。

    linux# dd if=/dev/zero of=/dev/sdj bs=512 count=64
    64+0 records in
    64+0 records out
    32768 bytes (33 kB) copied, 0.013923 s, 2.4 MB/s
    

    念のためにsyncしておきます。
    linux# sync
    
  4. あとは普通にfdiskでパーティションを切ります。

    linux# fdisk /dev/sdj
    
    警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
          強く推奨します。 and change display units to
             sectors (command 'u').
    
    コマンド (m でヘルプ): d
    選択した領域 1
    
    コマンド (m でヘルプ): p
    
    ディスク /dev/sdj: 4001 MB, 4001366016 バイト
    ヘッド 64, セクタ 32, シリンダ 3816
    Units = シリンダ数 of 2048 * 512 = 1048576 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    ディスク識別子: 0x00000000
    
    デバイス ブート      始点        終点     ブロック   Id  システム
    
    コマンド (m でヘルプ): n
    コマンドアクション
       e   拡張
       p   基本パーティション (1-4)
    p
    パーティション番号 (1-4): 1
    最初 シリンダ (1-3816, 初期値 1): 
    初期値 1 を使います
    Last シリンダ, +シリンダ数 or +size{K,M,G} (1-3816, 初期値 3816): 
    初期値 3816 を使います
    
    コマンド (m でヘルプ): p
    
    ディスク /dev/sdj: 4001 MB, 4001366016 バイト
    ヘッド 64, セクタ 32, シリンダ 3816
    Units = シリンダ数 of 2048 * 512 = 1048576 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    ディスク識別子: 0x00000000
    
    デバイス ブート      始点        終点     ブロック   Id  システム
    /dev/sdj1               1        3816     3907568   83  Linux
    
    コマンド (m でヘルプ): t
    選択した領域 1
    16進数コード (L コマンドでコードリスト表示): b
    領域のシステムタイプを 1 から b (W95 FAT32) に変更しました
    
    コマンド (m でヘルプ): p
    
    ディスク /dev/sdj: 4001 MB, 4001366016 バイト
    ヘッド 64, セクタ 32, シリンダ 3816
    Units = シリンダ数 of 2048 * 512 = 1048576 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    ディスク識別子: 0x00000000
    
    デバイス ブート      始点        終点     ブロック   Id  システム
    /dev/sdj1               1        3816     3907568    b  W95 FAT32
    
    コマンド (m でヘルプ): w
    パーティションテーブルは変更されました!
    
    ioctl() を呼び出してパーティションテーブルを再読込みします。
    
    警告: DOS 6.x パーティションを作成、または変更してしまった場合は、
    fdisk マニュアルの追加情報ページを参照してください。
    ディスクを同期しています。
    linux# 
    
    
あとはWindows上でコンピューターの管理-記憶域ーディスクの管理でUSBメモリをFAT32でフォーマットすればOKです。
この方法で作成したUSBメモリのパーティションに書き込んだubuntuで無事にブートすることができました。 




ランキングに参加してみました。クリックしていただければ嬉しいです。

にほんブログ村 IT技術ブログ IT技術メモへ
にほんブログ村

パソコン ブログランキングへ

拍手[0回]



プロフィール
HN:
zui
性別:
非公開
PR
忍者カウンター
忍者ブログ [PR]