Mục lục
aptitude
và/hay
apt
apt
danh sách các gói tự
động cài đặt của aptitude
Đang đợi hệ thống tập tin
gốc
Trước khi nâng cấp, khuyên người dùng cũng đọc thông tin trong Chương 5, Vấn đề lenny cần ghi nhớ. Chương đó diễn tả các vấn đề có thể gặp mà không phải liên quan trực tiếp đến quá trình nâng cấp, nhưng vẫn còn có thể cần biết trước khi bắt đầu.
Trước khi nâng cấp hệ thống, rất khuyên người dùng tạo một bản sao lưu hoàn toàn, hoặc ít nhất sao lưu bất kỳ dữ liệu hay thông tin cấu hình không nên mất. Các công cụ và quá trình nâng cấp vẫn hơi tin cậy, nhưng một sự thất bại phần cứng ở giữa việc nâng cấp có thể gây ra một hệ thống rất bị hại.
Dữ liệu chính nên sao lưu là nội dung của thư mục /etc
,
/var/lib/dpkg
,
/var/lib/aptitude/pkgstates
và kết xuất của câu lệnh
dpkg --get-selections "*"
(hai dấu nháy kép vẫn đáng kể).
Quá trình nâng cấp chính nó không sửa đổi gì trong thư mục
/home
(thư mục chính của mỗi người dùng). Tuy nhiên,
một số ứng dụng nào đó (v.d. thuộc về bộ ứng dụng Mozilla, và môi trường
GNOME and KDE) được biết là ghi đè lên thiết lập người dùng đã tồn tại bằng
giá trị mặc định mới khi một phiên bản mới của ứng dụng được khởi chạy đầu
tiên bởi một người dùng. Để phòng ngừa, khuyên người dùng sao lưu các tập
tin và thư mục bị ẩn (“tập tin chấm”) trong thư mục chính của
mỗi người dùng. Bản sao lưu này có thể giúp phục hồi hoặc tạo lại thiết lập
cũ. Quản trị cũng có thể muốn cho các người dùng biết về trường hợp này.
Mỗi thao tác cài đặt gói phải được chạy với quyền siêu người dùng: có nên
đăng nhập dưới root
(người chủ) hoặc sử dụng lệnh
su hay sudo để lấy được quyền truy cập
cần thiết.
Việc nâng cấp có một số điều kiện tiên quyết: người dùng nên kiểm tra trước khi thật thực hiện tiến trình nâng cấp.
Phiên bản lenny của glibc
không hoạt động được với hạt nhân cũ hơn 2.6.8
trên bất
cứ kiến trúc nào, và một số kiến trúc nào đó có nhiều nhu cầu hơn. Rất
khuyên quản trị nâng cấp lên và thử một hạt nhân etch phiên bản
2.6.18
hay 2.6.24
, hoặc một hạt nhân
riêng ít nhất phiên bản 2.6.18
trước khi khởi chạy tiến
trình nâng cấp.
Khuyên quản trị thông báo trước cho mọi người dùng biết về bất kỳ quá trình nâng cấp dự định, dù người dùng đang truy cập đến hệ thống thông qua một kết nối ssh nên thấy ít trong khi nâng cấp, và nên có thể tiếp tục làm việc.
Muốn thực hiện thêm bước phòng ngừa thì sao lưu hoặc tháo gắn kết phân vùng
/home
) trước khi nâng cấp.
Nâng cấp lên lenny thì rất có thể là cũng cần phải nâng cấp hạt nhân, do đó cần phải khởi động lại hệ thống (bình thường sau khi nâng cấp xong).
Do rất nhiều thay đổi trong hạt nhân (so etch với lenny) đối với trình điều khiển, phát hiện phần cứng và đặt tên và sắp đặt các tập tin thiết bị, thật sự rủi ro là người dùng có thể gặp khó khăn trong việc khởi động lại hệ thống sau khi nâng cấp. Rất nhiều vấn đề có thể gặp đã được diễn tả trong chương này, và những chương kế tiếp của Ghi chú Phát hành này.
Vì lý do đó hợp lý là người dùng hay quản trị đảm bảo có thể phục hồi nếu hệ thống không khởi động lại được hoặc, đối với hệ thống quản lý từ xa, không chạy mạng được.
Nếu quản trị nâng cấp từ xa qua một liên kết ssh, rất khuyên quản trị cũng thực hiện những bước phòng ngừa cần thiết để có khả năng truy cập đến máy phục vụ qua một thiết bị nối tiếp từ xa. Vẫn có thể là, sau khi nâng cấp hạt nhân và khởi động lại hệ thống, một số thiết bị sẽ bị thay tên (như diễn tả trong Phần 4.6.2, “Số thứ tự thiết bị khác”) thì quản trị cần phải sửa chữa cấu hình hệ thống thông qua một bàn giao tiếp cục bộ. Hơn nữa, nếu hệ thống bị tình nguyện cờ khởi động lại ở giữa quá trình nâng cấp, quản trị có thể cần phải phục hồi dùng một bàn giao tiếp cục bộ.
Cái hiển nhiện nhất để thử đầu tiên để khởi động lại bằng hạt nhân cũ. Tuy nhiên, vì các lý do khác nhau diễn tả ở nơi khác của tài liệu này, sự thử này không phải đảm bảo thành công.
Nếu nó không thành công, quản trị cần một phương pháp khác để khởi động hệ
thống để truy cập và sửa chữa nó. Một lựa chọn là sử dụng một ảnh cứu đặc
biệt hay một đĩa CD Linux Động. Sau khi khởi động từ đó, quản trị nên có khả
năng gắn kết hệ thống tập tin gốc và chroot
vào nó để xem
xét và sửa chữa vấn đề.
Một lựa chọn khác có thể khuyến khích là sử dụng chế độ cứu của Bộ Cài Đặt Debian lenny. Lợi ích khi sử dụng bộ cài đặt là người dùng có thể chọn trong nhiều phương pháp cài đặt khác nhau một phương pháp riêng lẻ thích hợp nhất với trường hợp đó. Để tìm thêm thông tin, xem phần “Phục hồi một hệ thống bị hỏng” trong Chương 8 của Sổ tay Cài đặt (dịch sang tiếng Việt) vàHỏi Đáp Cài đặt Debian.
Công cụ initramfs-tools
bao gồm một
trình bao gỡ lỗi[2] trong mỗi initrd nó tạo. Nếu (ví dụ) initrd không thể gắn kết hệ
thống tập tin gốc, nó sẽ mở trình bao gỡ lỗi này mà có sẵn các lệnh cơ bản
để tìm vết của vấn đề và (có thể) sửa chữa nó.
Các cái cơ bản cần kiểm tra: có những tập tin thiết bị đúng trong thư mục
/dev
; những mô-đun nào được nạp (cat
/proc/modules
); kết xuất của lệnh dmesg về lỗi
nạp trình điều khiển. Kết xuất của dmesg cũng hiển thị
tập tin thiết bị nào được gán cho đĩa nào; quản trị cũng nên so thông tin đó
với kết xuất của câu lệnh echo $ROOT
để kiểm tra hệ thống
tập tin gốc nằm trên thiết bị mong đợi.
Nếu quản trị có phải sửa chữa được vấn đề, việc gõ lệnh thoát
exit
sẽ thoát khỏi trình bao gỡ lỗi và tiếp tục lại tiến
trình khởi động ở điểm thời nó thất bại trước. Tất nhiên, quản trị cũng cần
phải sửa chữa vấn đề cơ sở và tạo lại initrd để mà khởi động được về sau.
Việc nâng cấp bản phân phối nên được làm hoặc cục bộ từ một bàn giao tiếp ảo chế độ văn bản (hay một thiết bị cuối nối tiếp được kết nối trực tiếp), hoặc từ xa thông qua một liên kết ssh.
Để tăng hệ số an toàn khi nâng cấp từ xa, khuyên quản trị chạy tiến trình nâng cấp trên bàn giao tiếp ảo được chương trình screen cung cấp, mà hiệu lực chức năng tái kết nối an toàn và đảm bảo tiến trình nâng cấp không phải bị gián đoạn thậm chí nếu quá trình kết nối từ xa không thành công.
![]() | Quan trọng |
---|---|
Không nên nâng cấp dùng telnet, rlogin, rsh, hay một buổi hợp đăng nhập X được quản lý bởi xdm, gdm, kdm v.v. trên máy đang nâng cấp. Đó là vì mỗi dịch vụ như vậy sẽ bị chấm dứt trong quá trình nâng cấp, mà có thể gây ra một hệ thống không thể tới được mà chưa được nâng cấp hoàn toàn. |
Người dùng có sử dụng bộ nạp khởi động LILO ghi chú rằng
thiết lập mặc định về công cụ initramfs-tools
giờ tạo một initramfs quá lớn để
LILO nạp được. Người dùng như vậy nên chuyển đổi sang
grub
, hoặc tự chỉnh sửa tập tin
/etc/initramfs-tools/initramfs.conf
, sửa đổi dòng:
MODULES=most
thành
MODULES=dep
Tuy nhiên, ghi chú rằng thay đổi này sẽ gây ra initramfs-tools
cài đặt vào initramfs chỉ những
mô-đun cần thiết cho phần cứng riêng đó ; như thế, nếu quản trị muốn tạo vật
chứa khởi động sẽ hoạt động được trên nhiều phần cứng hơn chỉ máy đó, có nên
để lại dòng là
MODULES=most
và đảm bảo sẽ không dùng LILO.
Quá trình nâng cấp diễn tả trong chương này đã được thiết kế cho việc nâng cấp từ hệ thống etch « thuần »: hệ thống không chứa gói thuộc nhóm ba. Để nâng cấp một cách tin cậy nhất, quản trị cũng có thể gỡ bỏ các gói nhóm ba khỏi hệ thống trước khi bắt đầu nâng cấp.
Thủ tục này cũng giả sử hệ thống đã được cập nhật lên bản phát hành điểm mới nhất của etch. Không hay chưa chắc thì quản trị nên theo những hướng dẫn trong Phần A.1, “Nâng cấp hệ thống etch”.
Trong một số trường hợp nào đó, sử dụng apt-get thay cho aptitude để cài đặt gói có thể làm cho aptitude thấy một gói nào đó là “chưa dùng” và định thời nó bị gỡ bỏ. Thông thường, quản trị nên kiểm tra hệ thống vẫn “sạch” và được cập nhật hoàn toàn trước khi tiếp tục nâng cấp.
Do đó, quản trị nên kiểm tra có hành vi bị hoãn trong bộ quản lý gói
aptitude. Vẫn có một gói định thời gỡ bỏ hay cập nhật
trong bộ quản lý gói thì nó có thể ảnh hưởng âm đến quá trình nâng cấp. Ghi
chú rằng chỉ có thể sửa chữa trường hợp này nếu tập tin liệt kê các nguồn
sources.list
vẫn còn chỉ tới
etch;, không phải tới bản ổn
định (stable) hay lenny; xem Phần A.2, “Kiểm tra danh sách nguồn”.
Để thực hiện thủ tục xem lại này, hãy khởi chạy aptitude trong “chế độ trực quan” và bấm phím g (“Đi”). Nếu nó hiển thị hành vi nào, quản trị nên xem lại và sửa chữa hoặc thực hiện chúng. Không có hành vi đề xuất thì chương trình hiển thị một thông điệp: “Không có gói nào được định cài đặt, gỡ bỏ hoặc nâng cấp”.
Nếu người dùng đã cấu hình APT để cài đặt một số gói nào đó từ một bản phát
hành khác với bản ổn định (stable), v.d. từ bản thử (testing), thì có lẽ
người dùng cần phải sửa đổi cấu hình ghim phiên bản trong APT (cất giữ trong
/etc/apt/preferences
) để cho phép nâng cấp gói lên
phiên bản trong bản phát hành ổn định mới. Có thể tìm thêm thông tin về chức
năng ghim phiên bản APT trong apt_preferences(5).
Bất chấp phương pháp dùng để nâng cấp, khuyên người dùng trước tiên kiểm tra trạng thái về tất cả các gói, và thẩm tra mọi gói đều có tình trạng có thể nâng cấp. Theo đây có câu lệnh sẽ hiển thị gói nào có trạng thái « Nửa cài đặt » hay « Lỗi cấu hình » hay bất cứ trạng thái lỗi nào.
# dpkg --audit
Cũng có thể kiểm tra trạng thái về tất cả các gói trên hệ thống dùng dselect, aptitude, hay câu lệnh như
# dpkg -l | pager
hay
# dpkg --get-selections "*" > ~/curr-pkgs.txt
Có nên gỡ bỏ bất kỳ tình trạng giữ lại trước khi nâng cấp. Nếu gói nào chủ yếu để nâng cấp vẫn còn bị giữ lại, thì việc nâng cấp sẽ không thành công.
Ghi chú rằng aptitude sử dụng một phương pháp khác để đăng ký các gói bị giữ lại, so với apt-get và dselect. Người dùng có thể tìm những gói bị giữ lại trong aptitude dùng câu lệnh
# aptitude search "~ahold" | grep "^.h"
Muốn kiểm tra những gói nào bị giữ lại trong apt-get thì dùng câu lệnh
# dpkg --get-selections | grep hold
Nếu người dùng đã sửa đổi và biên dịch lại gói nào một cách cục bộ, vẫn không thay đổi tên nó hoặc đặt thời điểm vào phiên bản, người dùng phải đặt tình trạng giữ lại cho nó, để ngăn cản nó được nâng cấp.
Trong aptitude, tình trạng gói “giữ lại” có thể được thay đổi dùng câu lệnh
# aptitude hold tên_gói
Thay thế từ hold
(giữ lại) bằng unhold
(bỏ giữ) để bỏ đặt tình trạng “giữ lại”.
Vẫn có gì cần sửa chữa thì người dùng nên kiểm tra tập tin
sources.list
vẫn còn tham chiếu đến etch
như diễn tả trong Phần A.2, “Kiểm tra danh sách nguồn”.
Nếu tập tin /etc/apt/sources.list
chứa phần
proposed-updates
, người dùng nên gỡ bỏ tập tin này trước
khi thử nâng cấp hệ thống. Đây là một bước phòng ngừa để giảm sự có thể bị
xung đột.
Nếu hệ thống chứa gói nào khác Debian, ghi chú rằng các gói như vậy có thể
bị gỡ bỏ trong quá trình nâng cấp, do quan hệ phụ thuộc bị xung đột. Nếu
những gói này đã được cài đặt bằng cách thêm một kho gói bổ sung vào tập tin
/etc/apt/sources.list
, người dùng nên kiểm tra nếu kho
gói đó cũng cung cấp các gói được biên dịch cho lenny, và sửa đổi
dòng nguồn một cách tương ứng, cùng lúc với sửa đổi các dòng nguồn về gói
Debian.
Hệ thống etch có lẽ cũng chứa phiên bản “mới” chuyển ngược không chính thức của gói có phải thuộc về Debian. Gói như vậy rất có thể gây ra vấn đề trong quá trình nâng cấp, vì kết quả là hai tập tin bị xung đột nhau[3]. Phần 4.5.8, “Vấn đề có thể gặp trong khi nâng cấp” có vài thông tin về cách giải quyết hai tập tin bị xung đột (nếu trường hợp này xảy ra).
backports.org
là một kho gói bán chính thức duy trì bởi
các nhà phát triển Debian GNU/Linux, mà cung cấp các gói mới cho bản phát hành ổn
định (stable), dựa vào xây dựng lại các gói từ kho gói “thử”
(testing).
Kho backports.org
chứa chính các gói từ bản
“thử” (testing) mà vẫn có số thứ tự phiên bản bị giảm, để bảo
vệ đường dẫn nâng cấp từ bản chuyển ngược etch lên
lenny. Tuy nhiên, có chỉ vài gói chuyển ngược được tạo từ bản
“bất định” (unstable): các bản cập nhật bảo mật và những ngoại
lệ Firefox, hạt nhân Linux, OpenOffice.org và X.Org.
If you do not use one of these exceptions, you can safely upgrade to
lenny. If you use one of these exceptions, set the
Pin-Priority
(see apt_preferences(5)) temporarily to 1001
for all packages
from lenny, and you should be able to do a safe dist-upgrade too.
Để ngăn cản aptitude gỡ bỏ một số gói nào đó mà được lấy do quan hệ phụ thuộc, người dùng cần phải tự bỏ dấu tự động khỏi mỗi gói. Trong bản cài đặt môi trường đồ họa, trường hợp này bao gồm OpenOffice và Vim:
# aptitude unmarkauto openoffice.org vim
Và các ảnh hạt nhân 2.6 được cài đặt dùng một siêu gói hạt nhân:
# aptitude unmarkauto $(dpkg-query -W 'linux-image-2.6.*' | cut -f1)
![]() | Ghi chú |
---|---|
Cũng có thể xem lại những gói đánh dấu tự động trong aptitude bằng cách chạy câu lệnh: # aptitude search '~i~M' |
Trước khi khởi chạy tiến trình nâng cấp, người dùng cần phải thiết lập tập
tin cấu hình apt
về danh sách các
gói: /etc/apt/sources.list
.
apt
sẽ xem xét mọi gói được tìm
thông qua một dòng “deb
”, và cài đặt gói có
số thứ tự phiên bản cao nhất, cũng gán quyền ưu tiên cho dòng đầu của tập
tin (do đó khi có nhiều địa chỉ máy nhân ban, bình thường đặt tên một đĩa
cứng cục bộ, sau đó các đĩa CD-ROM, và các máy nhân bản
HTTP/FTP).
![]() | Mẹo |
---|---|
Có lẽ người dùng cần thêm một ngoại lệ kiểm tra GPG cho
các đĩaDVD và CD-ROM. Thêm vào tập tin
cấu hình APT::Authentication::TrustCDROM "true"; Tuy nhiên, dòng này không phù hợp với tập tin ảnh đĩa DVD/CD-ROM. |
Mỗi bản phát hành có một tên mã (v.d. etch
,
lenny
) và một tên trạng thái (tức là
oldstable
[ổn định cũ], stable
[ổn
định], testing
[thử], unstable
[bất
định]). Tham chiếu đến một bản phát hành theo tên mã có lợi ích là dễ phân
biệt các bản phát hành khác nhau. Người dùng có thể theo dõi các thông báo
phát hành tìm tên mã mới và tự cập nhật hệ thống. Tuy nhiên, người dùng phân
biệt theo tên trạng thái sẽ thấy rất nhiều bản cập nhật gói ngay khi bản mới
được phát hành.
Cấu hình mặc định được thiết lập để cài đặt từ các máy phục vụ Debian chính,
nhưng người dùng cũng có thể sửa đổi tập tin
/etc/apt/sources.list
để sử dụng máy nhân bản khác, tốt
hơn một máy nhân bản gần chỗ người dùng trên mạng.
Có thể tìm các địa chỉ máy nhân bản HTTP/FTP Debian ở http://www.debian.org/distrib/ftplist (xem phần “list of Debian mirrors” [danh sách các máy nhân bản Debian]). Máy nhân bản HTTP thường chạy nhanh hơn máy nhân bản FTP.
Ví dụ, giả sử máy nhân bản Debian gần nhất là
http://mirrors.kernel.org
. Khi xem xét nó dùng trình duyệt
Web hay một chương trình FTP, người dùng sẽ thấy những thư mục chính được
sắp đặt như thế:
http://mirrors.kernel.org/debian/dists/lenny/main/binary-i386/... http://mirrors.kernel.org/debian/dists/lenny/contrib/binary-i386/...
Để sử dụng máy nhân bản này với apt
,
người dùng nên thêm vào tập tin sources.list
dòng này:
deb http://mirrors.kernel.org/debian lenny main contrib
Ghi chú rằng đoạn « dists
» được thêm ngầm, và các đối số
đằng sau tên bản phát hành được dùng để mở rộng đường dẫn ra nhiều thư mục.
Sau khi thêm các nguồn mới, hãy tắt mỗi dòng
“deb
” đã tồn tại trong
sources.list
bằng cách ghi một dấu thăng
(#
) vào trước.
Thay vào sử dụng máy nhân bản HTTP/FTP, người dùng cũng có thể sửa đổi tập
tin /etc/apt/sources.list
để sử dụng kho nhân bản trên
một đĩa cục bộ (có thể gắn kết thông qua NFS).
Ví dụ, kho nhân bản gói có thể nằm dưới
/var/ftp/debian/
, với các thư mục chính:
/var/ftp/debian/dists/lenny/main/binary-i386/... /var/ftp/debian/dists/lenny/contrib/binary-i386/...
Để sử dụng kho cục bộ này với apt
,
hãy thêm vào tập tin sources.list
dòng này:
deb file:/var/ftp/debian lenny main contrib
Ghi chú rằng đoạn « dists
» được thêm ngầm, và các đối số
đằng sau tên bản phát hành được dùng để mở rộng đường dẫn ra nhiều thư mục.
Sau khi thêm các nguồn mới, hãy tắt mỗi dòng
“deb
” đã tồn tại trong
sources.list
bằng cách ghi một dấu thăng
(#
) vào trước.
Nếu người dùng chỉ muốn sử dụng các đĩa CD, hãy ghi chú
tắt (đặt #
vào trước) những dòng
“deb
” đã tồn tại trong tập tin
/etc/apt/sources.list
.
Kiểm tra tập tin /etc/fstab
chứa một dòng hiệu lực gắn
kết ổ đĩa CD ở điểm lắp /cdrom
(điểm lắp
/cdrom
chính xác cần thiết cho
apt-cdrom). Ví dụ, nếu /dev/hdc
là ổ
đĩa CD, /etc/fstab
nên chứa một dòng như thế:
/dev/hdc /cdrom auto defaults,noauto,ro 0 0
Ghi chú rằng không cho phép khoảng cách nằm giữa các từ
defaults,noauto,ro
trong trường thứ tư.
Để thẩm tra chức năng, nạp một đĩa CD và thử chạy:
# mount /cdrom # câu lệnh này gắn kết đĩa CD tới điểm lắp # ls -alF /cdrom # câu lệnh này nên hiển thị thư mục gốc của đĩa CD # umount /cdrom # câu lệnh này sẽ tháo gắn kết đĩa CD
Sau đó thì chạy:
# apt-cdrom add
cho mỗi đĩa CD nhị phân Debian, để thêm dữ liệu về mỗi đĩa CD vào co sở dữ liệu của APT.
Phương pháp khuyến khích để nâng cấp từ một bản phát hành Debian GNU/Linux trước là sử dụng công cụ quản lý gói aptitude. Chương trình này cài đặt gói một cách an toàn chạy trực tiếp apt-get.
Đừng quên gắn kết tất cả các phân vùng cần thiết (đặc biệt phiên bản gốc và
/usr
) với quyền đọc-ghi, dùng một câu lệnh như :
# mount -o remount,rw /điểm_lắp
Sau đó thì người dùng nên kiểm tra những mục nhập nguồn APT (trong
/etc/apt/sources.list
) tham chiếu đến hoặc
“lenny
” hoặc
“stable
”. Không nên có nguồn nào vẫn còn chỉ
tới etch.
![]() | Ghi chú |
---|---|
Dòng nguồn cho một đĩa CD thường tham chiếu đến
“ |
Rất khuyên người dùng sử dụng chương trình /usr/bin/script để thu một bản sao của phiên chạy nâng cấp. Như thế, nếu một vấn đề xảy ra, có một bản sao mọi hành vi, và nếu cần, người dùng có thể cung cấp thông tin chính xác trong một báo cáo lỗi hay báo cáo nâng cấp. Để bắt đầu thu, hãy gõ câu lệnh:
# script -t 2>~/upgrade-lenny.time -a ~/upgrade-lenny.script
hay tương tự. Đừng để bản sao vào một thư mục tạm thời như
/tmp
hay /var/tmp
(các tập tin
trong hai thư mục này có thể bị xoá trong khi nâng cấp hoặc khi nào khởi
động lại).
Bản sao này cũng cho phép xem lại thông tin đã cuộn qua màn hình. Chỉ chuyển
đổi sang VT2 (dùng tổ hợp phím Alt+F2) và, sau
khi đăng nhập, dùng câu lệnh less -R
~root/upgrade-lenny.script
để xem tập tin đó.
Sau khi nâng cấp xong, người dùng có thể dừng chạy script
bằng cách gõ lệnh thoát exit
vào dấu nhắc.
Có đặt cờ -t trong câu lệnh script nói trên thì người dùng cũng có thể sử dụng chương trìnhscriptreplay để phát lại toàn bộ phiên chạy.
# scriptreplay ~/upgrade-lenny.time ~/upgrade-lenny.script
Trước tiên nên lấy danh sách các gói sẵn sàng cho bản phát hành mới. Việc này được làm bằng cách chạy câu lệnh cập nhật:
# aptitude update
Việc chạy câu lệnh này lần đầu tiên cập nhật các nguồn mới sẽ in ra một số cảnh báo liên quan đến tính sẵn sàng của các nguồn. Những cảnh báo này vô hại và chỉ xuất hiện một lần.
Trước khi nâng cấp hệ thống, người dùng cần phải kiểm tra có đủ sức chứa còn
lại trên đĩa cứng, đặc biệt khi khởi chạy tiến trình nâng cấp hệ thống đầy
đủ diễn tả trong Phần 4.5.7, “Nâng cấp phần hệ thống còn lại”. Trước tiên, bất cứ gói
nào cần cài đặt được lấy từ mạng và cất giữ trong thư mục
/var/cache/apt/archives
(cũng trong thư mục con
partial/
trong khi tải về), do đó người dùng cần phải
kiểm tra có đủ sức chứa còn lại trên phân vùng đó (phân vùng hệ thống tập
tin chứa /var
) để tải về tạm thời tất cả các gói cần
cài đặt vào hệ thống. Sau khi tải về, rất có thể là cần thêm sức chứa trống
trong các phiên bản hệ thống tập tin khác để cài đặt cả hai các gói đã nâng
cấp (mà có thể chứa các tập tin nhị phân lớn hơn hay dữ liệu bổ sung) và các
gói mới được lấy cho quá trình nâng cấp. Nếu hệ thống không có đủ sức chứa
trống, kết quả có thể là một quá trình nâng cấp chưa xong, một trường hợp có
thể khó phục hồi.
Cả hai aptitude và apt
sẽ hiển thị thông tin chi tiết về sức chứa
trống trên đĩa mà cần thiết để cài đặt. Trước khi khởi chạy tiến trình nâng
cấp, người dùng có thể thấy sự ước lượng này bằng cách chạy câu lệnh:
# aptitude -y -s -f --with-recommends dist-upgrade [ ... ] XXX gói được nâng cấp, XXX mới được cài đặt, XXX cần gỡ bỏ và XXX không được nâng cấp. Cần phải lấy xx.xMB/yyyMB kho. Sau khi giải nén AAAMB sẽ được chiếm. Nên tải về / cài đặt/ gỡ bỏ các gói.
![]() | Ghi chú |
---|---|
Việc chạy câu lệnh này ở đầu của quá trình nâng cấp cũng có thể xuất một lỗi, vì lý do diễn tả trong các phần kế tiếp. Trong trường hợp đó, người dùng cần phải đợi đến khi hoàn tất quá trình nâng cấp hệ thống tối thiểu (xem Phần 4.5.6, “Nâng cấp hệ thống tối thiểu”) và hoàn tất nâng cấp hạt nhân trước khi chạy lại câu lệnh này để ước lượng sức chứa còn trống trên đĩa. |
Không có đủ sức chứa để nâng cấp thì trước tiên người dùng phải giải phóng thêm sức chứa. Ví dụ :
Gỡ bỏ các gói được tải về trước đây để cài đặt (trong thư mục
/var/cache/apt/archives
). Làm sạch vùng nhớ tạm gói
bằng cách chạy câu lệnh apt-get clean hay
aptitude clean để gỡ bỏ tất cả các tập tin gói đã tải về
trước.
Gỡ bỏ các gọi bị quên. Nếu người dùng đã cài đặt gói popularity-contest
, cũng có thể sử dụng
popcon-largest-unused để liệt kê những gói không dùng mà
chiếm sức chứa nhiều nhất. Cũng có thể sử dụng deborphan
hay debfoster để tìm các gói quá cũ (xem Phần 4.10, “Gói quá cũ” ). Hoặc người dùng có thể khởi chạy
aptitude trong “chế độ trực quan” và tìm các
gói quá cũ dưới tiêu đề “Gói cũ và tạo cục bộ”.
Gỡ bỏ các gói chiếm quá nhiều sức chứa mà hiện thời không phải cần thiết
(lúc nào cũng có thể phục hồi sau khi nâng cấp). Người dùng có thể liệt kê
những gói chiếm nhiều sức chứa nhất trên đĩa, dùng dpigs
(sẵn sàng trong gói debian-goodies
)
hay wajig (chạy câu lệnh wajig size
).
You can list packages that take up most of the disk space with aptitude
. Start aptitude
into “visual mode”, select
→ (this menu entry is available only after
etch version), press l and enter ~i
,
press S and enter ~installsize
, then it
will give you nice list to work with. Doing this after upgrading
aptitude
should give you access to
this new feature.
Gỡ bỏ khỏi hệ thống các bản dịch và tập tin địa hoá mà không cần
thiết. Người dùng có thể cài đặt gói localepurge
và cấu hình nó để giữ trong hệ thống
chỉ một số miền địa phương đã chọn (v.d. tiếng Việt, tiếng Anh và tiếng
Nga). Thủ tục này sẽ giảm sức chứa trên đĩa được chiếm ở
/usr/share/locale
.
Tạm thời di chuyển sang một hệ thống khác, hoặc gỡ bỏ hẳn, các bản ghi hệ
thống nằm dưới /var/log/
.
Dùng một thư mục /var/cache/apt/archives
tạm thời: có
thể đặt một thư mục nhớ tạm mà tạm thời, từ một hệ thống khác (vật chứa
USB, đĩa cứng tạm thời, hệ thống đang được dùng v.v.).
![]() | Ghi chú |
---|---|
Không nên dùng một sự gắn kết NFS vì kết nối qua mạng có thể bị gián đoạn trong quá trình nâng cấp. |
Ví dụ, nếu có một ổ đĩa USB được gắn kết đến
/media/usbkey
:
gỡ bỏ các gói đã tải về trước đây để cài đặt:
# apt-get clean
sao chép thư mục /var/cache/apt/archives
sang vật chứa
USB:
# cp -ax /var/cache/apt/archives /media/usbkey/
gắn kết thư mục nhớ tạm vẫn tạm thời đến thư mục hiện thời:
# mount --bind /media/usbkey/archives /var/cache/apt/archives
sau khi nâng cấp thì phục hồi thư mục
/var/cache/apt/archives
gốc:
# umount /media/usbkey/archives
gỡ bỏ /media/usbkey/archives
còn lại.
Người dùng có thể tạo thư mục nhớ tạm vẫn tạm thời trên hệ thống tập tin nào được gắn kết trên hệ thống.
Ghi chú rằng để gỡ bỏ gói một cách an toàn, khuyên người dùng chuyển đổi tập
tinsources.list
về etch như diễn tả trong
Phần A.2, “Kiểm tra danh sách nguồn”.
Vài báo cáo lỗi đã chứng minh rằng những phiên bản aptitude
và apt
trong etch thường không thể nâng
cấp được lên lenny. Trong lenny, apt
quản lý khá hơn các dãy gói phức tạp vẫn cần
thiết cấu hình lập tức, và aptitude
khéo hơn khi giải quyết quan hệ phụ thuộc. Hai tính năng này chủ yếu trong
quá trình nâng cấp dist-upgrade lên lenny, thì cần phải nâng cấp hai
gói đó trước khi nâng cấp gì khác. Đối với apt
, hãy chạy câu lệnh:
# apt-get install apt
và đối với aptitude
(nếu cài đặt),
chạy câu lệnh:
# aptitude install aptitude
Bước này sẽ tự động nâng cấp hai gói libc6
và locales
, và gọi các thư viện hỗ trợ SELinux
(libselinux1
). Tại thời điểm này,
một số dịch vụ hệ thống đang chạy sẽ được khởi chạy lại, bao gồm
xdm, gdm và
kdm. Kết quả là phiên chạy X11 cục bộ nào có thể bị ngắt
kết nối.
Phần mềm aptitude
bảo tồn một danh
sách các gói đã được tự động cài đặt (v.d. do quan hệ phụ thuộc với một gói
khác). Trong lenny, apt
cũng
có tính năng này.
Lần đầu tiên chạy phiên bản lenny của aptitude
thì nó đọc danh sách các gói tự động
cài đặt, và chuyển đổi nó để sử dụng với phiên bản lenny của
apt
. Người dùng đã cài đặt
aptitude
về trước thì cần phải chạy
ít nhất một câu lệnh aptitude để sơ khởi quá trình chuyển
đổi này. Thí dụ, tìm kiếm một gói không tồn tại:
# aptitude search "?false"
Do một số sự xung đột gói giữa etch và lenny, việc chạy
câu lệnh aptitude dist-upgrade
một cách trực tiếp sẽ
thường gỡ bỏ rất nhiều gói mà người dùng muốn giữ. Vì lý do đó, khuyên người
dùng chạy một quá trình nâng cấp có hai phần riêng: trước tiên một việc nâng
cấp tối thiểu để giải quyết trường hợp xung đột, và sau đó một việc
dist-upgrade
đầy đủ.
Trước tiên, chạy câu lệnh:
# aptitude safe-upgrade
Kết quả là nâng cấp những gói có thể nâng cấp được mà không cần gỡ bỏ hay cài đặt gói khác nào.
Bước kế tiếp vẫn biến đổi phụ thuộc vào tập hợp gói được cài đặt hiện thời. Ghi chú Phát hành này chỉ có thể cung cấp lời khuyên chung về phương pháp nên dùng, nhưng nếu chưa chắc, rất khuyên người dùng xem lại danh sách các gói nên gỡ bỏ tùy theo mỗi phương pháp, trước khi tiếp tục.
Phương pháp này có thể gỡ bỏ một số gói thường dùng, bao gồm base-config
, hotplug
, xlibs
, netkit-inetd
, python2.3
, xfree86-common
và xserver-common
. Để tìm thêm thông tin về những
gói đã lỗi thời trong lenny, xem Phần 4.10, “Gói quá cũ”.
Sau đó thì có thể tiếp tục phần chính của quá trình nâng cấp. Chạy câu lệnh:
# aptitude dist-upgrade
Câu lệnh này sẽ nâng cấp hoàn toàn hệ thống, tức là cài đặt phiên bản mới nhất của mọi gói sẵn sàng, và giải quyết mọi quan hệ phụ thuộc có thể biến đổi trong bản phát hành khác nhau. Nếu cần thiết, nó sẽ cài đặt một số gói mới (thường là phiên bản thư viện mới, hay gói bị thay tên), và gỡ bỏ gói quá cũ nào bị xung đột.
Khi nâng cấp từ một bộ đĩa CD/DVD, người dùng sẽ được nhắc nạp một đĩa nào đó ở vài điểm thời trong quá trình nâng cấp. Có lẽ cần phải nạp nhiều lần cùng một đĩa, do các gói liên quan đến nhau mà được chia ra các đĩa khác nhau.
Gói được cài đặt hiện thời mà không thể nâng cấp mà không thay đổi trạng
thái cài đặt của một gói khác, sẽ còn lại ở phiên bản hiện thời (đánh dấu là
“giữ lại”). Vẫn còn có thể cài đặt phiên bản mới bằng cách sử
dụng aptitude để tự chọn những gói phiên bản mới, hoặc
bằng cách thử chạy câu lệnh aptitude -f install
để cài đặt mỗi gói phiên bản
mới.
tên_gói
Nếu một thao tác dùng aptitude, apt-get hay dpkg không thành công và xuất lỗi
E: Hết chỗ tạo sơ đồ bộ nhớ động (Dynamic MMap)
thì không đủ sức chứa nhớ tạm mặc định. Quản trị có thể giải quyết vấn đề
này bằng cách gỡ bỏ hay tắt ghi chú các dòng không cần thiết trong tập tin
/etc/apt/sources.list
, hoặc tăng kích cỡ vùng nhớ tạm
(đặt APT::Cache-Limit
trong tập tin cấu hình
/etc/apt/apt.conf
. Câu lệnh theo đây sẽ đặt một giá trị
nên đủ để nâng cấp:
# echo 'APT::Cache-Limit "12500000";' >> /etc/apt/apt.conf
Câu lệnh này giả sử chưa đặt biến này trong tập tin đó.
Đôi khi cần phải hiệu lực tùy chọn APT::Force-LoopBreak
trong APT để có khả năng tạm thời gỡ bỏ một gói chủ yếu do một vòng lặp Xung
đột/Phụ thuộc trước. aptitude sẽ thông báo về vòng lặp
này và hủy bỏ quá trình nâng cấp. Vẫn còn có thể giải quyết vấn đề này bằng
cách xác định tùy chọn -o APT::Force-LoopBreak=1
trên
dòng lệnh aptitude.
Một trường hợp ít xảy ra là hệ thống có cấu trúc quan hệ phụ thuộc quá bị hỏng mà cần quản trị tự can thiệp. Có thể sử dụng aptitude hoặc
# dpkg --remove tên_gói
để loại trừ một số gói phạm lỗi, hoặc
# aptitude -f install # dpkg --configure --pending
Trong trường hợp rất khó, bạn có thể cần phải ép buộc cài đặt lại, dùng một câu lệnh như
# dpkg --install /đường/dẫn/tới/tên_gói.deb
Trường hợp tập tin bị xung đột không nên xảy ra khi nâng cấp từ một hệ thống etch “thuần”, nhưng vẫn còn có thể xảy ra nếu hệ thống chứa bản chuyển ngược không chính thức. Sự xung đột giữa các tập tin sẽ gây ra một lỗi như :
Đang giải nén<tên_gói1>
(từ<tập_tin_gói1>
) ... dpkg: gặp lỗi khi xử lý<tên_gói1>
(--install): đang thử ghi đè lên `<tên_tập_tin>
', mà cũng nằm trong gói<tên_gói2>
dpkg-deb: tiến trình con dán bị tín hiệu giết (Ống dẫn bị vỡ) Gập lỗi khi xử lý:<tên_gói1>
Quản trị cũng có thể thử giải quyết một trường hợp các tập tin bị xung đột bằng cách ép buộc gỡ bỏ gói có tên trên dòng cuối cùng của thông điệp lỗi:
# dpkg -r --force-depends tên_gói
Sau khi sửa chữa, quản trị nên có thể tiếp tục lại quá trình nâng cấp bằng cách lặp lại những câu lệnh aptitude diễn tả trước.
Trong khi nâng cấp, tiến trình sẽ hỏi câu về cách cấu hình (lại) vài
gói. Khi quá trình hỏi nếu tập tin nào trong thư mục
/etc/init.d
hay /etc/terminfo
,
hoặc tập tin /etc/manpath.config
, nên được thay thế
bằng phiên bản của phần mềm quản lý gói, thường nên đồng ý để đảm bảo hệ
thống vẫn thống nhất. Lúc sau, cũng có thể hoàn nguyên mỗi phiên bản cũ, vì
nó sẽ được lưu với một phần mở rộng .dpkg-old
.
Chưa chắc nên làm gì thì viết tên của gói hay tập tin đó, và tháo gỡ trường
hợp vào một lúc sau. Cũng có thể tìm kiếm qua tập tin
typescript
để xem lại thông tin đã cuộn qua trên màn
hình trong khi nâng cấp.
Phần này giải thích cách nâng cấp hạt nhân, và diễn tả một số vấn đề liên
quan đến quá trình nâng cấp này. Quản trị có dịp cài đặt một của những gói
linux-image-*
được Debian cung cấp,
hoặc biên dịch một hạt nhân riêng từ mã nguồn.
Ghi chú rằng rất nhiều thông tin trong phần này dựa vào giả sử rằng quản trị
sẽ sử dụng một của những hạt nhân Debian kiểu mô-đun, cùng với initramfs-tools
và udev
. Nếu quản trị chọn sử dụng một hạt nhân
riêng mà không cần thiết một initrd, hoặc sử dụng một bộ tạo ra initrd khác,
một số thông tin ở đây có thể không còn thích hợp lại.
Khi chạy quá trình nâng cấp bản phát hành (dist-upgrade
)
từ etch lên lenny, rất khuyên quản trị cài đặt một siêu
gói (metapackage) linux-image-2.6-*
mới. Gói này cũng có thể được tự động cài đặt bởi tiến trình
dist-upgrade
. Quản trị có thể kiểm tra nó đã được cài đặt
bằng cách chạy câu lệnh:
# dpkg -l "linux-image*" | grep ^ii
Không có kết xuất gì thì quản trị cần phải tự cài đặt một gói linux-image-2.6-*
. Để thấy danh sách các gói
linux-image-2.6-*
sẵn sàng, chạy câu
lệnh:
# apt-cache search linux-image-2.6- | grep -v transition
Chưa chắc về gói nào nên chọn thì chạy câu lệnh uname -r
và tìm một gói có tên tương tự. Ví dụ, nếu thấy chuỗi «
2.6.18-6-686
», khuyên quản trị cài đặt gói linux-image-2.6-686
. (Ghi chú rằng mùi vị
k7
không còn tồn tại lại: quản trị hiện thời sử dụng mùi
vị hạt nhân 386 thì nên dùng mùi vị 686
để thay thế.)
Cũng có thể sử dụng công cụ apt-cache để hiển thị một mô
tả chi tiết về mỗi gói, để giúp chọn gói thích hợp nhất. Ví dụ :
# apt-cache show linux-image-2.6-686
Sau đó thì có nên sử dụng câu lệnh cài đặt aptitude
install
để cài đặt nó. Một khi cài đặt hạt nhân mới, quản trị nên
khởi động lại càng sớm càng có thể, để lợi dụng phiên bản hạt nhân mới.
Cho quản trị liều lĩnh hơn, có một phương pháp dễ để biên dịch hạt nhân
riêng trên Debian GNU/Linux. Hãy cài đặt công cụ kernel-package
và đọc các tài liệu hướng dẫn
trong thư mục /usr/share/doc/kernel-package
.
Nếu có thể, tốt hơn khi nâng cấp gói hạt nhân một cách riêng với quá trình
dist-upgrade
chính, để tránh bị đứng với một hệ thống tạm
thời không khởi động được. Ghi chú rằng thao tác này chỉ nên được làm đằng
sau quá trình nâng cấp tối thiểu diễn tả trong Phần 4.5.6, “Nâng cấp hệ thống tối thiểu”.
lenny cung cấp một cơ chế phát hiện phần cứng mà mạnh mẽ hơn các bản
phát hành trước. Tuy nhiên, cơ chế này có thể sửa đổi thứ tự phát hiện thiết
bị trên hệ thống, mà ảnh hưởng đến thứ tự gán tên thiết bị. Ví dụ, nếu có
hai bộ tiếp hợp liên quan đến hai trình điều khiển khác nhau, thì hai chuỗi
eth0
và eth1
có thể tham chiếu đến hai
thiết bị bị trao đổi, so với bản phát hành trước. Ghi chú rằng dùng cơ chế
mới (v.d.) việc chuyển đổi bộ tiếp hợp Ethernet
trong một
hệ thống lenny đang chạy có kết quả là bộ tiếp hợp mới sẽ cũng nhận
một tên giao diện mới.
Đối với thiết bị mạng, quản trị có thể tránh trường hợp này bằng cách sử
dụng các quy tắc của udev
, chính xác
hơn thông qua những lời xác định ở
/etc/udev/rules.d/70-persistent-net.rules
[4]. Hoặc quản trị có thể sử dụng tiện ích
ifrename để đóng kết mỗi thiết bị vật lý tới một tên
riêng vào lúc khởi động. Xem ifrename(8) và iftab(5) để tìm thêm thông tin. Hai phần mềm
khác nhau (udev
và
ifrename) không nên được dùng đồng thời.
Đối với thiết bị lưu trữ, quản trị có thể tránh trường hợp thay đổi thứ tự
này bằng cách sử dụng gói công cụ initramfs-tools
và cấu hình nó để nạp các mô-đun
trình điều khiển thiết bị lưu trữ theo thứ tự được nạp hiện thời. Để làm như
thế, hãy tìm thứ tự theo đó các thiết bị lưu trữ được nạp vào hệ thống bằng
cách xem lại kết xuất của lsmod. Công cụ
lsmod liệt kê các mô-đun theo thứ tự nạp đảo ngược, tức
là mô-đun thứ nhất trong danh sách là mô-đun được nạp cuối cùng. Ghi chú
rằng phương pháp này chỉ có tác động với thiết bị mà hạt nhân đến theo một
thứ tự ổn định (v.d. thiết bị PCI).
Tuy nhiên, việc gỡ bỏ và nạp lại mô-đun sau khi khởi động đầu tiên sẽ ảnh
hưởng đến thứ tự này. Hơn nữa, hạt nhân trên máy có thể liên kết tĩnh một số
trình điều khiển, và các tên này sẽ không xuất hiện trong kết xuất của
lsmod. Quản trị cũng có thể xem lại bản ghi
/var/log/kern.log
hay kết xuất của
dmesg để thử phân biệt những tên trình điều khiển này và
thứ tự nạp.
Hãy thêm những tên mô-đun này vào
/etc/initramfs-tools/modules
theo thứ tự nên nạp vào
lúc khởi động. Một số tên mô-đun có thể thay đổi giữa etch và
lenny. Ví dụ, sym53c8xx_2
đã trở thành
sym53c8xx
.
Sau đó thì quản trị cần phải tạo ra lại (các) ảnh initramfs
bằng cách chạy câu lệnh
update-initramfs -u -k all
.
Một khi chạy một hạt nhân lenny và udev
, quản trị cũng có thể cấu hình lại hệ thống
để truy cập đến đĩa theo một biệt hiệu không phụ thuộc vào thứ tự nạp trình
điều khiển. Các biệt hiệu này nằn trong cây thư mục
/dev/disk/
.
Nếu khởi động hệ thống dùng một initrd được tạo dùng initramfs-tools
, trong một số trường hợp các tập
tin thiết bị được udev
tạo quá trễ
để văn lệnh khởi động xử lý.
Trường hợp này thường ngụ ý khi không khởi động được vì không thể gắn kết hệ
thống tập tin gốc, và màn hình hiển thị một trình bao gỡ lỗi. Tuy nhiên, nếu
quản trị kiểm tra về sau, tất cả các thiết bị cần thiết có phải nằm trong
/dev
. Trường hợp này đã xảy ra khi hệ thống tập tin gốc
nằm trên một đĩa USB hay một mảng
RAID, đặc biệt khi dùng
LILO.
Có thể chỉnh lại vấn đề này bằng cách sử dụng tham số khởi động
rootdelay=
(khoảng đợi khởi
động: 9 giây). Điều chỉnh giá trị này để thích hợp với trường hợp riêng.
9
Khi câu lệnh aptitude dist-upgrade
đã chạy xong, hoàn tất
quá trình nâng cấp “hình thức”, nhưng vẫn có một số công việc
cần làm trước khi khởi động lại.
Nếu hệ thống sử dụng lilo
là công cụ
nạp khởi động (nó là bộ nạp khởi động cho một số bản cài đặt
etch) rất khuyên quản trị chạy lilo lần nữa
sau khi nâng cấp:
# /sbin/lilo
Ghi chú rằng cần phải chạy lại lilo thậm chí nếu hạt nhân chưa được nâng cấp, vì giai đoạn thứ hai của lilo sẽ thay đổi so quá trình nâng cấp gói.
Hơn nữa, hãy xem lại nội dung của tập tin cấu hình
/etc/kernel-img.conf
và kiểm tra nó chứa chuỗi
do_bootloader = Yes
(làm bộ nạp khởi động = Có). Do đó,
bộ nạp khởi động lúc nào cũng chạy sau khi nâng cấp hạt nhân.
Gặp vấn đề nào khi chạy lilo thì hãy so sánh các liên kết
tượng trưng trong cây thư mục /
mà chỉ tới
vmlinuz
và initrd
với nội dung của
tập tin cấu hình /etc/lilo.conf
.
Nếu người dùng quên chạy lại lilo trước khi khởi động
lại, hoặc hệ thống tình cờ được khởi động lại trước khi người dùng có thể tự
làm như thế, hệ thống có thể sẽ không khởi động được. Thay cho dấu nhắc
lilo, người dùng sẽ chỉ thấy LI
khi
khởi động hệ thống[5]. Xem Phần 4.1.3, “Chuẩn bị phục hồi” để tìm thông tin về cách phục
hồi từ trường hợp này.
Một số người dùng đã thông báo rằng quá trình nâng cấp có thể gây ra hạt nhân không tìm được phân vùng gốc của hệ thống sau khi khởi động lại hệ thống.
Trong trường hợp như vậy, tiến trình khởi động hệ thống sẽ treo ở thông điệp theo đây:
Đang đợi hệ thống tập tin gốc...
và sau vài giây nữa, một dấu nhắc hộp bận thô sẽ xuất hiện.
Vấn đề này có thể xảy ra khi quá trình nâng cấp hạt nhân giới thiệu sử dụng
trình điều khiển IDE của thế hệ kế tiếp. Quy ước đặt tên
đĩa IDE cho trình điều khiển cũ là
hda
, hdb
, hdc
,
hdd
. Trình điều khiển mới sẽ đặt tên cùng những đĩa đó
sda
, sdb
, sdc
,
sdd
. Vấn đề xuất hiện khi quá trình nâng cấp không tạo ra
một tập tin /boot/grub/menu.lst
mới để tùy theo quy ước
đặt tên mới. Trong khi khởi động, Grub
sẽ gửi một phân vùng gốc hệ thống qua cho
hạt nhân mà hạt nhân vẫn còn không tìm được.
Người dùng đã gặp vấn đề này nên nhảy tới Phần 4.8.2, “Cách giải quyết vấn đề sau khi nâng cấp”. Để tránh vấn đề này trước khi nâng cấp, đọc nữa nhé.
Vẫn có thể tránh vấn đề này một cách hoàn toàn bằng cách sử dụng một bộ nhận diện cho hệ thống tập tin gốc mà không biến đổi giữa hai việc khởi động. Có hai phương pháp có thể làm như thế: đặt nhãn hệ thống tập tin, hoặc sử dụng bộ nhận diện duy nhất toàn thể (UUID). Hai phương pháp này được hỗ trợ trong Debian kể từ 4.0.
Hai phương pháp này có lợi ích và bất lợi. Phương pháp đặt nhãn vẫn dễ đọc hơn, nhưng cũng có thể gặp vấn đề nếu một hệ thống tập tin khác cùng máy có nhãn đó. Phương pháp UUID ít đẹp hơn, nhưng rất ít có thể tạo hai UUID xung đột.
Trong các mẫu thí dụ dưới đây, giả sử hệ thống tập tin gốc nằm trên
/dev/hda6
. Cũng giả sử hệ thống có bản cài đặt
udev
và hệ thống tập tin kiểu
ext2
hay ext3
.
Để thực hiện phương pháp đặt nhãn:
Đặt nhãn hệ thống tập tin (tên có số tối đa 15 ký tự) bằng cách chạy câu lệnh: e2label /dev/hda6 rootfilesys
Chỉnh sửa tập tin /boot/grub/menu.lst
và sửa đổi dòng:
# kopt=root=/dev/hda6 ro
thành
# kopt=root=LABEL=rootfilesys ro
![]() | Ghi chú |
---|---|
Không nên gỡ bỏ dấu |
Cập nhật những dòng hạt nhân (kernel
) trong tập tin lines
in menu.lst
bằng cách chạy câu lệnh
update-grub.
Chỉnh sửa tập tin /etc/fstab
và sửa đổi dòng mà gắn kết
phân vùng /
, v.d.
/dev/hda6 / ext3 defaults,errors=remount-ro 0 1
thành
LABEL=rootfilesys / ext3 defaults,errors=remount-ro 0 1
Thay đổi đáng kể là cột bên trái: không nên sửa đổi cột khác nào trên dòng này.
Để thực hiện phương pháp UUID:
Tìm biết bộ nhận diện duy nhất toàn thể của hệ thống tập tin bằng cách chạy câu lệnh: ls -l /dev/disk/by-uuid | grep hda6
Kết quả nên một dòng tương tự với:
lrwxrwxrwx 1 root root 24 2008-09-25 08:16 d0dfcc8a-417a-41e3-ad2e-9736317f2d8a -> ../../hda6
UUID là tên của liên kết tượng trưng chỉ tới
/dev/hda6
, tức là:
d0dfcc8a-417a-41e3-ad2e-9736317f2d8a
.
![]() | Ghi chú |
---|---|
UUID của mỗi hệ thống tập tin là một chuỗi riêng biệt. |
Chỉnh sửa tập tin /boot/grub/menu.lst
và sửa đổi dòng:
# kopt=root=/dev/hda6 ro
thành
# kopt=root=UUID=d0dfcc8a-417a-41e3-ad2e-9736317f2d8 ro
![]() | Ghi chú |
---|---|
Không nên gỡ bỏ dấu |
Cập nhật những dòng hạt nhân (kernel
) trong tập tin lines
in menu.lst
bằng cách chạy câu lệnh
update-grub.
Chỉnh sửa tập tin /etc/fstab
và sửa đổi dòng mà gắn kết
phân vùng /
, v.d.
/dev/hda6 / ext3 defaults,errors=remount-ro 0 1
thành
UUID=d0dfcc8a-417a-41e3-ad2e-9736317f2d8 / ext3 defaults,errors=remount-ro 0 1
Thay đổi đáng kể là cột bên trái: không nên sửa đổi cột khác nào trên dòng này.
Phương pháp này thích hợp khi Grub
hiển thị giao diện trình đơn để chọn mục nhập từ đó người dùng muốn khởi
động. Không có trình đơn xuất hiện thì hãy thử bấm phím Esc
trước khi hạt nhân khởi động, để ép buộc trình đơn xuất hiện. Vẫn còn không
thành công thì thử Phần 4.8.2.2, “Lời giải 2” hay Phần 4.8.2.3, “Lời giải 3”.
Trong trình đơn Grub
, hãy tô sáng
mục nhập từ đó cần khởi động. Bấm phím e để chỉnh sửa các
tùy chọn liên quan đến mục nhập này. Kết quả nên tương tự với:
root (hd0,0) kernel /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro initrd /initrd.img-2.6.26-1-686
Tô sáng dòng
kernel /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro
bấm phím e và thay thế
hd
bằng
X
sd
(X
X
đại
diện chữ a
, b
, c
hay d
phụ thuộc vào hệ thống. Trong mẫu thí dụ này, dòng
này trở thành:
kernel /vmlinuz-2.6.26-1-686 root=/dev/sda6 ro
Sau đó, bấm phím Enter để lưu lại thay đổi. Nếu dòng khác
nào bao gồm hd
, cũng nên sửa
đổi nó. Không nên sửa đổi mục nhập tương tự với X
root
(hd0,0)
. Một khi sửa đổi xong và lưu lại, bấm phím
b: hệ thống nên khởi động như bình thường.
Một khi khởi động được, người dùng cần phải sửa chữa bền bỉ vấn đề đó. Nhảy tới Phần 4.8.1, “Cách tránh vấn đề này trong khi nâng cấp” và áp dụng một của hai thủ tục đề xuất.
Khởi động từ vật chứa cài đặt Debian GNU/Linux (đĩa
CD/DVD) và khi được nhắc, chọn mục
rescue
(cứu) để khởi chạy chế độ cứu. Chọn ngôn ngữ, địa
điểm và bố trí bàn phím, sau đó cho phép nó cấu hình mạng (bất chấp thành
không hay không). Sau một thời gian, nó nên nhắc người dùng chọn phân vùng
cần sử dụng làm hệ thống tập tin gốc. Các lựa chọn đề xuất sẽ hình như :
/dev/ide/host0/bus0/target0/lun0/part1 /dev/ide/host0/bus0/target0/lun0/part2 /dev/ide/host0/bus0/target0/lun0/part5 /dev/ide/host0/bus0/target0/lun0/part6
Nếu người dùng biết phân vùng nào là hệ thống tập tin gốc, chọn phân vùng thích hợp. Không thì chỉ thử phân vùng thứ nhất. Nếu phần mềm than phiền về một phân vùng hệ thống tập tin không hợp lệ, chỉ thử phân vùng kế tiếp, v.v. Thử lần lượt phân vùng nọ sau phân vùng kia không nên làm hại phân vùng, và nếu chỉ có một hệ điều hành được cài đặt trên đĩa thì dễ tìm phân vùng hệ thống tập tin đúng. Nếu có nhiều hệ điều hành được cài đặt vào đĩa, tốt hơn khi người dùng biết phân vùng nào là đúng.
Một khi chọn phân vùng, người dùng sẽ thấy một số tùy chọn khác nhau. Bật tùy chọn sẽ thực hiện một trình bao trong phân vùng đã chọn. Nếu phần mềm than phiền rằng nó không thể làm như thế, thử tùy chọn này trong một phiên bản khác.
Sau đó thì quản trị nên có quyền truy cập đến trình bao dưới người dùng
root
(người chủ) trên hệ thống tập tin gốc được gắn kết
đến /target
. Quản trị cần quyền truy cập đến nội dung
của các thư mục /boot
, /sbin
và
/usr
trên đĩa cứng, mà giờ nên sẵn sàng dưới
/target/boot
, /target/sbin
và
/target/usr
. Nếu thư mục như vậy cần được gắn kết từ
phiên bản khác, hãy làm như thế (xem /etc/fstab
để tìm
biết phân vùng nào nên gắn kết).
Nhảy tới Phần 4.8.1, “Cách tránh vấn đề này trong khi nâng cấp” và áp dụng một
của hai thủ tục đề xuất để sửa bền bỉ vấn đề này. Sau đó, gõ lệnh
exit
để thoát khỏi trình bao cứu, và chọn mục
reboot
để khởi động hệ thống như bình thường (đừng quên
gỡ bỏ vật chứa có khả năng khởi động).
Khởi động từ bản phát hành CD-Động (LiveCD), v.d. Debian Động, Knoppix hay Ubuntu Động.
Gắn kết phiên bản chứa thư mục /boot
. Không biết thư
mục nào thì sử dụng kết xuất của lệnh dmesg để tìm biết
nếu đĩa được biết như là hda
, hdb
,
hdc
,hdd
hay sda
,
sdb
, sdc
, sdd
. Một
khi biết đĩa nào cần thao tác, v.d. sdb
, chạy câu lệnh
theo đây để thấy bảng phân vùng của đĩa và tìm phân vùng đúng:
fdisk -l /dev/sdb
Giả sử đã gắn kết phân vùng đúng dưới /mnt
, và phân
vùng này chứa thư mục /boot
và nội dung của nó, hãy
chỉnh sửa tập tin /mnt/boot/grub/menu.lst
.
Tìm phần tương tự với:
## ## End Default Options ## title Debian GNU/Linux, kernel 2.6.26-1-686 root (hd0,0) kernel /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro initrd /initrd.img-2.6.26-1-686 title Debian GNU/Linux, kernel 2.6.26-1-686 (single-user mode) root (hd0,0) kernel /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro single initrd /initrd.img-2.6.26-1-686 ### END DEBIAN AUTOMAGIC KERNELS LIST
và thay thế mỗi chuỗi hda
, hdb
,
hdc
, hdd
bằngsda
,
sdb
, sdc
, sdd
như
thích hợp. Không nên sửa đổi dòng tương tự với:
root (hd0,0)
Khởi động lại hệ thống, gỡ bỏ đĩa CD-Động, và hệ thống nên khởi động đúng.
Một khi khởi động được, áp dụng một của hai thủ tục đề xuất dưới Phần 4.8.1, “Cách tránh vấn đề này trong khi nâng cấp” để sửa chữa bền bỉ vấn đề này.
Sau khi nâng cấp, có vài việc có thể làm để chuẩn bị cho bản phát hành kế tiếp.
Nếu siêu gói ảnh hạt nhân mới đã được lấy do quan hệ phụ thuộc với gói cũ, nó sẽ được đánh dấu là « đã tự động cài đặt », mà nên được sửa chữa (chạy câu lệnh):
# aptitude unmarkauto $(dpkg-query -W 'linux-image-2.6-*' | cut -f1)
Gỡ bỏ các gói quá cũ và không dùng như diễn tả trong Phần 4.10, “Gói quá cũ”. Cũng nên xem lại những tập tin cấu hình được chúng dùng và có dịp tẩy mỗi gói để cũng gỡ bỏ các tập tin cấu hình (và dữ liệu liên quan khác).
Cũng như giới thiệu vài nghìn gói mới, lenny gỡ bỏ và bỏ sót hơn hai nghìn gói cũ đã nằm trong etch. Nó không cung cấp đường dẫn nâng cấp cho gói quá cũ. Dù không có gì ngăn cản người dùng tiếp tục sử dụng gói quá cũ, Dự án Debian thường dừng cung cấp hỗ trợ bảo mật cho nó, một năm sau khi phát hành lenny[6], và không phải thông thường cung cấp hỗ trợ khác nào đã ra đời. Khuyên quản trị thay thế mỗi gói như vậy bằng một gói xen kẽ sẵn sàng (nếu có).
Có rất nhiều lý do gói bị gỡ bỏ khỏi bản phát hành: gói đó không còn được duy trì lại bởi dự án gốc; không còn có lại một Nhà phát triển Debian quan tâm đến duy trì gói đó; chức năng được gói đó cung cấp đã bị thay thế bằng một gói phần mềm/phiên bản mới; hoặc gói đó không còn thích hợp lại với lenny do lỗi nội bộ. Trong trường hợp cuối cùng, gói đó có thể vẫn còn nằm trong bản phân phối “bất định” (unstable).
Dễ phát hiện những gói nào “quá cũ” trong một hệ thống đã cập nhật, vì giao diện quản lý gói sẽ đánh dấu chúng một cách tương ứng. Trong aptitude, danh sách các gói như vậy được hiển thị dưới tiêu đề “Gói cũ và tạo cục bộ”. dselect cung cấp một danh sách tương tự mà có thể chứa nội dung khác.
Hơn nữa, nếu người dùng đã sử dụng aptitude để tự cài đặt gói trong etch, nó đã theo dõi những gói đã cài đặt bằng tay và có khả năng đánh dấu « quá cũ » những gói được lấy chỉ do quan hệ phụ thuộc mà không còn cần thiết lại nếu một gói nào đó bị gỡ bỏ. Cũng như vậy, aptitude, khác với deborphan, sẽ không đánh dấu gói « quá cũ » mà được người dùng tự động cài đặt, như trái ngược với gói được tự động cài đặt do quan hệ phụ thuộc.
Cũng có công cụ bổ sung để tìm các gói quá cũ,
v.d. deborphan, debfoster hay
cruft. deborphan rất khuyến khích, dù
trong chế độ mặc định nó chỉ thông báo các thư viện quá cũ : những gói trong
phần thư viện “libs
” hay phần thư viện cũ
“oldlibs
” mà không dùng bởi gói khác
nhau. Không nên mù quáng gỡ bỏ những gói được tìm bởi công cụ như vậy, đặc
biệt nếu phần mềm sử dụng tùy chọn khác mặc định cũng năng nổ mà có khuynh
hướng xuất kết quả dương giả. Rất khuyên người dùng tự xem lại những gói đề
xuất gỡ bỏ (tức là nội dung, kích cỡ và mô tả về mỗi gói) trước khi thật sự
gỡ bỏ chúng.
Hệ thống Theo dõi Lỗi Debian thường cung cấp thông tin bổ sung về lý do gỡ bỏ một gói nào đó. Khuyên người dùng xem lại cả hai những báo cáo lỗi được lưu trữ về gói chính nó, và những báo cáo lỗi được lưu trữ về gói-giả ftp.debian.org.
The list of obsolete packages includes:
Một số gọi nào đó từ etch đã bị chia ra vài gọi khác nhau trong lenny, thường để cải tiến khả năng bảo tồn hệ thống. Để làm dễ dàng đường dẫn nâng cấp trong các trường hợp như vậy, lenny thường cung cấp các gói “giả”: gói trống cùng tên với gói cũ trong etch với quan hệ phụ thuộc mà gây ra cài đặt gói mới. Sau khi nâng cấp, các gói “giả” được thấy là quá cũ thì có thể được gỡ bỏ an toàn.
Hậu hết (nhưng không phải tất cả các) mô tả về gói giả cũng ngụ ý mục đích
của nó. Tuy nhiên, các mô tả gói về gói giả không phải thống nhất, do đó
cũng có ích để sử dụng deborphan với tùy chọn
--guess
(đoán) để phát hiện gói giả trong hệ thống. Ghi
chú rằng một số gói giả nào đó không dự định được gỡ bỏ sau khi nâng cấp, vì
chúng được dùng để theo dõi phiên bản sẵn sàng hiện thời của một chương
trình nào đó trong thời gian.
[2] Cũng có thể tắt tính năng này bằng cách thêm tham số
panic=0
vào các tham số khởi động.
[3] Hệ thống quản lý gói Debian bình thường không cho phép Gói 1 gỡ bỏ hoặc thay thế một tập tin thuộc về Gói 2, nếu nó chưa xác định để thay thế Gói 2.
[4]
Những quy tắc ở đó được tự động tạo ra bởi văn lệnh
/etc/udev/rules.d/75-persistent-net-generator.rules
để
có tên bền bỉ cho mỗi giao diện mạng. Hãy xoá liên kết tượng trưng này để
tắt chức năng đặt tên thiết bị bền bỉ cho NIC bởi
udev
.
[5] Để tìm thêm thông tin về các mã lỗi của lilo, xem Tài liệu Làm thế nào Đĩa Khởi động Linux.
[6] Hoặc miễn là không có bản phát hành nữa trong khoảng thời gian đó. Bình thường chỉ hai bản phát hành ổn định được hỗ trợ nhau vào một lúc nào đó.