banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Di chuyển phân vùng cài đặt Linux sang phân vùng hoặc ổ đĩa khác  XML
  [Article]   Di chuyển phân vùng cài đặt Linux sang phân vùng hoặc ổ đĩa khác 27/01/2013 11:52:14 (+0700) | #1 | 273077
[Avatar]
heroandtn3
Member

[Minus]    0    [Plus]
Joined: 20/02/2010 08:47:46
Messages: 182
Location: /home
Offline
[Profile] [PM] [WWW]
Lưu ý: Bài viết này được tôi thử nghiệm trên Debian và Ubuntu thành công nên các hệ thống Linux sử dụng Grub làm Bootloader đều có thể áp dụng tương tự smilie .

I. Mở đầu

Đôi khi trong quá trình sử dụng Linux bạn sẽ có ý định chuyển phân vùng cài đặt của Linux sang một phân vùng khác hoặc ổ đĩa khác. Có thể là phân vùng hoặc ổ đĩa hiện tại có dung lượng không đủ cho nhu cầu sắp tới của bạn, hoặc có thể bạn muốn di chuyển phân vùng cài đặt Linux ra phía rìa ngoài của đĩa cứng nhằm tăng tốc độ đọc/ghi phân vùng đó http://vi.wikipedia.org/wiki/%E1%BB%94_%C4%91%C4%A9a_c%E1%BB%A9ng#Ph.C3.A2n_v.C3.B9ng_.28Partition.29).

Về cơ bản, mọi thứ trên Linux/Unix đều là file http://www.linux.org/article/view/in-linux-everything-is-a-file), do vậy, chúng ta có thể hình dung được rằng để di chuyển phân vùng cài đặt Linux sang nơi khác thì đơn giản chỉ cần copy toàn bộ thư mục root (/) của nó sang vị trí mới, sau đó chỉ cần cài lại Grub và chỉnh sửa file /etc/fstab là được.

II. Các bước thực hiện

Lý thuyết đã có rồi, bây giờ chúng ta bắt tay vào thực hiện:

Bước 1: Chuẩn bị một Live CD hoặc Live USB

Tại sao vậy? Trong quá trình chuyển có thể gặp một số lỗi (do người thực hiện áp dụng không đúng cách hoặc do bạn đọc bài viết này sau 10 năm kể từ ngày nó được viết khiến nó quá lỗi thời) khiến hệ thống không thể khởi động được. Khi đó bạn có thể sử dụng một Live CD hoặc Live USB để boot vào và sửa lỗi.

Khuyến cáo bạn nên tạo Live CD, USB từ Ubuntu và Linux Mint vì nó chứa sẵn công cụ phân vùng Gparted (không biết các distro khác có thế không).

Lưu ý là các bước trong bài viết này các bạn làm trên hệ thống hiện tại, Live CD, USB chỉ sử dụng khi bạn gặp lỗi nào đó và không boot được vào hệ thống thôi.

Bước 2: Tạo phân vùng mới để chứa thư mục root

Để tạo một vân vùng mới thì có nhiều cách. Đơn giản nhất là sử dụng công cụ phân vùng có giao diện đồ họa như Gparted, công cụ này được cài đặt sẵn nếu bạn tạo Live CD và USB từ Ubuntu hoặc Linux Mint.

Một cách khác là sử dụng fdisk, cách phân vùng với fdisk các bạn có thể đọc ở bài viết này http://www.tldp.org/HOWTO/Partition/fdisk_partitioning.html. Nó thật sự không quá khó nhưng tốt nhất bạn nên cẩn thận vì thao tác phân vùng luôn luôn tiềm ẩn rủi ro.

Bước 3: Sao chép root sang phân vùng mới

Để dễ hình dung, tôi ví dụ hiện trạng phân vùng của đĩa như sau:

Code:
sda       disk
├─sda1    part --> phân vùng bạn vừa tạo và muốn chuyển đến
├─sda2    part swap
├─sda3    part / --> phân vùng chứa thư mục / hiện tại


Bây giờ, gõ lệnh sau để format phân vùng sda1 với hệ thống file EXT3 (lưu ý là nếu phân vùng cũ là EXT2 hoặc EXT4 thì bạn không format với EXT3 mà phải format với file system tương ứng):

Code:
# mkfs.ext3 /dev/sda1


Tiếp theo, mount phân vùng sda1 vào:

