Como obter o Ubuntu 12.04 do grub para inicializar a partir da partição de inicialização secundária e usar uma nova raiz separada

2

Em um servidor Ubuntu remoto, realizei uma série de upgrades / alterações para ir de um Ubuntu 10.10 Maverick para um servidor de instalação do 12.04 LTS Precise

Tudo isso correu bem, exceto alguns soluços que eu tive, o tempo todo sem acesso físico - tão longe. O próximo objetivo é criar um servidor XEN usando o LVM como armazenamento de back-end. O sistema não tinha o LVM, que adicionei quando cheguei ao 12.04 LTS. Eu sei como criar remotamente uma máquina XEN, fiz isso antes. Mas eu tenho um problema ao tentar inicializar a nova configuração.

A pessoa original que instalou esta caixa não prestou atenção ao particionamento; a máquina foi usada como um servidor, mas instalada como desktop (isso eu consertei), mas me deixou com esse tipo de esquema de particionamento:

Disk /dev/sda: 500.0 GB, 499999834112 bytes
... 
Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       58558   470361088   83  Linux
/dev/sda2           58558       60789    17916929    5  Extended
/dev/sda5           58558       60789    17916928   82  Linux swap / Solaris

Então peguei a enorme partição swap 17G e reorganizei-a um pouco em uma nova inicialização (agora / dev / sda2), uma pequena partição swap (/ dev / sda3) e uma nova raiz (lvs). Eu tenho o diskusage para cerca de 3GB, que é pequeno o suficiente e eu copiei isso para uma nova raiz, que eu criei no LVM.

Atualmente, temos

Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   940724223   470361088   83  Linux
/dev/sda2   *   940724224   941748223      512000   83  Linux
/dev/sda3       941748224   943845375     1048576   82  Linux swap / Solaris
/dev/sda4       943845376   976562175    16358400   8e  Linux LVM

/ dev / sda1 é a partição de inicialização antiga e eu quero que a máquina inicialize a partir de / dev / sda2. A diferença agora é que agora quero uma partição / boot e / separada. A partição raiz é conhecida no LVM como:

# lvscan
ACTIVE            '/dev/server20/root' [10.00 GiB] inherit

O objetivo final é que eu queira trazer / dev / sda1 sob controle LVM, mas eu tenho que inicializar o sistema de uma forma que não seja usada. A partir daí, o LVM funcionará.

Além de todo o sistema de arquivos acima, eu fiz:

volume lógico criado:

pvcreate /dev/sda4 
vgcreate server20 /dev/sda4
lvcreate -L 10G -n root server20
mkfs.ext4 /dev/server20/root

montou:

mount /dev/server20/root /mnt/root/
mount /dev/sda2 /mnt/root/boot/
(cd / ; find . -xdev -print0 | rsync -xavz . /mnt/root/)
for i in /dev /run /dev/pts /proc /sys; do sudo mount -B $i /mnt/root$i; done

update grub:

chroot /mnt/root
echo "dm-mod" >> /etc/initramfs-tools/modules
echo "dm-mod" >> /etc/modules
grub-mkconfig (verified config file visually)
update-grub (no errors/warnings)

Revi o /boot/grub/grub.cfg que eu vejo, a maioria parece correta, especialmente coisas como:

insmod lvm
...
set root='(server20-root)'
search --no-floppy --fs-uuid --set=root 0bb92c24-8c02-4fa3-8f75-970076261b2f
...

menuentry 'Ubuntu, with Linux 3.2.0-38-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos2)'
    search --no-floppy --fs-uuid --set=root 891b3eaa-fb43-4a42-9789-a91c2a5ffb13
    linux   /vmlinuz-3.2.0-38-generic root=/dev/mapper/server20-root ro quiet
    initrd  /initrd.img-3.2.0-38-generic
}
...

Então, verificando o blkid:

/dev/sda2: UUID="891b3eaa-fb43-4a42-9789-a91c2a5ffb13" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda4: UUID="IyDrfU-TOYT-rFXO-JknG-rwEK-Sm2A-mfKcIe" TYPE="LVM2_member"
/dev/mapper/server20-root: UUID="0bb92c24-8c02-4fa3-8f75-970076261b2f" TYPE="ext4"
/dev/sda1: UUID="888c061a-1d51-4516-aced-4bb21042d2f4" TYPE="ext4"
/dev/sda3: UUID="19efc041-eccd-42c9-94aa-5b6c88ffd5bb" TYPE="swap"

Então, eu entendo que isso é: minha partição de inicialização será msdos2, que seria / dev / sda2. Também referenciado na linha de pesquisa por uuid, mesmo que ele diga root, eu o comparei com outras instalações e isso é como o boot uuid (suposição correta?) No caso de um split root / boot.

Eu realmente achei que isso funcionaria para reiniciar usando o layout de disco adicional, mas isso não aconteceu. Eu configurei ambos / dev / sda1 e / dev / sda2 sinalizador inicializável ativo usando fdisk. Começou da mesma maneira antiga de antes, sem um soluço felizmente.

Minhas perguntas mais profundas provavelmente são desencadeadas em mal-entendidos usando o chroot + update-grub. Na verdade, não tenho certeza do que preciso fazer na raiz / boot / dev / sda1. Eu tenho que copiar o grub.cfg da versão chrooted para o subdiretório / boot ou não?

Passos que tomei após a reinicialização agora

switched off bootable flag on /dev/sda1
remounted everything again and performed all steps again plus an additional
grub-install /dev/sda  (from the chroot)

Isso será o suficiente para desconsiderar / dev / sda1? Eu li sobre tudo no grub que pude encontrar, mas não consegui obter respostas sobre como o processo de inicialização vai no caso de duas partições de inicialização no mesmo disco. (muitos outros casos). Alguém pode visualizar o fluxo do grub em relação ao uso de um chroot vs usando algo parecido grub-install --boot-directory = / mnt / boot . Como isso é tratado internamente?

Sinta-se à vontade para sugerir melhores títulos para esta pergunta, sou muito ruim nisso.

Além disso, aqui está o MBR

dd if=/dev/sda of=mbr.bin bs=512 count=1
root@server20:/# file mbr.bin 
mbr.bin: x86 boot sector; 
partition 1: ID=0x83, starthead 32, startsector 2048, 940722176 sectors; 
partition 2: ID=0x83, active, starthead 95, startsector 940724224, 1024000 sectors; 
partition 3: ID=0x82, starthead 29, startsector 941748224, 2097152 sectors; 
partition 4: ID=0x8e, starthead 167, startsector 943845376, 32716800 sectors, code offset 0x63
    
por Glenn Plas 14.03.2013 / 11:58

1 resposta

1

Eu tentei mais uma reinicialização, parece que os últimos 3 passos que fiz corrigiram o problema:

using fdisk to switch off bootable flag for /dev/sda1
partprobe so the kernel knows about changes
remounted everything again on top of root at /mnt/root and performed:
grub-install /dev/sda  (from the chroot)
update-grub

o despejo do MBR me fez acreditar que funcionou dessa vez. e eu iniciei usando a raiz lvm. Parece que a montagem da partição de inicialização falhou, mas o sistema passou. Vou ter que alterá-lo novamente com um / dev / sda1 menor e fazer o mesmo procedimento.

    
por 14.03.2013 / 23:22

Tags