А можно по подробнее про "squash"?
Предположим нужно сохранить раздел sda1. В Ubuntu 16.04 пакет squashfs-tools уже установлен, в более старых версиях нужно установить. Сохранять будем на раздел sda2.
Вариант 1.
1. Создаем "живую систему". Скачиваем образ Ubuntu и копируем на раздел sda2 в папку /opt.
В файл /etc/grub.d/40_custom вашей установленной Ubuntu добавляем следующий код:
submenu 'Flash menu >>' {
menuentry '*buntu iso' {
iso_path='/opt/ubuntu-16.04.2-desktop-amd64.iso'
key="boot=casper cdrom-detect/try-usb=true file=/cdrom/preseed/ubuntu.seed iso-scan/filename=$iso_path noprompt quiet --"
export iso_path
search -f ${iso_path} -n -s
loopback loop ${iso_path}
root=(loop)
if [ -e /boot/grub/loopback.cfg ]
then configfile /boot/grub/loopback.cfg
loopback --delete loop
else linux /casper/vmlinuz ${key}
initrd /casper/initrd.lz
fi
}
menuentry 'Ubuntu 16.04 squash' {
src='/opt/ub1604'
key="ignore_uuid boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper nosplash --"
search -f ${src}/casper/vmlinuz -n -s
if [ -e "${src}/casper-rw" ]; then key="persistent persistent-path=$src $key"; fi
linux ${src}/casper/vmlinuz ${key}
initrd ${src}/casper/initrd.lz
}
}
В терминале выполняем:
sudo update-grub
В меню груб будет создано подменю "Flash menu >>", а в нем два пункта меню. Первый - для запуска системы из исо-образа, второй - для запуска системы из образа squashfs.
2. Запускаем систему из исо-образа.
В зависимости от разных причин, раздел sda2 уже может быть примонтирован в один из следующих каталогов: /cdrom, /isodevice, /media.
Для конкретики будем считать что он примонтирован в /cdrom в режиме "только чтение".
Перемонтируем его в режим "чтение-запись". Открываем терминал. Выполняем:
sudo mount -o remount,rw /cdrom
Монтируем раздел sda1 и запускаем создание squash:
sudo mount /dev/sda1 /mnt/sda1
sudo mksquashfs /mnt/sda1 /cdrom/opt/ub1604/casper/ub1604_1706.squashfs
Если будете использовать squash-файл только как бекап - имя и расширение может быть любое.
Если будете запускать систему из этого файла - имя может быть любое, а расширение только "squashfs".
3. Распаковать squash можно командой:
sudo unsquashfs -f -d /mnt/sda1 /cdrom/opt/ub1604/casper/ub1604_1706.squashfs
4. Чтобы запустить систему из squash-образа, нужно в каталог casper скопировать ядро и инитрд из исо-образа. Монтируем исо-образ и копируем файлы:
sudo mount -o loop /cdrom/opt/ubuntu-16.04.2-desktop-amd64.iso /mnt/ubuntu-16.04.2-desktop-amd64.iso
sudo cp /mnt/ubuntu-16.04.2-desktop-amd64.iso/casper/vmlinuz.efi /cdrom/opt/ub1604/casper/vmlinuz
sudo cp /mnt/ubuntu-16.04.2-desktop-amd64.iso/casper/initrd.lz /cdrom/opt/ub1604/casper
Только в инитрд из исо-образа есть код для загрузки системы из squash. Поэтому в системе, которую вы хотите запускать из squash должно быть установлено ядро версии такой-же, как на исо-образе. Для этого я никогда не удаляю ядро, с которым устанавливал систему.
Вариант 2.
1. Создаем "живую систему". Скачиваем образ Ubuntu и копируем на раздел sda1 в папку /opt.
В файл /etc/grub.d/40_custom вашей установленной Ubuntu добавляем следующий код:
submenu 'Flash menu >>' {
menuentry '*buntu iso' {
iso_path='/opt/ubuntu-16.04.2-desktop-amd64.iso'
key="boot=casper cdrom-detect/try-usb=true file=/cdrom/preseed/ubuntu.seed iso-scan/filename=$iso_path noprompt quiet --"
export iso_path
search -f ${iso_path} -n -s
loopback loop ${iso_path}
root=(loop)
if [ -e /boot/grub/loopback.cfg ]
then configfile /boot/grub/loopback.cfg
loopback --delete loop
else linux /casper/vmlinuz ${key}
initrd /casper/initrd.lz
fi
}
menuentry '*buntu casper {
src='/opt/casper'
key="ignore_uuid boot=casper cdrom-detect/try-usb=true live-media-path=$src nosplash quiet --"
search -f ${src}/vmlinuz -n -s
linux ${src}/vmlinuz ${key}
initrd ${src}/initrd.lz
}
}
В терминале выполняем:
sudo update-grub
В меню груб будет создано подменю "Flash menu >>", а в нем два пункта меню. Первый - для запуска системы из исо-образа, второй - для запуска "живой системы" из каталога /opt/casper/ub1604.dir.
На разделе sda1 создаем каталог /opt/casper.
sudo mkdir /opt/casper
В каталоге /opt/casper создаем символичесуую ссылку на корень.
sudo ln -s "../../" "/opt/casper/ub1604.dir"
Монтируем исо-образ и копируем файлы ядра и инитрд:
sudo mount -o loop /opt/ubuntu-16.04.2-desktop-amd64.iso /mnt/ubuntu-16.04.2-desktop-amd64.iso
sudo cp /mnt/ubuntu-16.04.2-desktop-amd64.iso/casper/vmlinuz.efi /opt/casper/vmlinuz
sudo cp /mnt/ubuntu-16.04.2-desktop-amd64.iso/casper/initrd.lz /opt/casper
2. Запускаем "живую систему" из каталога.
Наша установленная система примонтирована в /cdrom в режиме "только чтение".
Монтируем раздел sda2 и запускаем создание squash:
sudo mount /dev/sda2 /mnt/sda2
sudo mksquashfs /cdrom /mnt/sda2/opt/ub1604/casper/ub1604_1706.squashfs
Если на разделе sda2 файловая система "линуксовая", то можно, вместо сжатия в squash, скопировать в каталог ub1604.dir.
sudo cp /cdrom /mnt/sda2/opt/ub1604/casper/ub1604.dir
Имя каталога может быть любое, а расширение только ".dir".
Надеюсь ничего не напутал в командах. У меня все прописано в user-menu midnight commander. Как говориться: один раз написал и забыл.
...компрессия больших объемов данных (несколько гигабайт) требует достаточно большое количество памяти, и занимает много времени
Да, времени требует. Зависит от процессора. Таким-же способом сохранял виндовый раздел порядка 50гб. Меньше часа, точнее не помню. Пару раз мне это помогло восстановить винду.
Большого количества памяти не требует, не больше чем современный браузер.