LINUX.ORG.RU

С помощью dd читаешь содержимое MBR и в каком-нибудь hex редакторе изучаешь его содержимое.

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

Там обычно сразу видно, что сидит. Надписи типа ...MSDOS... намекают. А куда ведут да, может потребоваться дизассемблер.

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

Не очевидно. Там двоичный код и только три надписи

Invalid partition tableError loading operating systemMissing operating system

Собственно, ситуация такая: при загрузке с USB HDD возникает надпись Error loading operating system. Как понять, что ей надобно?

Dims2000
() автор топика
Ответ на: комментарий от AlexCones

Да вижу я boot, просто там нет файла grub.cfg, вот содержимое


[root@livecd grub]# ls -l
total 268
-rw-r--r--. 1 root root 31 Sep 15 18:32 device.map
-rw-r--r--. 1 root root 13204 Sep 15 17:49 e2fs_stage1_5
-rw-r--r--. 1 root root 12516 Sep 15 17:49 fat_stage1_5
-rw-r--r--. 1 root root 11748 Sep 15 17:49 ffs_stage1_5
-rw-r--r--. 1 root root 11756 Sep 15 17:49 iso9660_stage1_5
-rw-r--r--. 1 root root 13220 Sep 15 17:49 jfs_stage1_5
-rw-r--r--. 1 root root 1020 Sep 15 18:28 menu.lst
-rw-r--r--. 1 root root 11940 Sep 15 17:49 minix_stage1_5
-rw-r--r--. 1 root root 14300 Sep 15 17:49 reiserfs_stage1_5
-rw-r--r--. 1 root root 1341 Nov 14 2010 splash.xpm.gz
-rw-r--r--. 1 root root 512 Sep 15 17:49 stage1
-rw-r--r--. 1 root root 113044 Sep 15 17:49 stage2
-rw-r--r--. 1 root root 12008 Sep 15 17:49 ufs2_stage1_5
-rw-r--r--. 1 root root 11364 Sep 15 17:49 vstafs_stage1_5
-rw-r--r--. 1 root root 13932 Sep 15 17:49 xfs_stage1_5

Вот конфиг:
[root@livecd grub]# cat menu.slt
cat: menu.slt: No such file or directory
[root@livecd grub]# cat menu.lst
default 0
timeout 5
##YaST - generic_mbr
#gfxmenu (hd0,0)/boot/message
##YaST - activate

###Don't change this comment - YaST2 identifier: Original name: linux###
title Just Linux
root (hd0,0)
# kernel /boot/vmlinuz-2.6.37.1-1.2-desktop root=/dev/disk/by-id/usb-Generic_External_57442D575831314139303636-0:0-part1 resume=/dev/disk/by-id/usb-Generic_External_57442D575831314139303636-0:0-part3 splash=silent quiet showopts vga=normal
# kernel /boot/vmlinuz-2.6.37.1-1.2-desktop root=/dev/disk/by-id/usb-Generic_External_57442D575831314139303636-0:0-part1 resume=/dev/disk/by-id/usb-Generic_External_57442D575831314139303636-0:0-part3 nomodeset quiet showopts vga=normal
# initrd /boot/initrd-2.6.37.1-1.2-desktop

###Don't change this comment - YaST2 identifier: Original name: failsafe###
#title Failsafe — openSUSE 11.4 - 2.6.37.1-1.2
# root (hd0,0)
kernel /boot/vmlinuz-2.6.32-71.el6.x86_64 root=/dev/sdb1 noresume vga=normal selinux=disabled
initrd /boot/initramfs-2.6.32-71.el6.x86_64.img


Но я так понимаю, до этого дело не доходит, так как на экране появляется сообщение из MBR.

Dims2000
() автор топика
Ответ на: комментарий от Dims2000

Так. А в компе, с которого ты грузишься, уже же есть винт. Меня в данном случае смущает root (hd0,0). Посмотри, в каком порядке идут винты в текущей системе.

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

