Miután megérkezett a rég várt merevlemezem, úgy gondoltam, érdemes átköltözni arra, hiszen egy régi Seagate 80 GB és egy új Samsung 500 GB között bőven van különbség, mind méret, mind sebesség tekintetében.
Először is fontos tudnivaló: az /etc/fstab fájlban érdemes UUID alapján hivatkozni a partíciókra, mert nem keveredik bele, ha véletlenül eddig valami sdb volt, de ez után sdc lesz, így már korábban megcsináltam a módosítást, hogy lekértem a sudo blkid -vel az UUID-ket és beírtam az fstabba. Például:
UUID=ae14c5bf-578f-42ac-a86d-225487b1a6d1 / ext4 errors=remount-ro 0 1
UUID=308766ec-42b8-3fe7-9903-c741ecc985af /home ext4 defaults 0 0
Kicsomagolás és bekötés után nem piszkáltam semmit sem a BIOS-ban, ugyanúgy elindítottam a rendszert, mint szoktam. Az eddigi sda és sdb után lett egy sdc vinyóm. Majd miután felállt, elindítottam a GParted alkalmazást a menüből (Rendszer-Adminisztráció-GParted) és megcsináltam az alábbi felosztást:
http://kephost.hu/image-EF50_4C8B0616.jpg
Persze ez változhat, attól függően, ki hogyan szereti feldarabolni, én is rákérdeztem a fórumban, sokak szerint túlbonyolítom, de az biztos, érdemes legalább a /home -nak külön lennie a gyökértől (amit ubuntunak neveztem). Na, ha már ilyen szépen fel is címkéztem az új partíciókat, hogy később tudjam, mit hova, még egy boot jelölőt kell tenni az indítandó partícióra (ez jelen esetben a boot, de ha nincs külön, akkor az, ahol az ubuntu új helye lesz).
Ideje másolni. Felcsatoltam mindet egyszerűen a "Helyek - Cserélhető adathordozók" menüből, szépen sorban. Meg is jelent a /media könyvtárban mindegyik, olyan névvel, amilyen cimkét adtam neki. Aztán nyitottam egy terminált és kiadtam a következő parancsokat szépen sorban:
sudo su
cd /
find / -xdev -print0 | nice -n 15 cpio --null --sparse -pvdm /media/ubuntu/
cd /home
find ./ -xdev -print0 | nice -n 15 cpio --null --sparse -pvdm /media/home/
cd /boot
find ./ -xdev -print0 | nice -n 15 cpio --null --sparse -pvdm /media/boot/
cd /tmp
find ./ -xdev -print0 | nice -n 15 cpio --null --sparse -pvdm /media/tmp/
cd /var
find ./ -xdev -print0 | nice -n 15 cpio --null --sparse -pvdm /media/var/
exit
Persze ezek közül elég azt alkalmazni, ahány partíciót csináltunk. Ez amúgy azt csinálja, hogy kilistáz minden fájlt, kivétel a más fájlrendszeren levőket, majd a cpio ezt a listát felhasználva átmásol mindent az új helyre, megtartva a fájlok eredeti dátumát. A
nice -n 15 nem muszáj, csak azért raktam oda, hogy közben tudjak nyugodtan netezni, ez csökkenti a cpio procihasználatát (cserében picit lassabb lesz), nem akadt be a gép annyira. Nélküle is mehet (ha nincs megadva, akkor nice=0), bár ha nem használom, szerintem akkor is sokáig tartana :)
Nálam a /var átmásolása 9 perc volt, a / pedig 17 perc. Mivel eddig nem volt külön partíción a /boot, az első paranccsal az is átmásolódott, így utána töröltem a tartalmát. Most olvastam utána, elvileg a
-type d \( -name boot \) -prune -o beszúrása a -xdev és -print0 közé megoldotta volna azt, hogy ne másolja át a boot könyvtárat.
Hogy később tudjam, jól csináltam-e mindent, csináltam egy 'ok' nevű üres fájlt minden új partíción (ha van külön tmp, abba nem kell, mert úgyis törlődik minden indításkor, viszont azt tegyük mindenki által írhatóvá).
sudo su
echo "" > /media/boot/ok
echo "" > /media/home/ok
echo "" > /media/ubuntu/ok
echo "" > /media/var/ok
exit
Most jön egy kis babrálós rész, ha már így belemelegedtem :) Először is lekérdeztem az UUID-ket, hogy melyik partíciót 'hogy hívnak', méghozzá a fentebb is írt
sudo blkid paranccsal, valamint megnyitottam szerkesztésre az új vinyón az fstab fájt (sudo gedit /media/ubuntu/etc/fstab) és átírtam a megfelelőre (illetve esetemben beillesztettem még a boot sort, mert ugye az eddig nem volt). Ha már onnan fogunk indulni, az ottani partíciók kellenek :)
Példának ideírom az fstab néhány sorát:
UUID=6a48a658-8888-4472-a889-32ec15e5c474 / ext4 errors=remount-ro 0 1
UUID=234349f5-2195-434d-97c9-9d403791e770 /boot ext2 defaults 0 1
UUID=155bce40-4506-474d-a05f-7b93cc787a93 /home ext4 defaults 0 0
Ha ez megvan, jöhet a grub-bűvészkedés. A következő kicsit ismerős lehet a livecdről bootolás utáni grub újratelepítéséhez, ugyanazt kell csinálni most is, csak livecd nélkül, az épp futó rendszerben.
sudo su
mount --bind /dev /media/ubuntu/dev
mount --bind /dev/pts /media/ubuntu/dev/pts
mount --bind /proc /media/ubuntu/proc
mount --bind /sys /media/ubuntu/sys
mount --bind /media/boot /media/ubuntu/boot
exit
Az utolsó sor nem kell, ha nincs külön boot partíció, hiszen akkor a gyökérben (ubuntu) van a boot. Ha van külön tmp és var, érdemes azokat is bindelni. Most, hogy már a /media/ubuntu alatt is megvannak a futtatáshoz szükséges fájlok/könyvtárak, berootolódunk (van ennél szebb szó?:)) oda és ott újra rakjuk a grubot, majd kilépünk chrootból:
sudo chroot /media/ubuntu
sudo update-grub
sudo grub-install /dev/sdX
sudo grub-install --recheck /dev/sdX
exit
Természetesen az sdX helyére az új merevlemezt kell írni, partíciószám nélkül, ez nálam sdc volt. Utána mehet a rendszer újraindítása. Most már beléphetünk a BIOS-ba is, át lehet állítani a bootolási sorrendet az új merevlemezre. Ha minden jól ment, ugyanolyan minden, mint eddig volt, csak látható a gyökérben, a home-ban és ahova tettük az 'ok' fájt, hogy ez már az új winchester.