Windows7 убивает Grub.

Привет всем!

Обнаружил странный косяк совместной жизни Windows7 и Gentoo.
Исходный расклад такой. Есть флешка 32 Gb. Поделена на 4 раздела:
1. 16 Gb. FAT32, не загрузочный, обычная файлопомойка
2. Оставшиеся 16 gb полноценная(не LiveCD/USB) инсталляция Gentoo
- 100 Mb. ext2, загрузочный, монтируется как boot
- 512 Mb. swap
- 15,3 Gb. ReiserFS, монтируется как root
В такой конфигурации Windows как и положено видит только FAT32 раздел.
Gentoo прекрасно работает, но стоит флешку воткнуть в Windows 7 и сделать безобидную операцию (например копирование файла на FAT32 раздел) и всё, пипец, после этого GRUB мертв. При попытке загрузится максимум на что его хватает - написать "GRUB". Лечится только переустановкой GRUB.
Убивается только GRUB, сами разделы не тронуты. Погуглив нашел https://ubuntu.opentomsk.net/news/siryorik/3093/ и http://otvet.mail.ru/question/63239020/, но у меня grub v0.97, а не grub2, и симптом появляется даже если не запускать программы с флешки, а проводить простые файловые операции.

Гуру, есть идеи?

Попробуйте скопировать файлы

Попробуйте скопировать файлы grub на первый раздел, только ссылка menu.list не скопируется, придётся копировать файл grub.conf в menu.list.

После чего переставьте grub с указанием его корневого раздела (где лежат файлы) первого раздела флешки.

Не получается.

К сожалению, если fat32 будет не первым разделом его не увидит win7. Я уже проводил такие эксперименты, win7 категорически не желает работать с разделами кроме первого. Поэтому ваш совет, к сожалению, разрушает всю концепцию.

Почему разрушает, если вы

Почему разрушает, если вы хотите скрыть файлы linux от windows, то они в этом случае также будут скрыты, единственно что я вам предлагаю, так это переместить файлы загрузчика на первый раздел, он же в вас FAT32 и посмотреть, какие изменения будут происходить с загрузчиком, но скорее всего всё будет впорядке.

Интересная идея

Загрузочный раздел Linux на fat32. Интересная идея. Надо попробовать...

вывод diskpart и mountvol с

К сожалению, если fat32 будет не первым разделом его не увидит win7.

вывод diskpart и mountvol с винды фстудию

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

.

mda969 написал(а):
Gentoo прекрасно работает, но стоит флешку воткнуть в Windows 7 и сделать безобидную операцию (например копирование файла на FAT32 раздел) и всё, пипец, после этого GRUB мертв. При попытке загрузится максимум на что его хватает - написать "GRUB". Лечится только переустановкой GRUB.
Убивается только GRUB, сами разделы не тронуты. Погуглив нашел https://ubuntu.opentomsk.net/news/siryorik/3093/ и http://otvet.mail.ru/question/63239020/, но у меня grub v0.97, а не grub2, и симптом появляется даже если не запускать программы с флешки, а проводить простые файловые операции.

Гуру, есть идеи?

Обратиться в службу поддежки фирмы майкрософт (я серьёзно).

:wq
--
Live free or die

Беспредел!!!

Пипец! Валидолу! Win7 беспредельничает с разделами. При попытке отформатировать 16 гб fat32-раздел через консоль управления, win7 снесла все остальные разделы. Причем после "акции" форматирования итоговый размер fat32 раздела сначала стал 32 Гб, но стоило флешку вытащить и воткнуть он опять стал определяться 16Гб, а вот остальных разделов и след простыл. Все используемые менеджеры разделов показывают оставшиеся 16 гб как неразмеченные. Да уж, это явно какой-то дикий виндусовый косяк! Похоже винда выжигает вокруг себя всё по периметру :)

------------
to slepnoga. Увы, уже не смогу ни diskpart, ни mountvol предоставить фстудию

------------
to Anarchist

