Имеется ноутбук, на котором была установлена Ubuntu 14.04, после чего на отдельный раздел диска была установлена Windows.
Для Ubuntu раздел /boot
вынесен в отдельный раздел, а /home
и /
установлены в группе разделов под LVM:
# lvdisplay --columns LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert home kubuntu_vg -wi-ao--- 470,00g root kubuntu_vg -wi-ao--- 30,00g
Полное описание установки – в посте Debian: ручная разбивка диска с fdisk, создание разделов LVM и установка системы.
Таблица разделов выглядит следующим образом:
# fdisk -l Disk /dev/sda: 640.1 GB, 640135028736 bytes 255 heads, 63 sectors/track, 77825 cylinders, total 1250263728 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x6fa60981 Device Boot Start End Blocks Id System /dev/sda1 2048 4196351 2097152 83 Linux /dev/sda2 4196352 37750783 16777216 82 Linux swap / Solaris /dev/sda3 37750784 1086326783 524288000 83 Linux /dev/sda4 * 1086326784 1250260991 81967104 7 HPFS/NTFS/exFAT
/dev/sda4
– загрузочный раздел Windows;/dev/sda1
– раздел/boot
;/dev/sda3
– физический раздел LMV:
# pvdisplay --- Physical volume --- PV Name /dev/sda3 ...
Загружаемся с любого Linux LiveCD и подключаем группу разделов:
# vgchange -a kubuntu_vg 2 logical volume(s) in volume group "kubuntu_vg" now active
Проверяем пути к Logical Volume:
# lvdisplay -c /dev/kubuntu_vg/root:kubuntu_vg:3:1:-1:1:62914560:7680:-1:0:-1:252:0 /dev/kubuntu_vg/home:kubuntu_vg:3:1:-1:1:985653248:120319:-1:0:-1:252:1
И сами блочные устройства:
# ls -l /dev/kubuntu_vg/ total 0 lrwxrwxrwx 1 root root 7 Jun 30 2016 home -> ../dm-1 lrwxrwxrwx 1 root root 7 Jun 30 2016 root -> ../dm-0
Монтируем старый корневой раздел:
# mount /dev/kubuntu_vg/root /mnt/
Монтируем старый загрузочный раздел:
# mount /dev/sda1 /mnt/boot/
Подключаем (с опцией --bind
) каталоги /dev
, /proc
и /sys
из текущей системы – в каталог /mnt
:
# mount --bind /dev/ /mnt/dev # mount --bind /proc/ /mnt/proc/ # mount --bind /sys/ /mnt/sys/
Проверяем содержимое каталога /mnt
– тут сейчас должна содержаться вся (почти – /dev
и т.д. мы монтировали из текущей системы, т.к. они заполняются ядром во время загрузки) старая система:
# ls -l /mnt/ total 128 -rw-r--r-- 1 root root 0 May 22 16:53 0 drwxr-xr-x 2 root root 4096 May 4 18:23 bin drwxr-xr-x 4 root root 4096 May 21 18:55 boot drwxrwxr-x 2 root root 4096 Mar 7 19:29 cdrom drwxr-xr-x 19 root root 4840 Jun 30 2016 dev drwxr-xr-x 155 root root 12288 Jun 15 07:21 etc drwxrwxr-x 2 root root 4096 Mar 7 19:27 home lrwxrwxrwx 1 root root 32 May 13 06:22 initrd.img -> boot/initrd.img-4.2.0-36-generic lrwxrwxrwx 1 root root 32 Apr 17 10:47 initrd.img.old -> boot/initrd.img-4.2.0-35-generic drwxr-xr-x 26 root root 4096 May 13 06:19 lib drwxr-xr-x 2 root root 4096 Apr 17 10:39 lib32 drwxr-xr-x 2 root root 4096 Feb 17 23:12 lib64 drwx------ 2 root root 16384 Mar 7 19:27 lost+found drwxr-xr-x 5 root root 4096 Apr 8 21:17 media drwxr-xr-x 3 root root 4096 Apr 8 21:10 mnt drwxr-xr-x 6 root root 4096 May 22 16:53 opt drwxr-xr-x 2 root root 4096 Apr 10 2014 proc drwx------ 7 root root 4096 Jun 13 09:09 root drwxr-xr-x 11 root root 4096 Feb 17 23:19 run drwxr-xr-x 2 root root 12288 May 13 06:17 sbin drwxr-xr-x 2 root root 4096 Feb 17 23:11 srv drwxr-xr-x 2 root root 4096 Mar 13 2014 sys drwxrwxrwt 15 root root 20480 Jun 15 07:21 tmp drwxr-xr-x 11 root root 4096 Apr 17 10:39 usr drwxr-xr-x 13 root root 4096 Feb 17 23:23 var lrwxrwxrwx 1 root root 29 May 13 06:22 vmlinuz -> boot/vmlinuz-4.2.0-36-generic lrwxrwxrwx 1 root root 29 Apr 17 10:47 vmlinuz.old -> boot/vmlinuz-4.2.0-35-generic
Проверяем /boot
:
# ls -l /mnt/boot/ total 125712 -rw-r--r-- 1 root root 1312645 Mar 11 13:17 abi-4.2.0-34-generic -rw-r--r-- 1 root root 1313029 Mar 18 18:14 abi-4.2.0-35-generic -rw-r--r-- 1 root root 1313407 May 13 21:55 abi-4.2.0-36-generic -rw-r--r-- 1 root root 184896 Mar 11 13:17 config-4.2.0-34-generic -rw-r--r-- 1 root root 184896 Mar 18 18:14 config-4.2.0-35-generic -rw-r--r-- 1 root root 184896 May 13 21:55 config-4.2.0-36-generic drwxr-xr-x 5 root root 4096 May 21 18:55 grub -rw-r--r-- 1 root root 30528342 Apr 17 10:36 initrd.img-4.2.0-34-generic -rw-r--r-- 1 root root 30002777 Apr 17 10:49 initrd.img-4.2.0-35-generic -rw-r--r-- 1 root root 31654405 May 21 18:55 initrd.img-4.2.0-36-generic drwx------ 2 root root 16384 Mar 7 19:27 lost+found -rw-r--r-- 1 root root 176500 Mar 12 2014 memtest86+.bin -rw-r--r-- 1 root root 178176 Mar 12 2014 memtest86+.elf -rw-r--r-- 1 root root 178680 Mar 12 2014 memtest86+_multiboot.bin -rw------- 1 root root 3757656 Mar 11 13:17 System.map-4.2.0-34-generic -rw------- 1 root root 3758162 Mar 18 18:14 System.map-4.2.0-35-generic -rw------- 1 root root 3758996 May 13 21:55 System.map-4.2.0-36-generic -rw------- 1 root root 6716080 Mar 11 13:17 vmlinuz-4.2.0-34-generic -rw------- 1 root root 6731856 Mar 18 18:14 vmlinuz-4.2.0-35-generic -rw------- 1 root root 6732816 May 13 21:55 vmlinuz-4.2.0-36-generic
С помощью chroot
меняем свой текущий корневой раздел на каталог /mnt
:
# chroot /mnt/
Генерируем новый grub.cfg
, что бы в него добавился раздел с Windows:
# update-grub Generating grub configuration file ... Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported. Found linux image: /boot/vmlinuz-4.2.0-36-generic Found initrd image: /boot/initrd.img-4.2.0-36-generic Found linux image: /boot/vmlinuz-4.2.0-35-generic Found initrd image: /boot/initrd.img-4.2.0-35-generic Found linux image: /boot/vmlinuz-4.2.0-34-generic Found initrd image: /boot/initrd.img-4.2.0-34-generic Found memtest86+ image: /memtest86+.elf Found memtest86+ image: /memtest86+.bin Found Windows 7 (loader) on /dev/sda4 done
Примечание: update-grub, update-grub2 и grub-mkconfig – одно и то же:
update-grub, update-grub2 – stub for grub-mkconfig
update-grub is a stub for running grub-mkconfig -o /boot/grub/grub.cfg to generate a grub2 config file.
Проверяем конфиг:
# cat boot/grub/grub.cfg | grep 'Windows\|Ubuntu' menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-32311065-7026-48ca-ad76-5edd64ef9e28' { submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-32311065-7026-48ca-ad76-5edd64ef9e28' { menuentry 'Ubuntu, with Linux 4.2.0-36-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.2.0-36-generic-advanced-32311065-7026-48ca-ad76-5edd64ef9e28' { menuentry 'Ubuntu, with Linux 4.2.0-36-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.2.0-36-generic-recovery-32311065-7026-48ca-ad76-5edd64ef9e28' { menuentry 'Ubuntu, with Linux 4.2.0-35-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.2.0-35-generic-advanced-32311065-7026-48ca-ad76-5edd64ef9e28' { menuentry 'Ubuntu, with Linux 4.2.0-35-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.2.0-35-generic-recovery-32311065-7026-48ca-ad76-5edd64ef9e28' { menuentry 'Ubuntu, with Linux 4.2.0-34-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.2.0-34-generic-advanced-32311065-7026-48ca-ad76-5edd64ef9e28' { menuentry 'Ubuntu, with Linux 4.2.0-34-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.2.0-34-generic-recovery-32311065-7026-48ca-ad76-5edd64ef9e28' { menuentry 'Windows 7 (loader) (on /dev/sda4)' --class windows --class os $menuentry_id_option 'osprober-chain-4A50CF6C50CF5D77' {
Подробнее про двойную загрузку Linux + Windows и файл grub.cfg
– в посте Linux: изменить порядок загрузки в GRUB.
Устанавливаем grub
:
# grub-install /dev/sda Installing for i386-pc platform. Installation finished. No error reported.
Выходим из chroot
-окружения по Ctrl+D и отмонтируем всё:
# umount /mnt/proc # umount /mnt/dev # umount /mnt/sys # umount /mnt/boot # umount /dev/kubuntu_vg/root
Готово. Выполняем reboot
, загружаемся с жесткого диска – и получаем обратно grub
с Windows в опциях.