Ако с програмката от предишната статия сте си инсталирали Убунту върху флаш памет, може би ви се иска някак си да можете да запазвате настройките си и промените които правите по време на работа, дори и след рестарт. За щастие – има как да го направите. В текущата статия ще се спра върху начинът за постигане на това с току-що излязлото Убунту 8.04, но в следващите дни очаквайте инструкции и за „Учи Свободен с Убунту“ (който всъщност е базиран на Убунту 7.10, така че инструкциите ще са валидни и за него).

Към настоящият момент тази функционалност е „счупена“ както в 7.10, така и в 8.04 и се налага редактиране на два скрипта в initrd.gz. За ваше щастие обаче, съм подготвил оправен initrd.gz за 8.04, така че да не ви се налага да редактирате скриптове. Можете да го свалите от тук: initrd.gz (7.5 MB). Напишете

wget http://learnfree.eu/download/ubuntu-persistent/8.04/initrd.gz

в терминал за да го свалите, ако опитате през браузъра той ще се опита да покаже съдържанието на gz файла, вместо да го свали. Правете така и за останалите gz файлове за които ще стане дума. Можете директно да копирате моят файл върху флашката ви в папка casper (заменяйки вашият), а можете и да следвате инструкциите за да си направите собствен.

Ще опиша целия процес за да можете и вие да го направите. Първо пъхнете живия диск с Убунту и стартирайте компютъра от него. От този диск ще ви трябва и файлът initrd.gz намиращ се в директорията casper. При мен дискът се монтира в /cdrom.

За по-сигурно, ще работим като root – отворете един терминал и в него напишете:

sudo su

Оставете го отворен, тъй като в него ще извършим всички следващи действия.

Първо си създавате една папка в която ще работите:

mkdir -p ~/persistent/initrd

След това отивате в ~/persistent/initrd и разархивирате там initrd.gz от диска:

cd ~/persistent/initrd
gzip -dc /cdrom/casper/initrd.gz | cpio -i

После отваряте за редактиране файлът ~/persistent/initrd/init:

gedit ~/persistent/initrd/init

В него намирате мястото където пише:

break)
break=premount
;;
esac

и точно над esac добавяте

persistent)
PERSISTENT=yes
root_persistence=casper-rw
home_persistence=home-rw
;;

Крайният вид трябва да е

break)
break=premount
;;
persistent)
PERSISTENT=yes
root_persistence=casper-rw
home_persistence=home-rw
;;
esac

Запазвате файла и го затваряте. Следващата редакция е в ~/persistent/initrd/scripts/casper:

gedit ~/persistent/initrd/scripts/casper

Отивате на ред 392 и маркирате всичко от него (включително) до ред 424 (включително). Изтривате го и на негово място поставяте:

cowdevice="tmpfs"
cow_fstype="tmpfs"
# Looking for "${root_persistence}" device or file
if [ -n "${PERSISTENT}" ]; then
cowprobe=$(find_cow_device "${root_persistence}")
if [ -b "${cowprobe}" ]; then
cowdevice=${cowprobe}
cow_fstype=$(get_fstype "${cowprobe}")
else
[ "$quiet" != "y" ] && log_warning_msg "Unable to find the persistent medium"
fi
fi
mount ${cowdevice} -t ${cow_fstype} -o rw,noatime /cow || panic "Can not mount $cowdevice on /cow"
mount -t ${UNIONFS} -o noatime,dirs=/cow=rw:$rofsstring ${UNIONFS} "$rootmnt" || panic "${UNIONFS} mount failed"

Запазвате файла и го затваряте. Сега трябва да изградите отново initrd.gz:

cd ~/persistent/initrd
find . | cpio -o -H newc | gzip -9 > ../initrd.gz

Следва да копирате файлът ~/persistent/initrd.gz върху флашката на която сте си инсталирали Убунту. Трябва да го сложите в папката casper, като презапишете вече съществуващия.

Това е всичко отнасящо се до initrd.gz.

Сега относно мястото където ще се записват настройките/проментите. Този начин на запазване се нуждае от дял с име casper-rw върху флашката, или от image файл на файлова система ext2/ext3, пак с име casper-rw, намиращ се в основната директория на флашката. За простота и удобство съм избрал втория начин – с помощта на image файл. От размера на този файл зависи с какво свободно пространство ще разполагате за промени/настройки т.е. какво количество файлове ще можете да си записвате в домашната директория на Убунту и в другите директории от файловата система (не в основната директория на флашката).

Ако искате сами да си създадете такъв файл трябва първо да създадете един празен файл с нужната големина. Ако не ви се занимава, може да продължите да четете и да видите откъде може да свалите готов image файл. Моята флашка се монтира в /media/UBUNTU (но при вас може да е с различно име, например /media/sdb1 или нещо друго). Създаваме празен файл с големина 512 MB върху нея:

dd if=/dev/zero of=/media/UBUNTU/casper-rw bs=1M count=512

След това създавате ext2 или ext3 файлова система в този файл. Аз лично препоръчвам ext2, за да работи по-бързо:

mkfs.ext2 /media/UBUNTU/casper-rw -L casper-rw

Ако искате файловата система да е ext3, използвайте mkfs.ext3 вместо mkfs.ext2.

Ако не ви се пишат команди, съм ви приготвил две готови изображения с големина 256 и 512 MB. Тъй като са празни, съм ги компресирал с gzip, така че са станали с големина няколкостотин килобайта, и са лесни за сваляне:
изображението за 265 MB файлова система: image-256.gz

wget http://learnfree.eu/download/ubuntu-persistent/8.04/image-256.gz

изображението за 512 MB файлова система: image-512.gz

 wget http://learnfree.eu/download/ubuntu-persistent/8.04/image-512.gz

След като свалите някое от тях обаче, трябва да го разкомпресирате и преименувате на casper-rw. Например, свалили сте image-512.gz в домашната си директория, а флашката ви е монтирана като /media/UBUNTU:

mv ~/image-512.gz /media/UBUNTU
cd /media/UBUNTU
gunzip image-512.gz
mv image-512 casper-rw

Принципно, трябва да сте готови!

Сега, за да ви се записват настройките (и за да се зареждат вече записаните такива) е нужно само в boot менюто да добавите думичката persistent като параметър на ядрото. За целта при стартиране на boot менюто на флашката маркирайте опцията която обикновено избирате за да стартирате вашето Убунту, но не натискайте Enter, а натиснете Tab.
В долната част на екрана ще се появи текстово поле в което са изписани текущите параметри които се подават на ядрото, а накрая има две тирета .
Добавете интервал след тиретата и след него напишете persistent, така че да стане – persistent. Натиснете Enter, и вашето живо USB Убунту ще се стартира в persistent режим, т.е. ще си запазва и възстановява настройките. Ако не ви се занимава всеки път да пишете, може да редактирате файлът syslinux.cfg от флашката. В него са описани опциите които се появяват в boot менюто. Всяка от опциите от менюто там е описана като menu label ^(име на опцията). Под нея има ред започващ с думата kernel, а след него – с думата append. Именно редът с append ви интересува. Ориентирайте се коя е опцията, която нормално избирате за да стартирате Убунту от флашката (най-вероятно това е първата опция), и на края на редът с apped, след двете тирета добавете интервал и след него думичката persistent. Редът трябва да изглежда примерно така:

 append  file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.gz quiet splash -- persistent

Записвате файла и сте готови!
А, и още нещо: не опитвайте да използвате дадения от мен initrd.gz за да стартирате по подобен начин „Учи Свободен с Убунту“, тъй като то е базирано на Убунту 7.10 и там нещата са други. Скоро мисля да напиша и инструкции за него.

Инсталацията на Убунту върху флашка (поне 8.04, за другите не съм обърнал внимание още), има един недостатък – самата флашка се монтира в /cdrom в режим само за четене т.е. не можете да записвате директно файлове върху нея освен ако не сте с root привилегии. Ще потърся начин да фиксирам този проблем по някое време…

Също така НЕДЕЙТЕ да вадите флашката от компютъра докато от нея е пуснато Убунту. Особено ако сте в persistent режим. Ако го направите, най-вероятно ще „счупите“ (не фатално) файловата система и може да изгубите записани данни.

Имайте предвид че не всичко работи както ви се иска в такъв режим – например, не можете успешно да ъпгрейдвате ядрото, не можете да променяте драйвера за видеокартата (винаги се засича автоматично при стартиране) и т.н. Но като цяло можете да инсталирате всякакъв софтуер и да си работите пълноценно дори и в този режим.Успех!