Знатокам Linux'a - как восстановит загрузчик малой кровью?

Есть винт, на нём был некий загрузчик, который был затёрт при установке ХР.

Physical number of disk 0 : 2527a2c7
 0 : C:* type=7  (HPFS/NTFS), size= 10241406 KB, Lba Pos=63
 1 : C:  type=f  (Win95 XInt 13 extended), size= 67898722 KB, Lba Pos=20482875
 2 : C:  type=7   (HPFS/NTFS), size= 35840983 KB, Lba Pos=20482938
 3 : C:  type=5   (Extended), size= 25551382 KB, Lba Pos=92164905
 4 : C:  type=b    (Win95 Fat32), size= 25551351 KB, Lba Pos=92164968
 5 : C:  type=5    (Extended), size= 2096482 KB, Lba Pos=143267670
 6 : C:  type=83     (Linux native), size= 2096451 KB, Lba Pos=143267733
 7 : C:  type=5     (Extended), size= 425722 KB, Lba Pos=147460635
 8 : C:  type=82      (Linux swap), size= 425691 KB, Lba Pos=147460698
 9 : C:  type=5      (Extended), size= 1389622 KB, Lba Pos=148312080
10 : C:  type=83       (Linux native), size= 1389591 KB, Lba Pos=148312143
11 : C:  type=5       (Extended), size= 2136645 KB, Lba Pos=151091325
12 : C:  type=83        (Linux native), size= 2136613 KB, Lba Pos=151091388
13 : C:  type=5        (Extended), size= 377527 KB, Lba Pos=155364615
14 : C:  type=83         (Linux native), size= 377496 KB, Lba Pos=155364678
15 : C:  type=5         (Extended), size= 80325 KB, Lba Pos=156119670
16 : C:  type=82          (Linux swap), size= 80293 KB, Lba Pos=156119733

При его старте было примерно такие варианты (по памяти):
    Linux Setup Linux Mandrake
    (Какая-то почта)
    (Ещё чегото-там)
    .......
    Windows XP
    (Ещё чегото-там)

Раньше с линуксом не работал, побыстрому пошарившись в инете, понял что дело обстоит не так как хотелось бы, придётся долго вникать.

Поэтому спрашиваю у спецов - можно ли в пару действий вернуть всё на место?

Добавлено спустя 59 минут 47 секунд:

Точнее там наверное не почта, это я с SMTP перепутал:)
Вот что находится в 6 разделе (отбрасывая ext реально это 4-ый логический диск) в \boot\map

Цитата:
linux-smp
linux
linux-nonfb
2425-2smp
263-7
2425-2
failsafe
windows
floppy

Вроде такое меню и выскакивало.
Попробовал bootpart'ом добавить - не грузит с винта, пытается из сети или флопаря...:(

[/]

1) Берем livecd линуксовый, грузимся с него
2) В консоли выполняем команду fdisk -l - получаем в выводе что-то вида:

[pre]
Disk /dev/sda: 73.4 GB, 73406611456 bytes
255 heads, 63 sectors/track, 8924 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 24 192748+ 83 Linux


/dev/sda2 25 753 5855692+ 83 Linux
/dev/sda3 754 2212 11719417+ 83 Linux
/dev/sda4 2213 8924 53914140 5 Extended
/dev/sda5 2213 3671 11719386 83 Linux
/dev/sda6 3672 8924 42194691 83 Linux
[/pre]

Дале с помошь команды mount (см. man mount ) монтируете девайсы в каталоги (для конкретики предположим что он называется /traget/ ) Надо найти как минимум корневой каталог. В нем - см. /etc/fstab и далее монтируеете относительно target руками все дисковые девайсы. В результате - получите дерево файловой системы в каталоге /target/ опсле чего делаете
mount -t proc proc none /target/proc
mount -t sysfs sysfs mone /target/sys (этак команда может не срабоатьа на дистрибутивах на яде 2.4)
После чего - сделаете chroot /target/ /bin/sh и попадаете собственно в ваш линукс. Далее вам предстоит только восстановить загрузчик - для этого см. наличие /etc/lilo.conf либо /boot/grub/menu.lst (подразумеваются пути после выполнения chroot). В зависимости от того какой загрузчик установлен, надо выполнить либо lilo без параметров либо grub-install передава ему в качестве парамтре имя файла диска на который ему надобно устанавливаться.

