すぐに回答を受け入れることができなくても、これを書き留めても問題ないことを願っています(そして、それが問題ないことを願っています-以下にCパッチがあるため):
デスクトップ PC ( ) のハードディスクを台無しにしたようです{DRDY err}
。そこで、起動可能なメディアを実行して を実行したかったfsck
のですが、このデスクトップの CD が壊れているため、USB フラッシュしか使用できません。Ubuntu と Suse の USB サムドライブがいくつかあります。これらはデスクトップで起動します。しかし、ブート中に udev はハード ドライブを検出しようとします。ハード ディスクがねじ止めされているため、そこでループするだけで、それぞれの OS がブートを終了することはありません。
だから私はSystemRescueCdをダウンロードしようとしました。SystemRescueCD をインストールしようとしたこの USB サムドライブがあります。
# lsusb with sudo, to retrieve all info
$ sudo lsusb -v -d 058f:6387 | grep -i 'id\|iManufacturer\|iProduct\|iSerial\|bInterface'
Bus 001 Device 043: ID 058f:6387 Alcor Micro Corp. Transcend JetFlash Flash Drive
idVendor 0x058f Alcor Micro Corp.
idProduct 0x6387 Transcend JetFlash Flash Drive
iManufacturer 1 takeMS
iProduct 2 Mem-drive Mini
iSerial 3 C5E7F0CC
bInterfaceNumber 0
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk (Zip)
# search by serial:
$ find /dev/disk/by-id/ -name '*C5E7F0CC*'
/dev/disk/by-id/usb-takeMS_Mem-drive_Mini_C5E7F0CC-0:0-part1
/dev/disk/by-id/usb-takeMS_Mem-drive_Mini_C5E7F0CC-0:0
# list and get device node
$ ls -la /dev/disk/by-id/usb-takeMS_Mem-drive_Mini_C5E7F0CC-0:0
lrwxrwxrwx 1 root root 9 2013-03-25 20:37 /dev/disk/by-id/usb-takeMS_Mem-drive_Mini_C5E7F0CC-0:0 -> ../../sdc
$ ls -la /dev/disk/by-id/usb-takeMS_Mem-drive_Mini_C5E7F0CC-0\:0-part1
lrwxrwxrwx 1 root root 10 2013-03-25 20:37 /dev/disk/by-id/usb-takeMS_Mem-drive_Mini_C5E7F0CC-0:0-part1 -> ../../sdc1
# it is /dev/sdc - list disk info
$ sudo fdisk -l /dev/sdc
Disk /dev/sdc: 2108 MB, 2108686336 bytes
94 heads, 29 sectors/track, 1510 cylinders
Units = cylinders of 2726 * 512 = 1395712 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003e405
Device Boot Start End Blocks Id System
/dev/sdc1 * 1 1511 2059263+ c W95 FAT32 (LBA)
Ubuntu 11.04 Natty ネットブックを使用してサムドライブのイメージを作成しようとしましたが、両方を使用しました
- 推奨されるusb_inst.sh インストーラー; と
- 私は
unetbootin
(経由でsudo apt-get install unetbootin
)使用しようとしました;
どちらの場合も、デスクトップで USB サムドライブを起動しようとすると、起動手順が次のように失敗します。
SYSLINUX 4.02 debian-20101016 CHS Copyright (C) 1993-2010 H. Peter Anvin et al
ERROR: No configuration file found
No DEFAULT or UI configuration directive found!
boot:
....起動時にプロンプトを表示します。(実際、unetbootin
入力する前に「DMIプールデータの検証」で失敗しますsyslinux
-おそらく、イメージしようとしている.isoよりもはるかに古いためです)。
まず、 No Default or UI Configuration Found!で述べたように md5 をチェックしました。
$ md5sum ./systemrescuecd-x86-3.5.0.iso
48552b9e905872bd5061eb112b73ea20 ./systemrescuecd-x86-3.5.0.iso
...しかし、Sysresccd-versionsによると、問題ないようです。
sudo gparted /dev/sdc
次に、ドライブを (経由で) FAT16 に再フォーマットしようとしました。usb_inst.sh
とunetbootin
メソッドの両方を繰り返しました-再びサイコロはありません。これらすべてのケースで、QEMU エミュレーターでフラッシュ USB サムドライブを実行しようとすると、非常に面白いです。
# sudo apt-get install qemu
sudo qemu -hda /dev/sdc
...正常に起動します-syslinuxメニューなどを表示します; ただし、デスクトップでの起動は常に失敗します。
ここで、問題のあるデスクトップ PC の起動画面から次の情報を書き留めることができることを言及しておく必要があります。
Award Modular BIOS v6.00PG
AMDRS740 BIOS
経由F12でアクセスできる起動メニューがあり、起動メニューでは、他のオプションの中でも、これらは USB 用です。
...
USB-FDD
USB-ZIP
USB-CDROM
USB-HDD
...
通常、私は USB-HDD を選択しますが、他のものも試しました。入る前に手順がフリーズするか、syslinux
上記のように起動に失敗します。
ディレクトリ/ファイルの名前を からisolinux
に手動で変更することをお勧めしますsyslinux
( USB から起動しようとしています- Ubuntu に問い合わせてください) 。また、USB フラッシュ サムドライブのルートにコピーするというアドバイスもあります (ライブ USB を起動できない、Linux - スーパー ユーザー)。しかし、まだ改善はありません - 構成ファイルが見つからないという不平を言っています - どうやら.usb_inst.sh
syslinux/isolinux.bin
syslinux.cfg
syslinux
syslinux.cfg
次に、どうにかしてsyslinuxを「デバッグ」できるかどうかを調べてみました。syslinuxでログ トレース/デバッグ/トラブルシューティングが見つかりました - The Syslinux Project - reboot.pro :
> syslinux をトレースまたはログ記録するための特定のコマンドはありますか?
オープン ソースであるため、Syslinux をコンパイルして追加のデバッグ出力を有効にすることができます。
また、[解決済み] 起動時にスタック: Syslinux 問題 [アーカイブ] - Ubuntu フォーラム: "_ syslinux のデバッグについては、http: //www.syslinux.org/wiki/index.php/Development/Debugging で説明されていますが、効果的なデバッグ (正しく呼び出すには、デバッグ フックを追加するために再コンパイルする必要があります。_". ただし、Development/Debugging - Syslinux Wikibochs
では、 ;と呼ばれるものについて説明しています。そして、それはそれ自体をデバッグすることだと思いsyslinux
ます-必ずしもそれが存在する環境を「デバッグ」(またはクエリ)する必要はありません.
syslinux
とにかく、ついに、ソースから取得する以外に方法がわかりませんでした。基本的に、これはビルドするために必要でした:
sudo apt-get install nasm
sudo apt-get install uuid-dev
git clone git://git.kernel.org/pub/scm/boot/syslinux/syslinux.git syslinux-git
cd syslinux-git/
make OPTFLAGS+=-DDEBUG=1
syslinux
結局のところ、特定のコンピューターに接続されたときに何が「見える」かを示すようなデバッグを有効にする方法は明確ではありません。起動時にロードすることを考えるとsyslinux
、問題はファイルシステムとして認識されるものです。上記のように DEBUG 環境変数を有効にしようとしました (に追加override OPTFLAGS :=
した後Makefile
) - しかし、それ自体は、起動失敗時に新しいメッセージを生成しませんでした。次のコマンドを使用して、USB サムドライブを「書き込み」ました (Gnome アプレットからアンマウントした後)。
sudo ./linux/syslinux --stupid --directory /syslinux --install /dev/sdc1
...そして、私はありとなしの両方を試しましたstupid
(そして、ソースビルドバージョンとNattyのUbuntuパッケージリポジトリからのバージョンの両方)。
rosh
ソースを調べてみると、 ( Read-Only SHell )と呼ばれるものがあることに気付きました- ただし、それは - としてコンパイルされ、rosh.c32
- でブート カーネル オプションとして使用することになっていますがsyslinux.cfg
、前述のように、ロードできません。残念ながら、私rosh.c32
の問題にはあまり役に立ちません。
ただし、 がコマンドをrosh
実装していることを考慮してls
、関連する部分を - のコードにコピーし、構成ファイルをスキャンするときにルートのリストをsyslinux
トリガーしようとしました。これらの変更はsyslinux-e40ba60-rosh-ls.patchに記録されています。起動時に次のようになります。ls /
syslinux
SYSLINUX 4.06 CHS 5-ge40ba60* Copyright (C) 1993-2010 H. Peter Anvin et al
Listing: "/"
rosh_ls_arg_dir 0 files found
Listing: "/syslinux"
Listing: ""
CurrentDirName: "/syslinux/"
confignamebuf: /syslinux/extlinux.conf; realpath -1
confignamebuf: /syslinux/syslinux.cfg; realpath -1
confignamebuf: /boot/syslinux/extlinux.conf; realpath -1
confignamebuf: /boot/syslinux/syslinux.cfg; realpath -1
confignamebuf: /syslinux/extlinux.conf; realpath -1
confignamebuf: /syslinux/syslinux.cfg; realpath -1
confignamebuf: /extlinux.conf; realpath -1
confignamebuf: /syslinux.cfg; realpath -1
ERROR: No configuration file found
No DEFAULT or UI configuration directive found!
興味深いことに。root/
の場合、_ls
関数は少なくとも「0 個のファイル」を返します。他のもの ("/syslinux" と空の文字列 "") は既にopendir
呼び出しに失敗しているため、_ls
関数は呼び出されません!
関数のドタバタ コピーはls
意図したとおりに機能しないと考えていたでしょう。しかし、ネットブックでサムドライブを実行するとqemu
、実際にはファイルの完全なリストが提供されます-少なくとも/
、関数が呼び出されてデスクトップに戻るとすれば、実際に機能すると思います.
しかし、それでも私の問題は解決しません。起動後にルートの下に 0 ファイルが表示されるのはなぜですか? この問題をデバッグするために他に何ができますか? いくつかの C コードをパッチしてもかまいませんが、何を探すべきかわかりません。デスクトップ マシンで起動するための USB サムドライブを正しく準備する必要があります...syslinux
/
syslinux