---
layout: post
title: "Setting up GRUB/GPT/LVM"
date: 2016-01-19 17:09:09 +0100
comments: true
categories: 
---

Notes on setting up a machine to use GPT partitioning, LVM for
all filesystems (including root), and GRUB2 to boot.

Starting with a vanilla Debian 7.8 setup. Here we assume that /dev/sdb
is the disk that will ultimately contain the system.

GPT setup
=========

    (parted) mklabel gpt
    (parted) mkpart primary 2048s 4095s                                       
    (parted) set 1 bios_grub on                                               
    (parted) name 1 "BIOS Boot Partition"                                     
    (parted) mkpart primary 4096s 100%                                        
    (parted) set 2 lvm on                                                     
    (parted) name 2 "LVM"

Do we want a swap partition there??? If we don't provision one now,
we'll have to swap to an LVM LV.

LVM setup
=========

    pvcreate /dev/sdb1
    # Format given disk for LVM

    vgcreate tank /dev/sdb2
    # Create a volume group with that disk as the underlying storage

    lvcreate -n rootfs -L 10G tank
    lvcreate -n home -l 100%FREE tank

Filesystem
==========

    mkfs.ext4 /dev/mapper/tank-rootfs
    mkfs.ext4 /dev/mapper/tank-home
    mount -t ext4 /dev/mapper/tank-rootfs /mnt

Set up root filesystem (including /boot subdirectory) in /mnt.

Make sure that /etc/fstab on tank-rootfs points to the proper
root fs.

GRUB2
=====

    for i in /dev /dev/pts /proc /sys /run; do mount -B $i /mnt$i; done
    chroot /mnt
    rm -f /boot/grub/device.map
    grub-mkconfig -o /boot/grub/grub.cfg
    grub-install /dev/sdb