Faz tempo que instalei o grub, boot loader muito flexível e fácil de configurar, no meu FreeBSD, aliás desde que era 6.1-RELEASE. Agora que estou totalmente atualizado como 6.2-STABLE, isso tornou-se ponto de honra. Infelizmente o erro abaixo insistia em ocorrer ao tentar instalar o mesmo na MBR:


musashi# grub-install hd0 
GNU GRUB version 0.97 (640K lower / 3072K upper memory) 
[ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. 
   Anywhere else TAB lists the possible completions of a device/filename. ] 
grub> root (hd0,0,a) 
Filesystem type is ufs2, partition type 0xa5 
grub> setup --stage2=/boot/grub/stage2 --prefix=/boot/grub (hd0) 
Checking if "/boot/grub/stage1" exists... yes 
Checking if "/boot/grub/stage2" exists... yes 
Checking if "/boot/grub/ufs2_stage1_5" exists... yes 
Running "embed /boot/grub/ufs2_stage1_5 (hd0)"... failed (this is not fatal) 
Running "embed /boot/grub/ufs2_stage1_5 (hd0,0,a)"... failed (this is not fatal) 
Running "install --stage2=/boot/grub/stage2 /boot/grub/stage1 (hd0) 
   /boot/grub/stage2 p /boot/grub/menu.lst "... failed 
Error 29: Disk write error 
grub> quit

Eu já tinha tido o desprazer de ver esse erro anteriormente, mas achava que era relacionado com a versão do grub (como descrito em algumas listas). Dessa vez, sapeando no Google, que já começa a trazer muito mais ruído que informação, encontrei esse link:

How To Dual Boot FreeBSD and Windows XP using GRUB


Por um grande acaso vi a variável kern.geom.debugflags com um parâmetro configurado. Não tive dúvidas e segui o mesmo.


musashi# sysctl kern.geom.debugflags=16 
kern.geom.debugflags: 0 -> 16

Resultado: sou um feliz usuário com um novo boot loader, o qual vou colocar uma bela tela gráfica :-) Só espero que meu sistema funcione amanhã, já que eu ainda não desliguei o mesmo...


musashi# grub-install /dev/ad0 
Installation finished. No error reported. 
This is the contents of the device map /boot/grub/device.map. 
Check if this is correct or not. If any of the lines is incorrect, fix it and re-run the script `grub-install'. 
(fd0) /dev/fd0