април 2009


Вчера ми се прииска да видя някой хубав филм. Избор голям, не знам защо се спрях на „Списъка на Шиндлер“. Досега мислех, че няма да имам сили да го изгледам втори път. Филмът е тежък, но ми се струва, че в училище трябва да показват тъкмо такива филми, вместо учителите да рецитират без никакво мисловно усилие един и същи урок, който с годините вече са научили наизуст. Публикувам това сега, защото (Подсъзнание? Съвпадение?) днес е рожденият ден на Оскар Шиндлер. Един приятел ми преведе горната реплика от края на филма (т.е. измъкна я от някакъв сайт):

מי שהציל נפש אחת – כאילו הציל עולם ומלואו

Тук е и самият списък.

Знаете ли как се инсталира Windows на нова машина със SATA2 диск и без флопи? Трудно. Windows XP SP3 — инсталацията се точи безкрайно. Vista SP1 — зависва на „Windows is loading files…“. И? Драйвери имам, но мога да ги заредя само от дискета. Флопи, както изтъкнах, няма. От сервиза ми предлагат да почакам седмица, понеже по празниците не работели. А не мога ли сам да си сложа? „Можете, щом искате, но няма смисъл и гаранцията става невалидна.“. Абсурдно, но най-простият начин е:

  1. инсталира се Linux/BSD
  2. инсталира се VMware/XEN
  3. инсталира се Windows

По повод на горния разказ по действителен случай, за производителите на компютри, които вече не слагат флопи, щото било морално остаряло, obsolete, legacy и т.н., ми идва наум една реплика от Хашек — „…да ни цунат гъза!“.

Най-накрая ми дойде мерак да пиша. Темата по неволя пак е техническа, че ако захвана да чеша Михов Миков, Яне Янев и новия избирателен закон, край няма да има.

Последните два дена човъркам VMware Workstation. Резултатът е нещо като dual-boot машина, само че Windows (въздъх) се пуска директно от неговия си дял. Предимства:

  1. леко повишено бързодействие;
  2. няма нужда една и съща информация да се дублира;
  3. ако все пак се наложи, Windows може да бъде зареден по обичайния начин.

Недостатъци:

  1. VMware трябва да се пусне с root привилегии, или
  2. използващите го потребители да бъдат добавени в групата disk, или
  3. дялът, на който е инсталиран Windows, да бъде прехвърлен в друга (нова) група, а потребителите да станат нейни членове.

Тукашният подход е вторият, въпреки очевидните му недостатъци. Доколкото компютърът се използва само от един човек, това не представлява проблем. Вероятно най-добър от гледна точка на сигурността е третият (и най-неестетичен). Предполагам, че SELinux може да се настрои така, че да ограничава достъпа само до някои операции с диска. This is left as an exercise for the reader, при наличието на търпение.

Процедура:

  1. Създава се нова виртуална машина. Когато стигнете до секцията Disk, изберете Use physical disk, после съответното устройство (/dev/[hs]dX), Use individual partitions и накрая дяла, където е инсталиран Windows.
  2. dd if=/dev/zero of=bootdisk.img bs=512 count=2880
  3. mkfs.msdos bootdisk.img
  4. losetup /dev/loopX bootdisk.img
  5. mount /dev/loopX /mnt
  6. mkdir -p /mnt/boot/grub
  7. cp /boot/grub/stage? grub.conf /mnt/boot/grub
  8. grub
    > device (fd0) /dev/loopX
    > root (fd0)
    > setup (fd0)
    
  9. umount /mnt
  10. losetup -d /dev/loopX

grub.conf съдържа примерно

default 0
timeout 0
hiddenmenu
title Windows XP
rootnoverify (hd0,X)
chainloader +1
clear

Преместете bootdisk.img в директорията, където VMware съхранява конфигурацията на Windows. После Edit virtual machine settings Floppy Use a floppy image, въвеждате пътя до bootdisk.img, отмятате Read-only и Connect at power on. Така се избягва неприятната ситуация VMware да ползва MBR на твърдия диск (само пробвайте да заредите Linux оттам и гледайте какво става). Рестартирайте в Windows и създайте нов хардуерен профил (Control Panel System Hardware Hardware profiles). Пак рестартитайте, заредете Linux, пуснете Windows през VMware и в началото изберете новия профил. Така всички промени в хардуера ще бъдат валидни само за въпросния профил и Windows ще се зарежда нормално, когато го стартирате вместо Linux.

Сега интересната част — след като Windows зареди безпроблемно, инсталираме Truecrypt и криптираме системния дял. Инсталацията е елементарна, важният момент е когато програмата изплюе нещо за Pretest ала-бала. В този момент MBR е презаписан и Truecrypt очаква при следващия рестарт да тръгне неговия boot manager. Това е тънкият момент — възстановяваме GRUB, но запазваме новия MBR.

dd if=/dev/[hs]dX of=tc.mbr bs=512 count=1
dd if=/boot/grub/stage1 of=/dev/[hs]dX bs=512 count=1

За да тръгне сега Windows, grub.conf от bootdisk.img се променя примерно тъй:

default 0
timeout 0
hiddenmenu
title Windows XP
rootnoverify (hd0,X)
chainloader (fd0)/boot/grub/tc.mbr
clear

и tc.mbr се копира в /boot/grub на bootdisk.img по горната схема. Рестарт и всичко си отива на мястото.

17.IV.2009 г.
Забравих да отбележа — в системния (Linux-кия) /boot/grub/grub.conf се добавя

title Windows XP
rootnoverify (hd0,X)
chainloader (hd0,Y)/boot/grub/tc.mbr
clear

(hd0,Y) е дялът, където е /boot директорията на Linux.