matrix 15.12.2011 17:30

Talks!Исправление гибернации в Win7 и Debian при dual boot'е на Grub2

Здравствуйте! Давайте знакомится, это мой первый пост, так что сильно не бейте, ребята.=) Все началось с того, что я заказал в штатах себе новый ноут: Lenovo ThinkPad E420(i5 2410, 6GB RAM, HDD 500GB 7200rpm, 9-cell battery - хватает часов на 6-7), по акции вышел мне в 680$ + 100$ доставка. Причем заказ и доставка доставили тоже не мало проблем, но пост не об этом. Естественным образом большинство ноутбуков поставляется с предустановленной Windows 7, и этот ноут не исключение.



Я решил ее не сносить, а попробовать плавно перейти на nix совсем(на самом деле это не первый мой опыт, с никсами я давненько знаком). Для установки выбрал Debian testing(wheezy), скачал netinstall и понеслось... В общем среду я настроил более или менее, выбрал KDE, я ее больше всего люблю за ее гибкость. Для тех, кто считает кеды тяжелые - соглашусь, на нетбуке у меня крутится Debian с Openbox'ом. Однако, все же разработчикам я не советую выбирать Debian по одной простой причине, что пакеты даже в тестинге достаточно старые, и в репозитории нет, например, svn 1.7, собирать только ручками, для чего нужно компилить некоторые зависимые пакеты и библиотеки. Странно также мне показалось то, что Netbeans 7 не захотел открывать мои старые проекты(под оффтопиком - норм, проекты создавались вообще под 6 версией).

Изначально по совету своего товарища, старого линуксоида, под своп я выделил всего 1GB, что было несомненно ошибкой. Для меня крайне удобен режим гибернации, ибо ноут используется как на рабочем месте, так и дома, и, соответственно, приходиться частенько его таскать, и хотелось бы без угрозы потерять что-либо по причине севшей батарейки. Так вот, режим гибернации естественным образом не захотел работать, ибо размер свопа должен быть не меньше занятого объема оперативки в момент ухода в гибернацию(о чем я тоже догадался далеко не сразу, копал в сторону конфигов pm-utils и ошибся).

Данную проблему пришлось решать загрузившись с флешки в PartedMagic(дистр nix заточенный для тестирования оборудования, а также для работы с диском), запустив GParted, входящий в комплект я чуточку подрезал виндовый диск и увеличил размер своп-диска до 4GB. Ура - гибернация заработала в штатном режиме. Несмотря на все положительные стороны, неудобства перевесили, и на данный момент меня можно назвать НеОсилятором, но я обещаю исправиться, в выходные попробую поставить что-нить с более свежим ядром и репозиторием. Переходим к оффтопику, да простят меня местные обитатели и духи.

Перейдя на оффтопик, я конечно же очень быстро обнаружил, что режим гибернации перестал работать и в Win7, чему был несказанно удивлен. В сети достаточно много вопросов и ответов по этой теме, но мне ничего не помогало, однако, все сходились во мнении, что дело во флаге boot для системного раздела Win, а точнее в его отсутствии, так как он само собой был перенесен при установке nix на /. В конечном итоге был откопан в пучинах паутины совет, что нужно добавить в файл /etc/grub.d/30_os-prober следующую строку: parttool hd0,msdos1 boot+. hd0,msdos1 - в данном случае имя партиции на которой лежит системный раздел оффтопика. После чего выполнить из-под рута update-grub, который перепишет файлик /boot/grub/grub.conf, но мне это не помогло, grub.conf не изменился не на толику, пришлось городить костыль и прописывать parttool (hd0,msdos1) boot+ в него напрямую, последней строкой в командах выполняющихся при выборе Win7 loader'а(!!! не последняя строка файла).

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

UPD.: Чтобы не городить костыль и не прописывать напрямую в /boot/grub/grub.conf, пришлось дописать после строки "chainloader +1" в файле /etc/grub.d/30_os-prober.
Следует учесть, что при этом данная строка добавится для каждой загрузочной записи Win. Поэтому надо быть внимательным, если у вас больше чем одна установленная Windows. После внесенных модификаций выполнить, как и было указано выше: update-grub или update-grub2 - они делают одно и тоже(выяснено опытным путем, если только у вас не установлен одновременно, и grub, и grub2).


Тэги: debian grub 2 grub2 hibernate Hibernation Lenovo pm-utils ни в чем не виноваты ThinkPad wheezy win7
+ 5 -
Похожие Поделиться

exelens 16.12.2011 02:08 #
Не понял куда перенести пост изложенный в таком стиле.
matrix 16.12.2011 12:07 #
Я слишком фривольно изложил?
exelens 16.12.2011 12:35 #
Просто у нас или полезности - идут в соотвествующие разделы. Или болтовня =) Она идёт в талкс. А тут мне даже не разделить.