Если что-то в написаном мною не понятно, от постарайтесь дать больше информации и показать все упомнутые в конфиге файлы, благо что FAT-разделаы там похоже есть, значит и переписать фалики на них можно.
PS: интересно, это мудачьё из M$ когда-нибудь додумается пофиксить свой инсталлер?

ex-K9

Аватар пользователя mikkey

Вот что в упомянутом выше разделе в папке boot сидит:

    grub\ config (special file)
    map
    message (special file)
    message-graphic
    message-text
    vmlinuz (special file)
    vmlinuz-smp (special file)
    boot.0300
    config-2.4.25-2mdk
    System.map-2.4.25-2mdk
    vmlinuz-2.4.25-2mdk
    config-2.4.25-2mdksmp
    System.map-2.4.25-2mdksmp
    vmlinuz-2.4.25-2mdksmp
    config-2.6.3-7mdk

    kernel.h-2.6.3-7mdk
    System.map-2.6.3-7mdk
    vmlinuz-2.6.3-7mdk
    config-2.6.3-7mdksmp
    kernel.h-2.6.3-7mdksmp
    System.map-2.6.3-7mdksmp
    vmlinuz-2.6.3-7mdksmp
    kernel.h (special file)
    diag1.img
    diag2.img
    initrd-2.4.25-2mdk.img
    initrd-2.4.25-2mdksmp.img
    initrd-2.6.3-7mdk.img
    initrd-2.6.3-7mdksmp.img
    initrd.img (special file)
    initrd-smp.img (special file)
    ru4.klt
    System.map (special file)
    kernel.h-2.6.3-7mdk.tmp (special file)
grub\
    e2fs_stage1_5 fat_stage1_5
    ffs_stage1_5
    jfs_stage1_5
    minix_stage1_5
    reiserfs_stage1_5
    stage1
    stage2
    vstafs_stage1_5
    xfs_stage1_5
Щас посмотрю что в etc...

Добавлено спустя 10 минут 49 секунд:

Вот что в etc/lilo.conf

# File generated by DrakX/drakboot
# WARNING: do not forget to run lilo after modifying this file

boot=/dev/hda
map=/boot/map
default="linux-smp"
keytable=/boot/ru4.klt
prompt
nowarn
timeout=100
message=/boot/message
menu-scheme=wb:bw:wb:bw
image=/boot/vmlinuz
	label="linux"
	root=/dev/hda10
	initrd=/boot/initrd.img
	append="devfs=mount acpi=ht splash=silent"
	vga=788
	read-only
image=/boot/vmlinuz
	label="linux-nonfb"
	root=/dev/hda10
	initrd=/boot/initrd.img
	append="devfs=mount acpi=ht"
	read-only
image=/boot/vmlinuz-2.4.25-2mdksmp
	label="2425-2smp"
	root=/dev/hda10
	initrd=/boot/initrd-2.4.25-2mdksmp.img
	append="devfs=mount acpi=ht splash=silent"
	read-only
image=/boot/vmlinuz-2.6.3-7mdk
	label="263-7"
	root=/dev/hda10
	initrd=/boot/initrd-2.6.3-7mdk.img
	append="devfs=mount acpi=ht splash=silent"
	read-only
image=/boot/vmlinuz-smp
	label="linux-smp"
	root=/dev/hda10
	initrd=/boot/initrd-smp.img
	append="devfs=mount acpi=ht splash=silent"
	read-only
image=/boot/vmlinuz-2.4.25-2mdk
	label="2425-2"
	root=/dev/hda10
	initrd=/boot/initrd-2.4.25-2mdk.img
	append="devfs=mount acpi=ht splash=silent"
	read-only
