Trong Phần 1 của Bài 3, chúng ta đã tìm hiểu cách kết nối và mount ổ đĩa ngoài: USB, ổ cứng HDD, SSD sử dụng chuẩn SATA. Tiếp theo, chúng ta cùng nghiên cứu cách sao chép file hệ thống gốc tới ổ đĩa ngoài hoặc khởi động từ ổ đĩa ngoài. Thẻ nhớ làm hạt nhân với trình điều khiển file hệ thống cần thiết nằm ở phân vùng đầu tiên của thẻ nhớ.
Việc di chuyển file hệ thống gốc từ thẻ nhớ sang ổ đĩa ngoài để tăng hiệu năng và/hoặc giảm dung lượng. Ngoài ra, khi có nhiều thao tác I/O trên thẻ nhớ, thẻ nhớ sẽ không làm việc ổn định. Nhìn chung, file hệ thống gốc trên ổ cứng ngoài thì ổ cứng hoạt động ổn định hơn.
* Chuẩn bị:
– Banana Pi cài đặt hệ điều hành Linux;
– Ổ cứng HDD hoặc SSD chuẩn SATA;
– Kết nối làm việc với Banana Pi và nguồn cung cấp phù hợp;
– Trình biên dịch shell của Banana Pi.
Cách làm việc:
* Format ổ đĩa:
Chúng ta cần chuẩn bị ổ cứng HDD hoặc SSD để format phân vùng ext4;
1. Mở Shell.
2. Nếu ổ đĩa ngoài của bạn đã được kết nối, hãy ngắt kết nối tất cả các phân vùng:
$ sudo umount / dev / sda *
3. Thực thi chương trình fdisk với ổ cứng SATA dưới dạng tham số:
$ sudo fdisk / dev / sda
4. Khi nhập p, bạn sẽ nhận được danh sách tất cả các phân vùng hiện có.
5. Xóa tất cả các phân vùng.
6. Nhập d theo sau là 1 để xóa phân vùng đầu tiên.
7. Sử dụng lại thao tác d, cho đến khi tất cả các phân vùng bị xóa.
8. Nhập n theo sau là 4x. Nhấn Enter để tạo một phân vùng mới với kích thước của ổ đĩa.
9. Nhập lại p để kiểm tra xem bảng phân vùng có đúng hay không.
10. Kiểm tra lại xem mọi thứ đã chính xác chưa.
11. Nhập w để ghi các thay đổi vào ổ đĩa. Nếu không, hãy nhập q để thoát mà không có thay đổi.
Hình sau đây cho thấy các bước trước đó được thực hiện trong fdisk:

12. Tạo file hệ thống ext4 trên phân vùng mới tạo:
$ sudo mkfs.ext4 / dev / sda1
13. Vài phút sau, phân vùng ext4 mới được tạo.
Bạn đã tạo thành công một phân vùng ext4 mới.
* Sao chép file hệ thống gốc và chỉnh sửa uEnv.txt:
Bước thứ hai là sao chép toàn bộ hệ thống cơ bản gốc (rootfs) vào đĩa bên ngoài và chỉnh sửa file uEnv.txt, chứa thông tin cần thiết cho nhân tại thời điểm khởi động:
1. Tạo hai thư mục mount (nếu không tồn tại) để mount phân vùng đầu tiên của thẻ nhớ và ổ đĩa SATA:
$ sudo mkdir / mnt / boot
$ sudo mkdir / mnt / sata_drive
2. Mount các phân vùng của thẻ nhớ:
$ sudo mount / dev / mmcblk0p1 / mnt / boot
3. Mount phân vùng ext4 mới vào ổ SATA:
$ sudo mount / dev / sda1 / mnt / sata_drive
4. Đồng bộ hóa rootfs với ổ SATA:
$ sudo rsync -arxP / / mnt / sata_drive /
5. Bạn sẽ thấy rằng tất cả các file đều được đồng bộ hóa từ gốc đến ổ đĩa. Điều này sẽ mất một thời gian. 6. Ngay sau khi quá trình hoàn thành, hãy chỉnh sửa uEnv.txt để thay đổi gốc đã sử dụng:
$ sudo nano /mnt/boot/uEnv.txt
7. Trong dòng cuối cùng, bạn sẽ đặt một tùy chọn cấu hình root =/dev/mmcblk0p2. Cần trang phía bên phải bằng cách nhấn phím mũi tên phải.
8. Sửa tùy chọn này tới root = / dev / sda1:

9. Thoát và lưu bản dự thảo bằng cách nhấn Ctrl + X, tiếp theo là Y và Enter.
10. Để xác định mọi thứ đã được ghi vào thẻ nhớ, hãy thực hiện đồng bộ hóa:
$ sync
11. Khởi động lại Banana Pi từ ổ đĩa ngoài:
$ sudo shutdown -r now
Bạn đã khởi động thành công Banana Pi từ đĩa ngoài
* Phương thức hoạt động:
Nhân Linux nằm trên phân vùng đầu tiên của thẻ nhớ (Tên file uImage). Khi cấp nguồn cho Banana Pi, bộ nạp khởi động (được gọi là UBoot) tải kernel từ thẻ nhớ. Kernel yêu cầu một số tham số để khởi động thành công. Các tham số và tùy chọn này được định cấu hình trong file uEnv.txt.
Khi ghi thẻ nhớ để chuẩn bị hệ điều hành Linux cho Banana Pi, image chứa hai phân vùng. Phân vùng đầu tiên bao gồm kernel, uEnv.txt và file script. bin. Phân vùng thứ hai là file hệ thống gốc. Rootfs chứa tất cả các chương trình, cấu hình, thư mục chính, v.v. của hệ thống Linux.
Việc đồng bộ hóa rootfs từ thẻ nhớ vào một phân vùng trên ổ đĩa ngoài bằng cách sử dụng công cụ đồng bộ hóa rsync. Công cụ rsync được sử dụng để đồng bộ hóa file qua mạng hoặc trên hai thư mục. Các tham số -a có nghĩa là lưu trữ (cấp quyền, liên kết tượng trưng, v.v.), -r đệ quy (đệ quy vào thư mục) và -x là để ngăn việc vượt qua ranh giới của file hệ thống. Tham số -P hiển thị tiến trình của mỗi lần đồng bộ hóa.
Sau đó, thay đổi gốc mong muốn từ rootfs của thẻ SD (đó là phân vùng thứ hai) thành phân vùng của ổ đĩa ngoài trong uEnv.txt.
Vì bộ nạp khởi động yêu cầu kernel và thông tin khác từ phân vùng đầu tiên của thẻ nhớ, nên không thể bỏ qua thẻ nhớ khi di chuyển rootfs sang ổ đĩa ngoài.
Để sử dụng lại thẻ nhớ dưới dạng root, cần mount lại thẻ nhớ đầu tiên và thay đổi tùy chọn root thành root = / dev / mmcblk0p2.
* Xem thêm
– Một hướng dẫn tuyệt vời nhưng đơn giản về cách sử dụng fdisk — Bài viết về Cách sử dụng Fdisk để quản lý phân vùng trên Linux tại http://www.howtogeek.com/106873/how-touse-fdisk-to-manage-partitions-on-linux/
– Trang hướng dẫn sử dụng rsync— phiên bản HTML của trang người dùng rsync tại https://download.samba.org/pub/rsync/rsync.html
Biên soạn: Thùy Phương
Để cập nhật tin tức công nghệ mới nhất và các sản phẩm của công ty AIoT JSC, vui lòng truy cập link: http://aiots.vn hoặc linhkienaiot.com