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

partition.pl



	メモリカードのpartition分けを楽にするかもしれないscriptです。
	own riskで使ってください。直接ディスクに書く操作はしませんが...

	MC-R530ですが、まだ成功してません。
ftp://ftp.netbsd.org/pub/NetBSD/arch/hpcmips/snapshot/comdex-fall-1999/boot/boot/pbsdboot.exe
	を使おうとしたら「こいつはexe fileちゃうで」と怒られました。
	コピー時の問題じゃあないと思うのですが、とりあえずNetBSD-current
	repositoryのpbsdboot.uuを持って来て挑戦中です。お初なのに人柱は
	危険だったか?

itojun
#! /usr/pkg/bin/perl
$drive = 'wd1';
$dos = 5 * 1024 * 1024;
$swap = 10 * 1024 * 1024;

open(IN, "fdisk $drive |");
$dummy = <IN>; $dummy = <IN>; $dummy = <IN>; $dummy = <IN>;
$line = <IN>;
close(IN);
if ($line =~ /cylinders: (\d+) heads: (\d+) sectors\/track: (\d+)/) {
	($cyl, $head, $sec) = ($1, $2, $3);
} else {
	die "fdisk incompatible";
}
$whole = $cyl * $head * $sec;

$dos /= 512;
if ($dos % ($head * $sec)) {
	$dos -= ($dos % ($head * $sec));
	$dos += $head * $sec;
}

print "fdisk -f -u -0 -s '6/32/$dos' $drive\n";
$cb = 32 + $dos;
$cs = $whole - $cb;
print "fdisk -f -u -1 -s '169/$cb/$cs' $drive\n";

print "disklabel $drive > foo\n";
print "disklabel -r -R $drive foo\n";

system "disklabel $drive > foo";
open(IN, "<foo");
open(OUT, ">new");
while (<IN>) {
	last if /^\d+ partitions:/;
	print OUT;
}
close(IN);

$ab = $cb;
$as = $cs - $swap / 512;
$bb = $ab + $as;
$bs = $swap / 512;
print OUT "5 partitions:\n";
print OUT "  a: $as $ab 4.2BSD 1024 8192 16\n";
print OUT "  b: $bs $bb swap\n";
print OUT "  c: $cs $cb unused 0 0\n";
print OUT "  d: $whole 0 unused 0 0\n";
print OUT "  e: $dos 32 MSDOS\n";
close(OUT);
print "disklabel -R $drive new\n";

print 'newfs /dev/r' . $drive . "a\n";