image=/boot/vmlinuz
	label="failsafe"
	root=/dev/hda10
	initrd=/boot/initrd.img
	append="failsafe acpi=ht devfs=nomount"
	read-only
other=/dev/hda1
	label="windows"
	table=/dev/hda
other=/dev/fd0
	label="floppy"
	unsafe 

Насколько я понял, загрузчик тут Lilo а не Grub?
Т.е. чтоб восстановить загрузчик, нужно обязательно линуксом загрузиться или MS можно?

[/][/]

Забавно. Их там два. Каой был в MBR - сказать трудно. Грузиться надо таки в linux. Процедуру я вам описал.

ex-K9

Аватар пользователя mikkey

Ну и тяжко однако скажу я Вам...
То что их два я тоже догадался, но судя по отсутствию /boot/grub/menu.lst и наличию etc/lilo.conf загрузчик от Lilo.

Короче, загрузился с UBCD Insert'oм.
Долго вникал и пытался дать команды, описанные Вами, удалось смонтировать hda7, а вот с proc и sysfs проблемы, вроде не получилось, но chroot и lilo сработало, однако как оказывается не до конца:)
Загрузчик появился (который был раньше), но вот кроме Win ничего не загружает, точнее пытается линукс - но ругается.
Пытался скопировать лог, да не смог запустить какой-нить редактор + выделить - выделяется, а вот как в буфер воткнуть?...:(

Щас будет вторая попытка.

--
P.S. Вместо sysfs надо писать ext3? (там ext3)
P.P.S. По два раза тоже не надо повторять?

а как ругается-то при попытке загрузать linux ?
PS: вместо sysft ext3 писать не надо.
PPS: что именно повторять два раза? Не совсем понял вопрос.

ex-K9

Аватар пользователя mikkey

mount /dev/hda7 /home - OK
mount -t proc none /home/proc - OK
mount -t ext3 none /home/sys - ругается на несуществующее устройство none или типа того :(
lilo -

linux-smp 
linux 
linux-nonfb 
2425-2smp 
263-7 
2425-2 
failsafe 
windows 
floppy

Ребут - на загрузке ругается на kernel...

Добавлено спустя 2 минуты 37 секунд:

Kernel panic: No init found. Try passing init= option to kernel.

про третий mount забудьте, это актуально только для ядра 2.6, у вас 2.4
Как гругается на kernel - в духе "Kernel panic: VFS: Unable to mount root fs" ?
1) Покажите все же вывод fdisk -l
2) Скорее всего надо повторить процедуру еще раз, замени в lilo.conf root=/dev/hda10 на root=/dev/hda7
3) Использовались ли после установки linux но перед установкой венды тулзы типа Partition Magick, и если да, то что ими делалось?

ex-K9

