LINUX.ORG.RU

Ответ на: комментарий от Eddy_Em

Да, у меня такая идея была, но неужели нет ничего проще?

Reset ★★★★★ ()

Вот раскладка по цилиндрам

sudo fdisk -l /dev/sda | awk '/[0-9][0-9]* cylinders/ {p=int($5/4); print 0":«p,p+1»:«2*p,2*p+1»:«3*p, 3*p+1»:«$5}'

0:2432 2433:4864 4865:7296 7297:9729

Скармливаешь *fdisk'u получаешь разделы

sdio ★★★★★ ()
Ответ на: комментарий от Eddy_Em

это придется парсить вот такую портянку

$ sudo fdisk -l /dev/sdb

Диск /dev/sdb: 10.7 ГБ, 10737418240 байт
255 heads, 63 sectors/track, 1305 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdb1               1        1305    10482381   83  Linux

а потом генерить портянку для sfdisk'а

Reset ★★★★★ ()
Ответ на: комментарий от Reset

теперь это пост-конкурс говнокода

#!/bin/bash


disk="/dev/sda"
pnum=4

fullsize=`fdisk -s /dev/sda`
let psize=$fullsize/$pnum
i=1
while [ $i -lt $pnum ]; do
fdisk $disk <<EOF
o
n
p
$i

$psize

w

EOF

    let i=i+1
done

fdisk $disk <<EOF
o
n
p
$i


w

EOF
madcore ★★★★★ ()
Ответ на: теперь это пост-конкурс говнокода от madcore
sub partition
{
        use integer;
        my $blocks = `fdisk -s /dev/sdb `;
        my $mes;
        my $p = $blocks/4;
        $mes .= "/dev/sdb1 : start=  0, size=  $p, Id=83\n";
        $mes .= "/dev/sdb2 : start= ".(2*$p).", size=  $p, Id=83\n";
        $mes .= "/dev/sdb3 : start= ".(3*$p).", size=  $p, Id=83\n";
        $mes .= "/dev/sdb4 : start= ".(4*$p).", size=  $p, Id=83\n";
        open FILE, '| sfdisk -uB -f /dev/sdb ';
        print FILE $mes;
        close FILE;
}

Можно конечно в цикл завернуть, но лениво, да и к тому же придется трахаться с расширенными разделами.

Reset ★★★★★ ()
Ответ на: теперь это пост-конкурс говнокода от madcore

еще проще

sub partition
{
        use integer;
        `dd if=/dev/zero of=/dev/sdb bs=1k count=1`;
        my ($cilinders) = `sfdisk -g /dev/sdb` =~ /([0-9]+) cylinders/;
        my $size = $cilinders/4;
        $mes .= ",$size,L\n";
        $mes .= ",$size,L\n";
        $mes .= ",$size,L\n";
        $mes .= ",$size,L\n";
        open FILE, '| sfdisk -uC -f /dev/sdb ';
        print FILE $mes;
        close FILE;
        `sfdisk -V /dev/sdb`;
}

Reset ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.