[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:09628] Re: 8G over disk setup



佐野@浜松です。

  武藤@イソターネット協会さん:

> sano>  BIOS = LARGE, C/H/S=1653/255/63 な状態で 200MByte 程度の
> sano> 「緊急起動用 root」を作ってしまって (後で何か起きた時にも
> sano> 役に立つでしょう) そこにとりあえず最小限のシステムを構築
...
> そうですね、やってみます。

カーネルの再構築もしようとすると 200MB ではちょっと狭いかも
しれませんね。 500MB くらい取っておいたほうが良いかも。

> マザーボードは AOpen AX59Pro を使ってますです。

すみません、これがそうかどうかはわかりませんです。

> sano> > ディスクパーティションの書き込みに失敗してしまうと
> sano> > FATAL ERROR: Cannot read disk drive
> sano> > となってしまってcfdiskでの調査は出来ませんです。
> sano> 
> sano>  cfdisk -z /dev/hda で起動することは可能ですか ?
> 
> はい、可能でした。

これは、いったん書き込みに失敗したことで、パーティション
テーブルが読めなくなっているために -z オプションを
付けないと cfdisk が起動できなくなっているのでしょう。

> sano> 良いのでしょうが、もしできなければカーネルにパッチを当てる
> sano> 必要があるかもしれません。 LBA を使うかどうかの制御は
> sano> ブートオプションではできないみたいですから。

ちょっと 2.0.34 の drivers/block/ide.c への変更を書いてみました。
テストしてないのでちゃんと動くかどうかわかりませんが、以下の変更
は、 LBA アクセスのためのブートオプション "hda=lba" を追加する
意図で書いたものです。

--- ide.c.2034	Sat Nov  7 00:22:00 1998
+++ ide.c	Sat Nov  7 00:40:57 1998
@@ -638,7 +638,11 @@
 #endif /* CONFIG_BLK_DEV_IDEFLOPPY */
 	if (drive->media != ide_disk)
 		return 0x7fffffff;	/* cdrom or tape */
-	drive->select.b.lba = 0;
+	if(drive->select.b.lba != 1) {
+		drive->select.b.lba = 0;
+	} else {
+		id->lba_capacity = capacity;
+	}
 	/* Determine capacity, and use LBA if the drive properly supports it */
 	if (id != NULL && (id->capability & 2) && lba_capacity_is_ok(id)) {
 		if (id->lba_capacity >= capacity) {
@@ -3085,7 +3089,7 @@
 	if (s[0] == 'h' && s[1] == 'd' && s[2] >= 'a' && s[2] <= max_drive) {
 		const char *hd_words[] = {"none", "noprobe", "nowerr", "cdrom",
 				"serialize", "autotune", "noautotune",
-				"slow", NULL};
+				"slow", "lba", NULL};
 		unit = s[2] - 'a';
 		hw   = unit / MAX_DRIVES;
 		unit = unit % MAX_DRIVES;
@@ -3117,6 +3121,9 @@
 				goto done;
 			case -8: /* "slow" */
 				drive->slow = 1;
+				goto done;
+			case -9: /* "lba" */
+				drive->select.b.lba = 1;
 				goto done;
 			case 3: /* cyl,head,sect */
 				drive->media	= ide_disk;


「緊急用ルート」をインストールできたら、カーネルを再構築して
試してみることもできるでしょう。

-- 
 <sano@xxxxxxxxxxxxxxxxxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)