Аватар пользователя mikkey

  :/ramdisk/home/insert # fdisk -l
  
  Disk /dev/hda: 80.0 GB, 80026361344 bytes
  255 heads, 63 sectors/track, 9729 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
  
     Device Boot      Start         End      Blocks   Id  System
     /dev/hda1   *           1        1275    10241406    7  HPFS/NTFS
     /dev/hda2            1276        9728    67898722+   f  W95 Ext'd (LBA)
     /dev/hda5            1276        5737    35840983+   7  HPFS/NTFS
     /dev/hda6            5738        8918    25551351    b  W95 FAT32
     /dev/hda7            8919        9179     2096451   83  Linux
     /dev/hda8            9180        9232      425691   82  Linux swap
     /dev/hda9            9233        9405     1389591   83  Linux
     /dev/hda10           9406        9671     2136613+  83  Linux
     /dev/hda11           9672        9718      377496   83  Linux
     /dev/hda12           9719        9728       80293+  82  Linux swap
     :/ramdisk/home/insert # mount /dev/hda7 /home/targ
     :/ramdisk/home/insert # mount -t proc none /home/targ/proc
     :/ramdisk/home/insert # mount -l
     /dev/root on / type ext2 (rw)
     /dev/scd0 on /cdrom type iso9660 (ro)
     /dev/cloop on /INSERT type iso9660 (ro)
     /ramdisk on /ramdisk type tmpfs (rw,size=199280k)
     /proc/bus/usb on /proc/bus/usb type usbdevfs (rw,devmode=0666)
     /dev/hda6 on /home type vfat (rw)
     /dev/hda7 on /home/targ type ext3 (rw) []
     none on /home/targ/proc type proc (rw)
     :/ramdisk/home/insert # chroot /home/targ/ /bin/sh
     sh-2.05b# lilo
     Added linux
     Added linux-nonfb
     Added 2425-2smp
     Added 263-7
     Added linux-smp *
     Added 2425-2
     Added failsafe
     Added windows
     Added floppy
     sh-2.05b# mount -l
     /dev/ide/host0/bus0/target0/lun0/part10 on / type ext3 (rw)
     none on /proc type proc (rw)
     none on /dev type devfs (rw)
     sh-2.05b# fdisk -l
     
     Disk /dev/hda: 80.0 GB, 80026361344 bytes
     255 heads, 63 sectors/track, 9729 cylinders
     Units = cylinders of 16065 * 512 = 8225280 bytes
     
        Device Boot      Start         End      Blocks   Id  System
	/dev/hda1   *           1        1275    10241406    7  HPFS/NTFS
	/dev/hda2            1276        9728    67898722+   f  W95 Ext'd (LBA)
	/dev/hda5            1276        5737    35840983+   7  HPFS/NTFS
	/dev/hda6            5738        8918    25551351    b  W95 FAT32
	/dev/hda7            8919        9179     2096451   83  Linux
	/dev/hda8            9180        9232      425691   82  Linux swap
	/dev/hda9            9233        9405     1389591   83  Linux
	/dev/hda10           9406        9671     2136613+  83  Linux
	/dev/hda11           9672        9718      377496   83  Linux
	/dev/hda12           9719        9728       80293+  82  Linux swap
	sh-2.05b# 

K9 писал(-а):
mount -t proc proc none /target/proc
mount -t sysfs sysfs mone /target/sys (этак команда может не срабоатьа на дистрибутивах на яде 2.4)

Если proc proc два раза - то ошибка со справкой по использованию.
Так, похоже надо не sysfs а sysft, щас испробую.

Добавлено спустя 1 минуту 59 секунд:

РМ не использовались, по крайней мере мной, и следов их не видно.
Менять на hda10 hda7 не пробовал, раньше ведь грузилось... пока так мучаю.

Добавлено спустя 23 минуты 20 секунд:

sysft - пофиг, но как я уже понял, это для более свежего ядра.
Поменял hda10 на hda7 - пошла загрузка, дальше обычного, тормознуло на:

Активизируются разделы для свопинга:   swapon: dev/hda11: invalid argument
                                                                                                                   [FAILED]