Пиши ещё
kstep 16.12.2011 03:51 #
Как-то… Ни о чём.
matrix 16.12.2011 12:09 #
На самом деле пост о 2х успешно решенных проблемах, + в комментах завелась поправочка, после проверки которой я, возможно, допишу апдейт маленький, если сработает. Ну а без вступления как-то сложно было первый раз писать, а городить отдельный пост, чтобы представиться, я посчитал лишним.
uscr 16.12.2011 09:58 #
выполнить из-под рута update-grub, который перепишет файлик /boot/grub/grub.conf, но мне это не помогло, grub.conf не изменился не на толику

update-grub2, не?

пришлось городить костыль и прописывать parttool (hd0,msdos1) boot+ в него напрямую

Но так нельзя делать даже под страхом смерти!

я хоть и на оффтопике, но с полноценно работающим окружением. Но это, как я и обещал, только на время, скорее всего до выходных

Да не нервничай так. Нам какбы всё равно. Тут все очень нефанатичные.
хехехе


А по теме - я тоже бился головой об свою первую федору с дуалбутной виндой на ноутбуке. Но там своп у меня был даже чуть больше, чем оперативка. А засыпать оно не хотело из-за совместимости чтоли. Я тогда был молод и малоопытен, ковыряться долго не стал. Проблема решилась установкой чудодейственного патча TuxOnIce на ядро, который делает гибернацию реально быстрой (около 10 секунд с 1Гб оперативы) (а то на интел атоме "пробуждение" после гибернации у меня было чуть не дольше, чем "чистая" загрузка). Потом я обнаружил, что у меня семерка перестала уходить в гибернацию. Это, в свою очередь, решилось играми с parted. Оказывается, винда не будет уходить в гибернацию, если установлена не на основном (primary) разделе. Такие дела.
matrix 16.12.2011 12:10 #
Спасибо за подсказки с update-grub2, попробую, и как оговорил выше, если сработает, допишу апдейтик в пост.
ZED 16.12.2011 12:20 #
> Тут все очень нефанатичные

дада, я тут самый нефанатичный, клянусь святым Джобсом
cppmm 16.12.2011 13:55 #
Я думал, для ничего святого нет. ;)
matrix 19.12.2011 15:46 #
update-grub2, не?

Оказалось монописуально какую команду выполнять, что update-grub и update-grub2 делают одно и тоже, по крайней мере тогда, когда стоит один только grub2.
RoDebian 16.12.2011 14:13 #
по мне так пост отличный. изложен великолепно. вам бы книжки писать. читалось легко, и что ещё важнее было интересно. спасибо.
RoDebian 16.12.2011 14:14 #
чуть не забыл, почему пост в толксах ?
matrix 16.12.2011 15:30 #
Спасибо за комплимент, я вообще поместить его никуда не мог(карма?), он был в моих персональных, товарищ exelens рассудил, что место ему именно в толксах.
uscr 16.12.2011 16:01 #
>>карма?

Не хабр же :)
Нужно вступить в блог, что бы в него постить.
matrix 16.12.2011 18:00 #
Спасибо, буду иметь в виду в следующий раз.
sensor_ua 20.12.2011 08:43 #
Интересно. У меня та же проблема с оффтопиком и такие действия не помогли:(. но на ноуте не Debian, а недоubuntu со шкурками - ZorinOS (не смейтесь - так получилось, а сейчас не до того, чтобы снести) - может там не только морда, но и груб покалеченный. При дописывании в 30_os-prober parttool (hd0,msdos1) boot+ строка в grub.cfg появляется, но только немного не там - в параграфе для скрытого раздела
matrix 20.12.2011 16:04 #
Процитируй фрагмент grub.cfg, отвечающий за все оффтопики, посмотрю, может подскажу чего.
sensor_ua 20.12.2011 16:34 #
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
menuentry "FreeDOS (on /dev/sda1)" --class windows --class os {
insmod part_msdos
insmod fat
set root='(/dev/sda,msdos1)'
search --no-floppy --fs-uuid --set=root aeab-6031
drivemap -s (hd0) ${root}
chainloader +1
}
menuentry "Windows 7 (loader) (on /dev/sda2)" --class windows --class os {
insmod part_msdos
insmod ntfs
set root='(/dev/sda,msdos2)'
search --no-floppy --fs-uuid --set=root 2A641BD7641BA49B
parttool (hd0,2) boot+
chainloader +1
}

matrix 20.12.2011 16:51 #
ну, во-1ых, попробуй все таки порядок команд поставить кака в статье, строка с parttool должна быть после chainloader +1, во-2ых, раз уж диски у тебя поименованы /dev/sda,msdosX, то и запись нужно откорректировать и строка в твоем случае должна выглядеть, насколько я понимаю: "parttool (/dev/sda,msdos2) boot+".(без кавычек). На истинность в последней инстанции не претендую, но рассуждаю логически.
sensor_ua 21.12.2011 02:35 #
Перемещение не помогло, а переименование не нравится - при выборе загрузки оффтопа пишет ругань мол не знает такого, хотя загрузка потом идёт. может ещё и у оффтопа обычные траблы.
matrix 21.12.2011 10:53 #
может тогда parttool (hd0,msdos2) boot+
sensor_ua 21.12.2011 14:34 #
Пробовал - не сработало. Но и не ругалось