Других винтов на машине нет, она загружена с LiveFlash накопителя, а единственный винт — это тот, который вставлен в USB и просто примонтирован в /mnt


[root@livecd grub]# fdisk -l

Disk /dev/sda: 4000 MB, 4000317440 bytes
114 heads, 49 sectors/track, 1398 cylinders
Units = cylinders of 5586 * 512 = 2860032 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sda1 * 1 1399 3906552 b W95 FAT32

Disk /dev/sdb: 500.1 GB, 500074283008 bytes
255 heads, 63 sectors/track, 60797 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00038a56

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 3917 31463271 83 Linux
/dev/sdb2 3918 7834 31463302+ 83 Linux
/dev/sdb3 7835 9140 10490445 82 Linux swap / Solaris
/dev/sdb4 9141 10446 10490445 83 Linux

Disk /dev/dm-0: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders 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

Disk /dev/dm-0 doesn't contain a valid partition table

Disk /dev/dm-1: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders 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

Disk /dev/dm-1 doesn't contain a valid partition table

Dims2000
() автор топика
Ответ на: комментарий от Dims2000

Вот так можно вообще красиво посмотреть, что в MBR находится. Но похоже с грабом там все в порядке.

# dd if=/dev/sdb of=mbr.bin bs=512 count=1
file mbr.bin

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

Опа, спасибо!

Пишет:

[dims@kestrel ~]$ file mbrcontent mbrcontent: x86 boot sector, Microsoft Windows XP MBR, Serial 0x38a56; partition 1: ID=0x83, active, starthead 1, startsector 63, 62926542 sectors; partition 2: ID=0x83, starthead 254, startsector 62926605, 62926605 sectors; partition 3: ID=0x82, starthead 254, startsector 125853210, 20980890 sectors; partition 4: ID=0x83, starthead 254, startsector 146834100, 20980890 sectors, code offset 0xc0

Получается, бутсектор от виндов. Он должен работать или не должен?

У меня в папке boot лежит файл stage1 который, как я понимаю, и должен быть в бутсекторе для grub

[dims@kestrel ~]$ file stage1 stage1: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, GRUB version 0.94, code offset 0x48

Правильно?

Вопрос: как мне его залепить в бутсектор, не повредив таблицу разделов?

Dims2000
() автор топика
Ответ на: комментарий от ATIpro

Может, просто 440 байт из файла stage1 скопирнуть в бутсектор?

Dims2000
() автор топика
Ответ на: комментарий от madcore

«Да», в смысле моя команда dd правильная?

Тогда вопрос: разве стандартный загрузчки груба не будет искать grub.cfg? у меня-то нет этого файла.

menu.lst — это чей конфиг?

Dims2000
() автор топика
Ответ на: комментарий от Dims2000

chroot в корень системы с usb диска. Предположу, что это /dev/sdb2, тогда куда он замонтирован. Там что-то типа этого

# grub
device (hd1) /dev/sdb
root (hd1,0)
setup (hd1)
quit

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

На трезвую голову, я бы такой поток разных мыслей и не понял...

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

Что-то тут тебе умельцы насоветовали.

menu.lst - значит у тебя граб первый.

grub.cfg - значит у тебя граб второй.

Тем более, у них синтаксис различается.

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

>Нет, у меня menu.lst это не симлинк, а файла grub.cfg нигде нет. Не загрузится значит?

Если твой граб при установке сам так сделал - значит загрузится.
У тебя проблема с только с мбр, на сколько я понял.

madcore ★★★★★
()

Есть такая утилита - ms-sys, в ней есть разные MBR от разных систем. Можно попробовать записать эти разные MBR в файлы и при помощи dd и cmp сравнивать с MBR на интересующем диске.

Deleted
()
Ответ на: комментарий от ATIpro

В настоящее время диск замонтирован в /mnt/disc/sdb1,