Потом запустилась проверка ФС на hda12 - ругнулось на суперблок и на Magic Number и т.д. и.т.п. :(

/dev/hda10 монтировать и смотреть не пробывали?
Попробуйте прегрузится и в командной строке lilo напишите linux root=/dev/hda7 devfs=mount acpi=ht

ex-K9

Аватар пользователя mikkey

K9 писал(-а):
/dev/hda10 монтировать и смотреть не пробывали?

Там ничего нет, только lost&found, да и то вроде оно создалось при проверке ФС.

Насколько я понял ситуацию, поменялась "структура разделов", т.е. раньше теперешний hda7 был hda10, или lilo так думал, поэтому при загрузке с него, свап должен быть на hda8, но lilo думает что hda11 (10+1=11), и пытается его подключить как свап, но реально hda11 - не свап, поэтому и выскакивает ошибка при проверке ФС, аналогично с hda9 - lilo думает что это сейчас hda12, который является свапом, и никаких суперблоков там нет и быть не может (наверное..., со структурой линуксовой ФС я не знаком, сужу по сообщениям e2fsck).

K9 писал(-а):
Попробуйте прегрузится и в командной строке lilo напишите linux root=/dev/hda7 devfs=mount acpi=ht

Эта операция должна указать lilo откуда "считать" разделы, но как в эту строку попасть?
Я попробовал:
:/ramdisk/home/insert # chroot /home/hd7/ /bin/sh
sh-2.05b# lilo
Added linux
Added linux-nonfb
Added 2425-2smp
Added 263-7
Added linux-smp *
Added 2425-2
Added failsafe
Added windows
Added floppy

sh-2.05b# linux root=/dev/hda7 davfs=mount acpi=ht
sh: linux: command not found

sh-2.05b# lilo linux root=/dev/hda7 davfs=mount acpi=ht
usage: lilo [ -C config_file ] -q [ -m map_file ] [ -v N | -v ... ]
       lilo [ -C config_file ] [ -b boot_device ] [ -c ] [ -g | -l | -L ]
            [ -F ] [ -i boot_loader ] [ -m map_file ] [ -d delay ]
	    [ -v N | -v ... ] [ -t ] [ -s save_file | -S save_file ]
            [ -p ][ -P fix | -P ignore ] [ -r root_dir ] [ -w | -w+ ]
       lilo [ -C config_file ] [ -m map_file ] -R [ word ... ]
       lilo [ -C config_file ] -I name [ options ]
       lilo [ -C config_file ] [ -s save_file ] -u | -U [ boot_device ]
       lilo -A /dev/XXX [ N ]           inquire/activate a partition
       lilo -M /dev/XXX [ mbr | ext ]   install master boot record
       lilo -T help                     list additional options
       lilo -X                          internal compile-time options
       lilo -V [ -v ]                   version information
												   
sh-2.05b# 

?
Или можно какой-нить конфиг ручками подправить?

Добавлено спустя 40 минут 39 секунд:

Нашол! :)
/etc/fstab

/dev/hda10 / ext3 defaults 1 1
none /dev/pts devpts mode=0620 0 0
/dev/hda12 /home ext3 defaults 1 2
/dev/hdd /mnt/cdrom auto umask=0,user,iocharset=koi8-u,codepage=866,noauto,ro,exec 0 0
none /mnt/floppy supermount dev=/dev/fd0,fs=ext2:vfat,--,umask=0,iocharset=koi8-u,sync,codepage=866 0 0
/dev/hda1 /mnt/win_c ntfs umask=0,nls=koi8-u,ro 0 0
/dev/hda5 /mnt/win_d ntfs umask=0,nls=koi8-u,ro 0 0
/dev/hda6 /mnt/win_e vfat umask=0,iocharset=koi8-u,codepage=866 0 0
none /proc proc defaults 0 0
/dev/hda8 swap swap defaults 0 0
/dev/hda11 swap swap defaults 0 0 

заменил на
/dev/hda7 / ext3 defaults 1 1
none /dev/pts devpts mode=0620 0 0
/dev/hda9 /home ext3 defaults 1 2
/dev/hdd /mnt/cdrom auto umask=0,user,iocharset=koi8-u,codepage=866,noauto,ro,exec 0 0
none /mnt/floppy supermount dev=/dev/fd0,fs=ext2:vfat,--,umask=0,iocharset=koi8-u,sync,codepage=866 0 0
/dev/hda1 /mnt/win_c ntfs umask=0,nls=koi8-u,ro 0 0
/dev/hda5 /mnt/win_d ntfs umask=0,nls=koi8-u,ro 0 0
/dev/hda6 /mnt/win_e vfat umask=0,iocharset=koi8-u,codepage=866 0 0
none /proc proc defaults 0 0
/dev/hda8 swap swap defaults 0 0
/dev/hda12 swap swap defaults 0 0 

Дефолтный линукс грузится нормально, второй останавливается на "пустом рабочем столе" с курсором Х, наверное он такой и был...

Спасибо за помощь!

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей