Compaq Smart Array + fdisk, instalka + ruting
Blues
blues w ds6.pg.gda.pl
Pon, 10 Cze 2002, 14:22:50 CEST
On Mon, 10 Jun 2002, Jakub Bogusz wrote:
> > > > > W niedziele mialem do przeinstalowania serwer na RH. Sprzet mial hw
> > > > > raid na Smart Array 2. Pod RH fdisk pokazywal prawidlowe wartosci
> > > > > pojemnosci dysku, natomiast ten z instalatora PLD twierdzil, ze dysk
> > > > > ma 1 cylinder. Musialem sie przeprosic z partedem... Czy tylko u mnie
> > > > > sa takie kfiatki?
> > > > Wlasnie sprawdzilem po instalacji i wyglada na to, ze fdisk z
> > > > dystrybucji tez ma cos nie tak pod sufitem:
> > > A kernel masz z PLD, czy z kernel.org?
> > > fdisk (z niedystrybucyjnym kernelem, ale nie wiem czy to ma znaczenie[1])
> > > z RAID-em Myleksa też wariuje.
> > > [1] kiedyś zdarzały się podobne numery z fdiskiem tylko na
> > > niedystrybucyjnym kernelu na zwykłych dyskach IDE czy SCSI, ale chyba
> > > przeszło (od paru miesięcy już czegoś takiego nie widziałem).
> > Owszem - wariuje.
> > U siebie mam starą binarkę ze strony mylexa - chodzi ładnie. Mam też
> > starego patcha z tej strony, ale jest duży i do mocnego poprawienia.
> Duży? fdisk.patch z 1999 roku ma poniżej 3kB - to ten?
> Jest do fdiska z util-linux 2.8, jedyne zmiany dotyczą sposobu
> wyświetlania oraz uwzględniania /dev/rd/*, a nie odczytu geometrii.
> Zmiany te są uwzględnione w util-linux 2.11* (a raczej były, bo od
> tamtego czasu kod w niektórych miejscach się mocno zmienił).
Tak, to jest ten - coś mi się pozajączkowało, że on taki wielki (tak,
wiem, lenistwo... =) )
--- util-linux-2.8/disk-utils/fdisk.c- Thu Jun 11 15:19:29 1998
+++ util-linux-2.8/disk-utils/fdisk.c Fri Jul 17 17:44:22 1998
@@ -1100,6 +1100,7 @@
{
struct partition *p;
char *type;
+ int digit_last = 0;
int i, w;
#if defined(sparc)
@@ -1110,22 +1111,26 @@
w = strlen(disk_device);
+ if (isdigit(disk_device[w-1]))
+ digit_last = 1;
+
printf("\nDisk %s: %d heads, %d sectors, %d cylinders\nUnits = "
"%ss of %d * 512 bytes\n\n", disk_device, heads, sectors,
cylinders, str_units(), display_factor);
if (w < 5)
w = 5;
printf("%*s Boot %s Start End Blocks Id System\n",
- w + 1, "Device", show_begin ? " Begin " : " ");
+ (digit_last ? w + 2 : w + 1),
+ "Device", show_begin ? " Begin " : " ");
for (i = 0 ; i < partitions; i++) {
if ((p = part_table[i])->sys_ind) {
unsigned int psects = get_nr_sects(p);
printf(
show_begin
- ? "%*s%-2d %c%9d%9d%9d%9d%c %2x %s\n"
- : "%*s%-2d %c%c%9d%9d%9d%c %2x %s\n",
-/* device */ w, disk_device, i+1,
+ ? "%*s%s%-2d %c%9d%9d%9d%9d%c %2x %s\n"
+ : "%*s%s%-2d %c%c%9d%9d%9d%c %2x %s\n",
+/* device */ w, disk_device, (digit_last ? "p" : ""), i+1,
/* boot flag */ !p->boot_ind ? ' ' : p->boot_ind == ACTIVE_FLAG
? '*' : '?',
show_begin ?
@@ -1805,6 +1810,14 @@
try("/dev/edb", 0);
try("/dev/edc", 0);
try("/dev/edd", 0);
+ try("/dev/rd/c0d0", 0);
+ try("/dev/rd/c0d1", 0);
+ try("/dev/rd/c0d2", 0);
+ try("/dev/rd/c0d3", 0);
+ try("/dev/rd/c0d4", 0);
+ try("/dev/rd/c0d5", 0);
+ try("/dev/rd/c0d6", 0);
+ try("/dev/rd/c0d7", 0);
}
exit(0);
}
@@ -1812,7 +1825,7 @@
if (opts) {
/* Silly assumptions here about device naming */
nowarn = 1;
- disk_device = (char *) malloc(9);
+ disk_device = (char *) malloc(16);
type_open = O_RDONLY;
opts = argc - optind;
@@ -1821,13 +1834,25 @@
for (j = optind; j < argc; j++) {
part = argv[j];
- if (strlen(part) < 9)
- fatal(usage);
- if (!(i = atoi(part + 8)))
- fatal(usage);
- i--; /* count from 0 */
- strncpy(disk_device, part, 8);
- disk_device[8] = 0;
+ if (strncmp(part, "/dev/rd/", 8) == 0) {
+ char *p = strrchr(part, 'p');
+ if (p == NULL)
+ fatal(usage);
+ if (!(i = atoi(p + 1)))
+ fatal(usage);
+ i--; /* count from 0 */
+ *p = '\0';
+ strcpy(disk_device, part);
+
+ } else {
+ if (strlen(part) < 9)
+ fatal(usage);
+ if (!(i = atoi(part + 8)))
+ fatal(usage);
+ i--; /* count from 0 */
+ strncpy(disk_device, part, 8);
+ disk_device[8] = 0;
+ }
if ((fd = open(disk_device, type_open)) < 0)
fatal(unable_to_open);
close(fd);
--
---------------------------------
pozdr. Paweł Gołaszewski
---------------------------------
CPU not found - software emulation...
Więcej informacji o liście dyskusyjnej pld-devel-pl