[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";