Вряд ли буду обращаться в службу поддержки майкрософт, не стоит оно того. Похоже, что концепция (из-за косяков имярек) оказалась нежизнеспособна. Ну что ж придумаем другую.

Спасибо всем. Тема закрыта.

Зачем вы форматировали раздел

Зачем вы форматировали раздел ???

На самом деле ещё не всё потеряно, вот скрипт, он будет пытаться смонтировать файловую систему корневого раздела с gentoo, который был у вас на флешке:

#!/usr/bin/perl -w
for ($sector = 0; ; $sector++)
{
$offset = $sector * 512;
$cmd = "mount /dev/sdb /mnt/tmp -t reiserfs -o ro,offset=$offset";
`$cmd`;
print "sector: $sector offset: $offset\n";
die "partition found @ offset $offset!" if ($? == 0);
}

Скрипт будет перебирать секторы флешки до тех пор, пока не найдёт начало раздела с reiserfs.

Только начало лучше не с 0 указывать "$sector = 0;", а указать чуть меньше половины объёмя флешки, здесь нужно указать номер начального сектора, с которого начинать поиск суперблока reiserfs.

Число секторов можно посмотреть в выводе fdisk -l /dev/sdX, где sdX - флешка.

Затем вы сможете создать новую запись в таблице разделов флешки с указанием границ раздела с reiserfs, номер начального сектора print "sector: $sector

Ты не прав

mda969 написал(а):
Win7 беспредельничает с разделами. При попытке отформатировать 16 гб fat32-раздел через консоль управления, win7 снесла все остальные разделы. Причем после "акции" форматирования итоговый размер fat32 раздела сначала стал 32 Гб, но стоило флешку вытащить и воткнуть он опять стал определяться 16Гб, а вот остальных разделов и след простыл. Все используемые менеджеры разделов показывают оставшиеся 16 гб как неразмеченные. Да уж, это явно какой-то дикий виндусовый косяк! Похоже винда выжигает вокруг себя всё по периметру :)
...
Вряд ли буду обращаться в службу поддержки майкрософт, не стоит оно того. Похоже, что концепция (из-за косяков имярек) оказалась нежизнеспособна. Ну что ж придумаем другую.

Именно поэтому практически необходимо разрушить моск службе поддержки фирмы майкрософт (семёрочку же тебе впарили в комплекте?).

:wq
--
Live free or die

А время?

Времени на это жалко. С учетом что задача была эксперементальной и я не потерял данные можно и плюнуть. Опять же, для того, что бы вступать в "прения" нужно флешку оставить в "раскосяченом" состоянии, а она нужна. Так что, бог им судья, ниже мнение было озвучено, что это не косяк, а "заложенная функциональность" :)

.

Поддержка ответит что-нибудь типа "см. ересь № такая-то". Потому таки не стоит обращаться в поддержку. Так что, скорее всего, никаких прений не будет.

>Гуру, есть идеи? Как

>Гуру, есть идеи?
Как вариант: не смешивать воду с вином и держать в хозяйстве две флешки.

Увы, это не косяк винды, а

Увы, это не косяк винды, а сознательно заложенная функциональность. Так будет происходить со всеми флешками с идентификатором "Сменное устройство".
Тебе нужна флешка с идентификатором "usb hdd". Тогда нормально будут видеться разделы и не будет проблем. В ином случае винда считает, что на флешке должен быть только один раздел и т.д. и т.п.

usb hdd

Смутно подозревал о чем-то подобном. Просто проявления подобного рода "заложенной функциональности" какие-то дикие. Есть ли универсальные способы на обычной флешке поменять индикатор на "usb hdd"? Я знаю только один, подмена драйверов флешки, на драйвера жеского диска в win. Он мне не подходит из-за осбенностей использования флешки.

1. Перепрошивка контроллера

