원격 Ubuntu 서버에서 데스크탑에서 설치하기 위해 일련의 업그레이드/변경을 수행했습니다.우분투 10.10은 독특합니다서버에 설치12.04 LTS 정확
몇 가지 문제를 제외하고는 모든 것이 잘 진행되고 있으며 지금까지 물리적인 접근이 불가능했습니다. 다음 목표는 LVM을 백엔드 스토리지로 사용하여 XEN 서버를 만드는 것입니다. 시스템에 LVM이 없습니다. 12.04 LTS에 도달한 후 LVM을 추가했습니다. XEN 머신에서 원격으로 생성하는 방법을 알고 있으며 이전에도 해본 적이 있습니다. 하지만 새 구성을 시작하는 데 문제가 있습니다.
이 상자를 설치한 사람은 파티셔닝에 주의를 기울이지 않은 것으로 나타났습니다. 시스템은 서버로 사용되었지만 데스크탑으로 설치되었지만(이 문제를 해결했습니다) 다음 파티셔닝 구성표가 남았습니다.
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
그래서 거대한 17G 스왑 파티션을 새 부팅 파티션(현재 /dev/sda2), 작은 스왑 파티션(/dev/sda3) 및 새 루트 파티션(lvs)으로 재구성했습니다. 디스크 사용량을 충분히 작은 3GB 정도로 낮추고 LVM 아래에 만든 새 루트 디렉터리에 복사했습니다.
현재 우리는
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은오래된 부팅 파티션머신이 /dev/sda2에서 부팅되기를 원합니다. 이제 차이점은 별도의 /boot 및 / 파티션이 필요하다는 것입니다. 루트 파티션은 LVM에서 호출됩니다.
# lvscan
ACTIVE '/dev/server20/root' [10.00 GiB] inherit
최종 목표는 /dev/sda1을 LVM 제어 하에 두고 싶지만 이를 사용하지 않는 방식으로 시스템을 부팅해야 한다는 것입니다. 그 시점부터 LVM이 작동합니다.
위의 전체 파일 시스템 변경 외에도 다음 작업도 수행했습니다.
생성된 논리 볼륨:
pvcreate /dev/sda4
vgcreate server20 /dev/sda4
lvcreate -L 10G -n root server20
mkfs.ext4 /dev/server20/root
설치하세요:
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
그럽 업데이트:
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)
생성된 /boot/grub/grub.cfg를 확인하면서 대부분의 내용이 정확하다는 것을 알았습니다. 특히 다음과 같은 내용이 그렇습니다.
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
}
...
그런 다음 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"
그래서 제가 여기서 배운 것은 내 부팅 파티션이 msdos2, 즉 /dev/sda2가 될 것이라는 것입니다. uuid는 검색 줄에서도 참조됩니다. 비록 루트라고 되어 있지만 다른 설치와 비교했습니다. 이는 루트/부팅 분리가 부팅 uuid임을 의미합니다(올바른 가정?).
연결된 디스크 레이아웃을 사용하여 다시 시작할 수 있다고 생각했지만 그렇지 않습니다. fdisk를 사용하여 /dev/sda1 및 /dev/sda2 부팅 가능 플래그를 활성화했습니다. 이전과 같은 방식으로 시작되었으며 다행히 아무런 문제도 발생하지 않았습니다.
내 더 깊은 문제는 chroot + update-grub에 대한 오해로 인해 발생할 수 있습니다. 실제로 root/boot /dev/sda1에서 무엇을 해야 할지 잘 모르겠습니다. chroot 버전의 grub.cfg를 /boot 하위 디렉터리로 복사해야 합니까?
재부팅 후 수행한 단계
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)
/dev/sda1을 무시해도 충분합니까? grub에 대한 모든 내용을 읽었지만 동일한 디스크에 2개의 부팅 파티션이 있을 때 부팅 프로세스가 어떻게 작동하는지에 대한 답변을 얻을 수 없습니다. (다른 경우도 많습니다.) chroot를 사용하는 것과 비슷한 것을 사용하는 grub 프로세스를 상상할 수 있습니까?grub-install --boot-directory=/mnt/boot. 내부적으로는 어떻게 처리되나요?
이 질문에 대해 더 나은 제목을 제안해 주시기 바랍니다. 저는 이 질문이 정말 끔찍합니다.
또한 이것은 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
답변1
다시 재부팅을 시도했는데 마지막 3단계를 통해 문제가 해결된 것 같습니다.
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
MBR 덤프를 보면 이번에는 효과가 있었다고 믿게 됩니다. LVM 루트를 사용하기 시작했습니다. 부팅 파티션을 마운트하지 못한 것으로 보이지만 시스템은 마운트에 성공했습니다. 더 작은 /dev/sda1로 다시 변경하고 동일한 프로세스를 수행해야 했습니다.