Code:
# mkdir /mnt/newroot
# mount /dev/sda1 /mnt/newroot


Bây giờ copy toàn bộ nội dung phân vùng / sang phân vùng mới:

Code:
# cp -ax / /mnt/newroot


Xem thêm về lệnh copy tại đây http://tldp.org/HOWTO/Hard-Disk-Upgrade/copy.html.

Bước 4: Sửa lại file /etc/fstab

Làm theo các lệnh sau:

Code:
# cd /mnt/newroot
# vi etc/fstab


Tìm đến dòng định nghĩa mount point của phân vùng / (lưu ý là chuỗi UUID có thể khác trên máy bạn):

Code:
UUID=b9d62595-e95c-45b1-8a46-2c0b37fcf153 / ext3 noatime,errors=remount-ro 0 1


hoặc

Code:
/dev/sda3 / ext3 noatime,errors=remount-ro 0 1


sửa lại thành:

Code:
/dev/sda1 / ext3 noatime,errors=remount-ro 0 1


Bạn cũng có thể sử dụng UUID thay vì /dev/sda1, cách kiểm tra UUID của các phân vùng các bạn gõ lệnh sau:

Code:
# blkid


Bước 5: Cài lại Grub

Cách 1: Cài trực tiếp luôn (nếu không được thì các bạn dùng cách 2)

Gõ lệnh sau để cài lại Grub:

Code:
# grub-install --root-directory=/mnt/newroot /dev/sda


Cách 2: Change root (chroot) rồi cài

Mount các thư mục ảo vào thư mục root mới:

Code:
# mount -o bind /dev /mnt/newroot/dev
# mount -t proc none /mnt/newroot/proc
# mount -t sysfs none /mnt/newroot/sys


Tiến hành chroot (change root):

Code:
# chroot /mnt/newroot


Cài lại grub:

Code:
# grub-install /dev/sda


Update grub (nếu cần):

Code:
# update-grub


Nếu không có thông báo lỗi nào thì có nghĩa là bạn đã thành công.

Exit ra và khởi động lại máy:

Code:
# exit
# reboot


Bước 6: Sửa một số thứ (nếu có)

Trong quá trình bạn tạo phân vùng mới hoặc xóa phân vùng cũ có thể dẫn đến việc các phân vùng được đánh số lại. Ví dụ lúc trước phân vùng swap của bạn là sda2, nhưng sau khi phân vùng thì nó là sda3 chẳng hạn, khi đó bạn cần sửa lại file /etc/fstab cho phù hợp.

Trường hợp tương tự cũng xảy ra nếu các thư mục như /home, /boot được đặt ở phân vùng riêng.

III. Các lỗi và câu hỏi thường gặp

1. Tôi không thể boot vào hệ thống, có lỗi gì đó liên quan đến Grub

Bạn hãy boot vào bằng Live CD hoặc Live USB rồi cài lại Grub.

Cách cài lại không khó, bạn có thể cài đặt công cụ có giao diện đồ họa Boot Repair https://help.ubuntu.com/community/Boot-Repair) và sửa một cách hoàn toàn tự động.

Hoặc có thể cài lại bằng cách làm như sau:

- Mount phân vùng chứa thư mục root của hệ thống (ví dụ nó đang ở sda1):

Code:
# mkdir /mnt/myroot
# mount /dev/sda1 /mnt/myroot


- Mount thư mục /boot nếu bạn đặt /boot ở phân vùng khác

- Cài lại Grub:

Code:
# grub-install --root-directory=/mnt/myroot /dev/sda


2. Tôi khởi động được nhưng có thông báo không mount được thư mục /home, sau đó thì tôi cũng không đăng nhập được

Tình trạng này xảy ra khi thư mục /home của bạn đặt ở phân vùng khác và do phân vùng đó được đánh số lại nên nó không mount được.

Để xử lý lỗi này, bạn bấm Ctrl+Alt+F1 rồi đăng nhập ở chế độ dòng lệnh. Sau đó gõ lệnh sau để sửa file /etc/fstab:

Code:
# vi /etc/fstab


Tìm đến dòng định nghĩa mount cho thư mục /home và sửa lại cho đúng.

Sau đó mount lại thư mục /home:

Code:
# mount /home


Bấm Ctrl+Alt+F7 rồi đăng nhập bình thường.

Chúc vui vẻ.

-sh
Sống là thương nhưng lòng chẳng vấn vương...
br
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|