1. Перепрошивка контроллера флешки. Говорят на некоторых можно поменять без этого, но утилита для этого у меня не сработала.
2. Искать "правильную" флешку.
3. Забить на флешку и использовать внешний hdd. Там идентификаторы "правильные" (точнее других не видел).
4. Завести несколько флешек.

Что то я сомневаюсь, что

Что то я сомневаюсь, что проблема в том, что windows "хочет" один раздел на флешке.

Но есть возможность обойти и эту ситуацию, в случае, если ТС поместит файлы загрузчика и образ ядра c initrd на первый раздел с FAT32.

Что я предлагаю:
Команда mount может монтировать файловую систему на разделе или диске, в этом случае суперблок (начало) файловой системы ищется с начала диска или раздела, но так же можно монтировать и с помощью опции "offset=XXX", я указал выше скрипт, где это реализовано.

Поэтому на флешке можно оставить один раздел с FAT32, не на весь объём, к примеру на половину., создать ещё один раздел, отформатировать его в reiserfs к примеру, поставить на него gentoo., затем запомнить номер сектора, с которого начинается раздел на флешке и удалить раздел.

Для такого монтирования придётся сделать свой initrd и написать свой скрипт Init, в котором указать поиск первого раздела (FAT32) по UUID или метке, затем отбрасываем последний символ (1) с индексом раздела, получаем имя устройства флешки, дальше монтируем корень и переходим в него.

Вот эту функцию для поиска раздела по метке нужно переработать:

uuidlabel_root() {
    for cmd in $(cat /proc/cmdline) ; do
        case $cmd in
        root=*)
            type=$(echo $cmd | cut -d= -f2)
            if [ $type == "LABEL" ] || [ $type == "UUID" ] ; then
                uuid=$(echo $cmd | cut -d= -f3)
                a=$(findfs "$type"="$uuid")
                ROOT=${a:8}
                mount -o offset=XXX,ro $ROOT /mnt/root
            else
                mount -o ro $(echo $cmd | cut -d= -f2) /mnt/root
            fi
            ;;
        esac
    done
}

В /etc/fstab предварительно нужно поместить такую запись:

/dev/sdX   /   reiserfs offset=XXX,rw 0 0

Где XXX - смещение относительно начала диска.
sdX на разных ПК может быть разным, его определяем выше.

Правим /etc/fstab на смонтированном корневом разделе с указанием нового размещения корневого раздела:

mv /fstab /mnt/root/etc/fstab
echo -e "\n/dev/$ROOOT\t/\t\treiserfs\t\toffset=XXX,rw\t0 0\n" >> /mnt/root/etc/fstab

Значение $ROOT (имя устройства флешки) определяется выше, значение offset статично и известно вам.

Файл /fstab пустой, только с заголовком, предварительно лежит в initrd.

И собственно осуществляем переход в систему (смену корня):

# Clean up.
umount /proc
umount /sys

# Boot the real thing.
exec switch_root /mnt/root /sbin/init -c /dev/tty1

Если не совсем понятно, что я написал, поясню, по возможности, графически:

[mbr] [   partition1 FAT32  ] [  unallocated disk space  ]
...
[mbr] [  grub,kernel,initrd ] [  root filesystem gentoo  ]
...
[mbr] [  grub,kernel,initrd ] [     mount offset fs      ]
...
[         offset            ] [  root filesystem gentoo  ]

Так для windows будет "казаться", хотя так и будет на самом деле, что на флешке один раздел и не размеченная область, в которой находится корневая файловая система gentoo.

Вот более подробно про создание своего initrd: http://en.gentoo-wiki.com/wiki/Initramfs

Гуру, есть идеи? Я не гуру, я

Гуру, есть идеи?

Я не гуру, я скромный MCP , и у меня все работает ; без версии семерки и приведенных команд далнейшие разборки напоминают бред виндузятника об ipset$+&iptables ( как пример), только отличны по знаку ;)

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

У меня тоже, сейчас воткнул в

У меня тоже, сейчас воткнул в семёрку (специально нашёл!) флэшку с двумя разделами и после этого загрузился.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".