Estimated read time: 2 minutes
Since the Frugalware 1.7 release is near, and it uses GRUB2 by default, I
created a virtual machine, that is similar to the one we use under
genesis.frugalware.org, which hosts this blog as well.
The relevant details:
- 
it has two RAID1 arrays with ext3:
 
$ mount|grep /md
/dev/md126 on / type ext3 (rw,relatime,errors=continue,barrier=1,data=ordered)
/dev/md127 on /home/ftp/pub type ext3 (rw,relatime,errors=continue,barrier=1,data=ordered)
- 
the partition tables are created by cfdisk:
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63  1465144064   732572001   fd  Linux raid autodetect
- 
the machine has a serial console configured:
 
# cat /proc/cmdline
root=/dev/disk/by-uuid/7e41c95d-cd73-4043-b0ba-4797af6ddeff ro vga=normal nomodeset console=ttyS1,115200
Now the question is how does this config deal with the GRUB2 upgrade. First, don’t miss the official upgrade howto, it covers most cases. What I want to detail here is how did I avoid starting from scratch and creating a proper partition table using fdisk.
Here are the steps I needed:
- 
Backup. Yes, I did screw up for the first time, so it’s really needed.
 - 
Resize parts of the / RAID1 (/dev/sda1 and /dev/sdb1) with gparted livecd (resizing ext3 from cmdline parted didn’t work for me).
 - 
mdadm re-creation as described in the upgrade howto, from fw install cd, so you’ll have the required 1.0 metadata.
 - 
Reinstall GRUB1 to sda and sdb, since the physical location of GRUB1’s stage* changed.
 - 
Boot back to 1.6, run
pacman-g2 -Syu, andgrub-install— again, see the upgrade howto for details. - 
Now given that serial console needs a custom GRUB config and kernel parameters, you need to modify GRUB2’s
/etc/default/grub. Here is my diff:/etc/default# diff -u grub.orig grub --- grub.orig 2012-07-19 01:57:20.000000000 +0200 +++ grub 2012-07-29 14:45:50.000000000 +0200 @@ -1,11 +1,12 @@ GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="Frugalware 1.6" -GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" +GRUB_CMDLINE_LINUX_DEFAULT="vga=normal nomodeset plymouth.enable=0 console=ttyS0,115200" GRUB_CMDLINE_LINUX="" GRUB_PRELOAD_MODULES="" -GRUB_TERMINAL_INPUT=console -GRUB_TERMINAL_OUTPUT=gfxterm +GRUB_TERMINAL_INPUT=serial +GRUB_SERIAL_COMMAND="serial --speed=115200 --port=0x3f8" +GRUB_TERMINAL_OUTPUT=serial #GRUB_GFXPAYLOAD_LINUX=keep GRUB_GFXMODE=auto #GRUB_DISABLE_LINUX_UUID=true
(Refer to this post if you don’t know the needed port number.)
 - 
Finally run
grub-mkconfigto create the real config from the just modified default settings. - 
Reboot, and GRUB2, the boot process and the login prompt should be accessible over the serial console again.