Cách nâng cấp FreeBSD từ Phiên bản 10.2 lên 10.3
FreeBSD không ngừng phát triển; group đang bổ sung các tính năng mới và vá các lỗ hổng bảo mật. Luôn cập nhật hệ điều hành server của bạn đảm bảo tính bảo mật và khả năng tương thích tốt hơn, đồng thời FreeBSD bao gồm công cụfreebsd-update
để giúp việc này trở nên dễ dàng. Trong hướng dẫn này, bạn sẽ nâng cấp server FreeBSD hiện có đang chạy FreeBSD 10.2-RELEASE lên 10.3.RELEASE-p4. Cảnh báo: Như với hầu hết mọi bản nâng cấp giữa các bản phát hành chính của hệ điều hành, quá trình này có rủi ro cố hữu về lỗi, mất dữ liệu hoặc cấu hình phần mềm bị hỏng. Nên backup toàn diện và thử nghiệm rộng rãi.
Để tránh những sự cố này, khi có thể, ta khuyên bạn nên chuyển sang server FreeBSD mới hơn là nâng cấp tại chỗ. Bạn có thể vẫn cần xem xét sự khác biệt về cấu hình phần mềm khi nâng cấp, nhưng hệ thống lõi có thể sẽ có độ ổn định cao hơn. Bạn có thể xem loạt bài của ta về cách di chuyển sang server Linux mới , điều này hầu hết sẽ áp dụng khi chuyển sang server FreeBSD mới.
Yêu cầu
Để làm theo hướng dẫn này, bạn cần :
- Server chạy FreeBSD 10.2.
- Một account user được cấu hình để chạy các lệnh với
sudo
. Ta sẽ sử dụng account freebsd mặc định được tạo tự động khi bạn tạo FreeBSD Server. Để tìm hiểu thêm về cách đăng nhập vào FreeBSD Server và cách quản lý cơ bản của nó, hãy xem loạt bài hướng dẫn Bắt đầu với FreeBSD .
Bước 1 - Tìm nạp và áp dụng các bản vá
Để nâng cấp hệ điều hành, trước tiên ta cần tìm nạp các gói và bản vá cho bản phát hành đích của ta . Đăng nhập vào server bằng account freebsd .
- ssh freebsd@your_server_ip
Sau đó, sử dụng lệnh freebsd-upgrade
để thu thập thông tin về việc nâng cấp hệ thống và xác định những gì cần thay đổi. Chạy lệnh sau:
- sudo freebsd-update upgrade -r 10.3-RELEASE
Ta sử dụng lựa chọn -r
để chỉ định version ta muốn nâng cấp lên, đó là 10.3-RELEASE
. Sau một thời gian ngắn, bạn sẽ thấy kết quả sau:
Outputsrc component not installed, skipped Looking up update.FreeBSD.org mirrors... 4 mirrors found. Fetching public key from update6.freebsd.org... done. Fetching metadata signature for 10.2-RELEASE from update6.freebsd.org... done. Fetching metadata index... done. Fetching 2 metadata files... done. Inspecting system... The following components of FreeBSD seem to be installed: kernel/generic world/base world/doc world/games world/lib32 The following components of FreeBSD do not seem to be installed: Does this look reasonable (y/n)? y
Điều này giúp bạn có cơ hội xem xét mọi vấn đề tiềm ẩn. Nhập y
và nhấn ENTER
để tiếp tục.
Lưu ý: Lưu ý hướng dẫn này sử dụng server FreeBSD 10.2 mới để hướng dẫn bạn qua tất cả các bước nâng cấp hệ thống cơ sở FreeBSD lên version 10.3-RELEASE-p4. Nếu bạn đã sửa đổi hoặc tùy chỉnh một số thành phần, hãy tạo bản backup trước khi tiếp tục và chấp nhận tất cả các quy trình được mô tả trong hướng dẫn này và tự chịu rủi ro.
Khi bạn đồng ý tiếp tục, quy trình sẽ áp dụng các bản cập nhật và bản vá. Bạn sẽ thấy kết quả sau:
OutputFetching metadata signature for 10.3-RELEASE from update6.freebsd.org... done. Fetching metadata index... done. Fetching 1 metadata patches. done. Applying metadata patches... done. Fetching 1 metadata files... done. Inspecting system... Fetching files from 10.2-RELEASE for merging... done. Preparing to download files... Fetching 10722 patches.....10....20....30....40....50....60....70....80....90 ....100....110....120....130....140....150....160....170....180....190....200 **. . .** ....10650....10660....10670....10680....10690....10700....10710....10720. done. Applying patches... done. Fetching 152 files... Attempting to automatically merge changes in files... done.
Tuy nhiên, quá trình này không thể tự động vá mọi thứ. Ta cần phải can thiệp thủ công.
Bước 2 - Giải quyết xung đột
Sau khi áp dụng các bản vá cho hệ điều hành, freebsd-update
sẽ hiển thị cho bạn hai thông báo cảnh báo và bạn cần giải quyết thủ công một số xung đột nhỏ trong hai file cấu hình khác nhau. Một là /etc/rc.subr
và một là /etc/ssh/sshd_config
.
Cảnh báo đầu tiên bạn thấy như sau:
outputThe following file could not be merged automatically: `/etc/rc.subr` Press Enter to edit this file in vi and resolve the conflicts manually...
Khi bạn nhấn Enter
, file /etc/rc.subr
sẽ mở ra trong editor vi
và bạn sẽ thấy văn bản sau:
# $NetBSD: rc.subr,v 1.67 2006/10/07 11:25:15 elad Exp $ <<<<<<< current version # $FreeBSD: releng/10.1/etc/rc.subr 273188 2014-10-16 22:00:24Z hrs $ ======= # $FreeBSD: releng/10.3/etc/rc.subr 292450 2015-12-18 19:58:34Z jilles $ >>>>>>> 10.3-RELEASE
Sửa đổi phần này bằng cách xóa các dòng liên quan đến version hiện tại, được đánh dấu màu đỏ ở trên. Mặc dù ta hiện đang chạy FreeBSD 10.2, file này tham chiếu 10.1 là “hiện tại”. Xóa những dòng đó để phần trông giống như ví dụ sau:
# $NetBSD: rc.subr,v 1.67 2006/10/07 11:25:15 elad Exp $ # $FreeBSD: releng/10.3/etc/rc.subr 292450 2015-12-18 19:58:34Z jilles $
Cảnh báo: DigitalOcean giữ cấu hình và dữ liệu tùy chỉnh của nó cho FreeBSD Server trong folder /etc/rc.digitalocean.d/
và nó được tham chiếu trong file /etc/rc.subr
. Vui lòng không thay đổi hoặc xóa các file hoặc cấu hình liên quan đến DigitalOcean. Các cấu hình và dữ liệu tùy chỉnh trong /etc/rc.digitalocean.d/
là những gì giữ cho Server hoạt động tốt, chạy ở trạng thái tốt và được tích hợp với API của DigitalOcean.
Lưu các thay đổi vào file và thoát khỏi editor .
Ngay sau khi đóng editor , bạn sẽ thấy một dòng báo cáo việc hợp nhất thành công file bạn vừa thay đổi. Sau đó, bạn sẽ thấy cảnh báo thứ hai cho biết rằng file cấu hình /etc/ssh/sshd_config
cần bạn chú ý:
Output/var/db/freebsd-update/merge/new//etc/rc.subr: 2087 lines, 47888 characters. The following file could not be merged automatically: `/etc/ssh/sshd_config` Press Enter to edit this file in vi and resolve the conflicts manually...
Giống như trước đây, khi bạn nhấn ENTER
bạn sẽ thấy một file văn bản mà bạn sẽ phải sửa đổi. Phần bạn cần thay đổi sẽ giống với file đầu tiên bạn đã chỉnh sửa.
<<<<<<< current version # $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $ # $FreeBSD: releng/10.1/crypto/openssh/sshd_config 264692 2014-04-20 12:46:18Z des $ ======= # $OpenBSD: sshd_config,v 1.98 2016/02/17 05:29:04 djm Exp $ # $FreeBSD: releng/10.3/crypto/openssh/sshd_config 296853 2016-03-14 13:05:13Z des $ >>>>>>> 10.3-RELEASE
, hãy sửa đổi phần này bằng cách xóa các dòng liên quan đến version hiện tại cho đến khi phần của file trông giống như sau:
# $OpenBSD: sshd_config,v 1.98 2016/02/17 05:29:04 djm Exp $ # $FreeBSD: releng/10.3/crypto/openssh/sshd_config 296853 2016-03-14 13:05:13Z des $
Lưu các thay đổi vào file và đóng editor .
Khi editor đóng, quá trình freebsd-update
sẽ hiển thị từng file bạn đã thay đổi và hỏi xem các thay đổi có hợp lý không. Trả lời y
cho cả hai câu hỏi để tiếp tục cài đặt.
Khi bạn đồng ý với các thay đổi, bạn sẽ thấy danh sách các file binary và file cấu hình sẽ được cập nhật. Danh sách này rất dài; nhấn SPACE
để cuộn xuống danh sách từng trang một. Hoặc, nếu bạn không muốn xem lại danh sách, hãy nhập q
để thoát. Đừng lo lắng; nhấn q
sẽ không hủy bỏ quá trình nâng cấp.
Danh sách trông như thế này:
OutputThe following files will be added as part of updating to 10.3-RELEASE-p5: /boot/kernel/ismt.ko /boot/kernel/ismt.ko.symbols /boot/kernel/linux64.ko /boot/kernel/linux64.ko.symbols /boot/kernel/linux_common.ko /boot/kernel/linux_common.ko.symbols /boot/kernel/mlx5.ko . . . The following files will be updated as part of updating to 10.3-RELEASE-p5: /.cshrc /.profile /COPYRIGHT /bin/[ /bin/cat /bin/chflags /bin/chio . . .
Khi bạn đã xem lại danh sách, bạn sẽ quay lại dấu nhắc terminal của bạn . Bạn đã sẵn sàng để thực hiện cài đặt.
Bước 3 - Cài đặt FreeBSD 10.3
Các bản cập nhật đã được download và các file cần thiết đã được hợp nhất hoặc cấu hình thành công, vì vậy để cài đặt các bản nâng cấp đã download , hãy sử dụng lệnh sau:
- sudo /usr/sbin/freebsd-update install
Đây là kết quả bạn sẽ thấy:
Outputsrc component not installed, skipped Installing updates... Kernel updates have been installed. Please reboot and run "/usr/sbin/freebsd-update install" again to finish installing updates.
Quá trình cài đặt sẽ nhắc bạn thực hiện khởi động lại, vì vậy hãy thực hiện lệnh này để khởi động lại máy của bạn:
- sudo reboot
Bạn sẽ bị ngắt kết nối khỏi phiên SSH của bạn và quá trình khởi động lại sẽ mất khoảng một phút. Sau khi máy của bạn trực tuyến trở lại, hãy đăng nhập lại và chuyển sang bước tiếp theo.
Lưu ý: Bạn phải khởi động lại server của bạn để tải nhân 10.3-RELEASE-p4 mới và các file binary đã vá của nó, chỉ được tải trong quá trình khởi động. Không chuyển sang các bước tiếp theo mà không khởi động lại.
Bước 4 - Hoàn tất quá trình cài đặt
Hãy kiểm tra version server của ta đảm bảo quá trình nâng cấp đã hoạt động và kernel mới được tải. Đầu tiên, đăng nhập lại vào server của bạn:
- ssh freebsd@your_server_ip
Sau khi đăng nhập, hãy chạy lệnh sau:
- uname -a
và bạn sẽ thấy kết quả sau cho biết rằng nâng cấp đã hoạt động:
OutputFreeBSD YOUR_HOSTNAME 10.3-RELEASE-p4 FreeBSD 10.3-RELEASE-p4 #0: Sat May 28 12:23:44 UTC 2016 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
Nhưng ta chưa hoàn thành việc nâng cấp. Ta cần cài đặt bất kỳ bản cập nhật cuối cùng nào có thể đã xảy ra kể từ khi bản phát hành được tạo, vì vậy hãy chạy freebsd-update
.
- sudo /usr/sbin/freebsd-update install
Bạn sẽ thấy kết quả sau:
Outputsrc component not installed, skipped Installing updates... Installing updates... install: ///var/db/etcupdate/current/etc/mtree/BSD.debug.dist: No such file or directory install: ///var/db/etcupdate/current/etc/periodic/daily/480.leapfile-ntpd: No such file or directory done.
Thật an toàn nếu bỏ qua hai cảnh báo ở cuối. Cả hai file sẽ được tạo hoặc cập nhật bởi quá trình này.
Khi nâng cấp FreeBSD, bạn cũng nên nâng cấp tất cả các gói đã cài đặt của bên thứ ba, đặc biệt nếu bạn đang thực hiện nâng cấp bản phát hành lớn. Để làm điều đó, hãy chạy lệnh sau:
- sudo pkg upgrade
Đầu ra sẽ như thế này:
OutputUpdating FreeBSD repository catalogue... FreeBSD repository is up-to-date. All repositories are up-to-date. . . . Processing entries: 100% FreeBSD repository update completed. 25089 packages processed. New version of pkg detected; it needs to be installed first. The following 1 package(s) will be affected (of 0 checked): Installed packages to be UPGRADED: pkg: 1.5.6 -> 1.7.2 The process will require 242 KiB more space. 2 MiB to be downloaded. Proceed with this action? [y/N]: y
Nhập y
và nhấn ENTER
để tiếp tục, và bạn sẽ thấy kết quả sau:
OutputFetching pkg-1.7.2.txz: 100% 2 MiB 1.3MB/s 00:02 Checking integrity... done (0 conflicting) [1/1] Upgrading pkg from 1.5.6 to 1.7.2... [1/1] Extracting pkg-1.7.2: 100% Updating FreeBSD repository catalogue... Repo "FreeBSD" upgrade schema 2011 to 2012: Add depends formula field Repo "FreeBSD" upgrade schema 2012 to 2013: Add vital field FreeBSD repository is up-to-date. All repositories are up-to-date. Checking for upgrades (24 candidates): 100% Processing candidates (24 candidates): 100% The following 24 package(s) will be affected (of 0 checked): Installed packages to be UPGRADED: xproto: 7.0.27 -> 7.0.28 sudo: 1.8.13 -> 1.8.16_1 rsync: 3.1.1_3 -> 3.1.2_1 python27: 2.7.9_1 -> 2.7.11_2 py27-setuptools27: 17.0 -> 20.0 py27-pip: 7.0.3 -> 8.0.2 perl5: 5.20.2_5 -> 5.20.3_12 pcre: 8.37_4 -> 8.38_1 libxml2: 2.9.2_3 -> 2.9.3 libxcb: 1.11_1 -> 1.11.1 libnet: 1.1.6_3,1 -> 1.1.6_4,1 libiconv: 1.14_8 -> 1.14_9 libX11: 1.6.2_3,1 -> 1.6.3,1 kbproto: 1.0.6 -> 1.0.7 indexinfo: 0.2.3 -> 0.2.4 gobject-introspection: 1.42.0 -> 1.46.0 glib: 2.42.2 -> 2.46.2 gettext-runtime: 0.19.4 -> 0.19.7 expat: 2.1.0_3 -> 2.1.1_1 dbus: 1.8.16 -> 1.8.20 curl: 7.43.0_2 -> 7.48.0_1 ca_root_nss: 3.19.3 -> 3.22.2 avahi-app: 0.6.31_3 -> 0.6.31_5 Installed packages to be REINSTALLED: dbus-glib-0.104 (option added: DOCS) The process will require 5 MiB more space. 39 MiB to be downloaded. Proceed with this action? [y/N]: y
, nhập y
, sau đó nhấn ENTER
để tiếp tục.
Các gói sẽ nâng cấp, nhưng đảm bảo user của bạn có quyền truy cập vào các version mới nhất, hãy chạy lệnh rehash
:
- rehash
Như vậy, quá trình nâng cấp đã hoàn tất. Nhưng nếu xảy ra sự cố thì sao?
Bước 5 - Quay lại cài đặt không thành công (Tùy chọn)
Toàn bộ quá trình nâng cấp này sẽ diễn ra suôn sẻ, nhưng nếu có sự cố xảy ra với bạn trong quá trình nâng cấp, bạn có thể khôi phục các gói được cài đặt gần đây bằng lệnh sau:
- sudo freebsd-update rollback
Điều này sẽ bắt đầu quá trình khôi phục, đưa bạn trở lại vị trí cũ. Bạn cũng có thể khôi phục bản backup mới nhất mà bạn đã thực hiện trước khi bắt đầu quá trình.
Kết luận
Nâng cấp hệ điều hành lên version mới hơn và áp dụng các bản vá bảo mật kịp thời là những khía cạnh quan trọng của việc quản trị hệ thống đang diễn ra. Lệnh freebsd-update
giúp dễ dàng thực hiện cả hai tác vụ đó. Khi bạn đã quen với quy trình này, bạn có thể tự mình thực hiện các nâng cấp trong tương lai.
Để tìm hiểu thêm về cách nâng cấp FreeBSD, bạn có thể đọc Giới thiệu về Bảo trì FreeBSD Cơ bản hoặc xem lại chương tương ứng tại Sổ tay FreeBSD .
Các tin liên quan