[root@livecd dims]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/live-rw 4128448 2104240 1982276 52% /
tmpfs 3057516 112 3057404 1% /dev/shm
/dev/sda1 3904640 851648 3052992 22% /mnt/live
varcacheyum 3057516 35220 3022296 2% /var/cache/yum
/tmp 3057516 12 3057504 1% /tmp
vartmp 3057516 0 3057516 0% /var/tmp
/dev/sdb1 4128448 2283524 1802992 56% /mnt/disc/sdb1
/dev/sdb2 4128448 2104352 1982164 52% /mnt/disc/sdb2
/dev/sdb4 10325780 4352672 5448588 45% /mnt/disc/sdb4


после того, как я сделал chroot /mnt/disc/sdb1 и отдал в грубе команду

device (hd0) /dev/sdb

получил ошибку

Error 15: File not found

Действительно, как я понимаю, драйвера же не загрузились и файла sdb в /dev не создалось (точнее, создалось в /dev оригинальной системы).

Так что, лучше просто патчить с помощью dd?

Dims2000
() автор топика
Ответ на: комментарий от Dims2000

Попробуй dd, от этого ты ничего не потеряешь. Тут главное не затереть ничего лишнего.

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

При chroot-е нужно еще сделать что-то типа такого

cd /mnt/disc/sdb1
mount -t proc proc proc/
mount -t sysfs sys sys/
mount -o bind /dev dev/

и только потом chroot . делать

ATIpro ★★
()

Утилита file не спасает? Некоторые MBR она умеет определять.

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

Именно эти сообщения выводит ms-кий загрузчик со времён, когда ms-dos научилась работать с жёстким диском.

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

> Небось, когда я отключу флешку, винт станет sda и нифига не загрузится...

Для этого UUID придумали...

AS ★★★★★
()
Ответ на: на будущее от MHz

Мне когда сказали, чтоб переустановить GRUB, я сам нашёл про grub-install. Вычитал, что он не всё может сделать сам и лучше вручную, тем более, что там всего три команды надо испустить.

Dims2000
() автор топика
Ответ на: комментарий от bk_

>menu.lst - значит у тебя граб первый.

grub.cfg - значит у тебя граб второй.


ls -l /boot/grub/menu*
lrwxrwxrwx 1 root root 9 Апр 12 20:27 /boot/grub/menu.lst -> grub.conf

Какой по-твоему у меня граб?

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

на самом деле он данную ситуацию решает сам, и прописывает свою часть в mbr

при этом grub-install как бы не установка пакета, а установка загрузчика на нужный диск

MHz
()
Ответ на: комментарий от madcore

Какой по-твоему у меня граб?

Неправильный. У меня граб 2 на squeeze и menu.lst нет.

У тебя, я думаю, граб 1?

bk_ ★★
()

Короче, переинсталил груб по-хорошему, из комстроки груба — и заработало.

Предварительно пришлось замаунтить файловые системы sys proc и dev. Кроме того, непонятно почему, получившийся загрузчик проигнорировал menu.lst, поэтому я сделал на него симлинк grub.conf и пошло.

Кроме того, когда вынули флешку, винчестер получил имя sda и не работало. Поэтому флешку оставили в порту как заглушку, разбираться с UUID не стал.

Система временная, для настройки бездисковой ноды.

Dims2000
() автор топика
Ответ на: комментарий от Dims2000

> А как их применять?

Использовать в fstab. Например
UUID=f43b5202-461e-11d9-90e2-9d79e0076d68 / ext3 defaults 1 1
вместо
/dev/sda5 / ext3 defaults 1 1

посмотреть uuid можно с помощью blkid. Вообще, можно не только uuid использовать. Всё интересное можно увидеть в /dev/disk
/dev/disk/by-id/ata-ST3160023AS_3JS40XZM-part1 /mnt/disk ext3 defaults 1 1
тоже можно.

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