Làm cách nào để cải thiện tốc độ khởi động?


67

Tôi đã thấy nhiều video làm cho Ubuntu nhanh hơn, nhưng các phương pháp này chỉ làm cho hiệu suất của máy tính để bàn nhanh hơn.

Tôi đang tìm cách để làm cho máy tính của tôi khởi động nhanh hơn. Tôi có thể làm gì để Ubuntu khởi động nhanh hơn đáng kể không?


5
Các hệ thống sử dụng systemd(kể từ 15.04 IIRC) đi kèm với công cụ systemd-analyzecó thể giúp bạn phân tích quá trình nào sẽ mất bao lâu để khởi động. Xem man systemd-analyzeđể tìm hiểu về tất cả các tùy chọn của nó, systemd-analyze blamemặc dù trên có lẽ bạn sẽ sử dụng hầu hết .
Chỉ huy Byte

@ByteCommander Một câu trả lời từng bước sẽ thực hiện công việc.
Anwar

Câu trả lời:


28

Nói chung, càng ít chương trình bạn tải khi khởi động, hệ thống của bạn sẽ càng nhanh. Hãy thử BUM (từ trung tâm phần mềm) để vô hiệu hóa một số dịch vụ không cần thiết và cũng đảm bảo bạn không cài đặt bất kỳ chương trình không cần thiết nào sẽ được tải khi khởi động. Cuối cùng, sử dụng ổ đĩa trạng thái rắn (SSD) làm thiết bị khởi động của bạn sẽ cải thiện đáng kể thời gian khởi động.

Oh một điều nữa, loại hệ thống tập tin của bạn cũng làm cho một sự khác biệt. EXT4 đã phải chịu một số hồi quy hiệu suất (theo phoronix) nhưng tôi vẫn thấy EXT4 là tuyệt vời để khởi động nhanh.


bạn có thể thêm dịch vụ nào có thể bị vô hiệu hóa mà không hữu ích thông thường không?
Philippe Gachoud

@PhilippeGachoud Bây giờ tôi thực sự không thể nhớ. Đây là từ năm 2010!
RolandiXor

Tôi đang sử dụng ổ SSD tương thích ngược và bo mạch của tôi là SATA. Nó khởi động điên nhanh.
dùng

17

Tôi chỉ chạy qua cái này vào ngày khác. Hướng dẫn "e4rat" của nó ở đây

Ứng dụng nhỏ này là tuyệt vời.

Tôi đã sử dụng một sempron AMD bộ xử lý đơn đã quá hạn chạy ở tốc độ 2800+ mà bình thường khởi động Natty sau 1,45 phút đến 27.885 giây.

Tôi có các biểu đồ khởi động để chứng minh điều đó. Thật là điên rồ! nhập mô tả hình ảnh ở đây


1
Điều này thực sự có ích !!!
dùng12164

Nhiều người cần biết về e4rat, đây là một công cụ tuyệt vời tạo ra sự cải tiến lớn nhất của nhiều mẹo và thủ thuật khác nhau.
Victor Bjelkholm

3
Nó vẫn hợp pháp cho 12.04? Tôi nghe nói nó sẽ gây ra vấn đề với ureadahead. Điều này có đúng không?
dùng138784

@ user138784 theo tôi hiểu, điều này là do ureadahead thực hiện công việc tương tự như e4rat, vì vậy chúng rõ ràng là xung đột. Nhưng e4rat vì một số lý do dường như tốt hơn ureadahead. Ngoài ra, có lẽ sẽ hữu ích - e4rat vì một số lý do không hoạt động theo mặc định, nó cần một số điều chỉnh , nếu không thì tệp nhật ký không được tạo.
Hi-Angel

e4rat đã không làm việc trong 16.04
Anwar

17

Cải thiện thời gian khởi động có liên quan cao với việc vô hiệu hóa / quản lý dịch vụ, nhưng các câu trả lời hiện tại thiếu chi tiết trong việc vô hiệu hóa các dịch vụ sử dụng systemd.

Systemd là gì?

Nói tóm lại, systemd là trình quản lý hệ thống và dịch vụ cho Linux, tương thích với các tập lệnh init SysV và LSB. Thông tin thêm về điều này có thể được đọc từ trang dự án chính thức .

Kiểm tra những dịch vụ nào mất nhiều thời gian nhất

Sử dụng lệnh sau để kiểm tra dịch vụ nào mất nhiều thời gian nhất

systemd-analyze blame

Vô hiệu hóa tự động khởi động dịch vụ trong khi khởi động

Nếu bạn muốn tắt tự động khởi động dịch vụ trong khi khởi động, bạn có thể sử dụng lệnh sau

sudo systemctl disable some-time-eater-service.service --now

Tuy nhiên, bạn có thể muốn xem dịch vụ nào khác cần dịch vụ được đề cập. Để kiểm tra sử dụng lệnh sau

systemctl list-dependencies some-time-eater-service.service --reverse

Lưu ý: Thay thế some-time-eater-service.servicebằng tên dịch vụ thực tế như thế nào postgresql@9.5-main.service.

Lưu ý rằng, vô hiệu hóa tự động khởi động không làm cho dịch vụ không thể khởi động. Dịch vụ có thể được bắt đầu sau khi khởi động khi có yêu cầu. Nếu bạn muốn tắt nó hoàn toàn, hãy đọc phần tiếp theo

Vô hiệu hóa dịch vụ hoàn toàn.

Nếu bạn muốn vô hiệu hóa hoàn toàn một dịch vụ để không thể khởi động dịch vụ, bạn nên sử dụng maskthay vì vô hiệu hóa. Như thế này

sudo systemctl mask <SERVICE-NAME>

Thay thế <SERVICE-NAME>bằng tên thật của một dịch vụ

Sự khác biệt giữa maskdisablelà mặt nạ làm cho một dịch vụ hoàn toàn vô hiệu hóa, bạn không thể bắt đầu nó. Bạn phải unmaskbắt đầu với systemd (bạn vẫn có thể bắt đầu với service). Nhưng disablechỉ cần vô hiệu hóa tự động khởi động dịch vụ, bạn có thể bắt đầu dịch vụ sau.

Ví dụ: Sau khi che dấu postgresql@9.5-main.servicedịch vụ của tôi , khi tôi muốn bắt đầu dịch vụ với systemctlthông báo sau sẽ được hiển thị

Failed to start postgresql@9.5-main.service: Unit postgresql@9.5-main.service is masked.

Công cụ GUI

Một công cụ GUI tôi đặc biệt thấy thú vị là systemd-manager, nó vẫn đang trong giai đoạn phát triển và chưa được đưa vào đường dẫn tới kho lưu trữ Ubuntu chính thức. Tuy nhiên, bạn có thể cài đặt nó rất dễ dàng từ trang github của Systemd-Manager . Các bản phát hành có chứa một gói .deb, rất dễ cài đặt. Bạn cần GTK-3.16 trở lên.

Khi bạn tải xuống và cài đặt, bạn có thể bắt đầu bằng systemd-managerlệnh. Bắt đầu làm đi.

Ứng dụng này có hai góc nhìn chính. Một là Systemd Đơn vị và một là Systemd Phân tích . Bạn có thể chuyển đổi nó với nhãn ở góc trên bên trái. Xem ảnh chụp màn hình.

Swithch giữa lượt xem

Và có ba loại đơn vị bạn có thể quản lý. Phục vụ , ổ cắm và bộ hẹn giờ . Bạn có thể chuyển đổi giữa chúng. Xem ảnh chụp màn hình.

Chuyển đổi giữa các loại đơn vị

Hiển thị thông tin

Ba tab chính là Tệp , Tạp chí , Phụ thuộc .

  • Tệp là tệp cấu hình của đơn vị được chọn.
  • Nhật ký là đầu ra của systemd trực tiếp trong khi bật / tắt / khởi động / dừng các đơn vị
  • Sự phụ thuộc cho thấy những dịch vụ hoặc đơn vị khác phải được kích hoạt để bắt đầu một dịch vụ được chọn.

Các chỉ số trạng thái

Có hai cột bên cạnh tên của các đơn vị để chỉ Trạng thái. Một bên trái cho biết đơn vị đó có được bật để khởi động khi khởi động hay không và đơn vị bên phải cho biết đơn vị đó có đang chạy hay không. Xem chúng trong hình.

Kích hoạt ở trạng thái khởi động

Hiện trạng thái đang chạy

Công tắc điều khiển

Để bật trạng thái kích hoạt khi khởi động hoặc đang chạy, có hai nút toogle ở ​​góc trên bên phải. Kích hoạt có nghĩa là các đơn vị sẽ bắt đầu và khởi động. Xem chúng trong hình.

Toogle chuyển sang bật / bắt đầu

Giao diện hoàn chỉnh của ứng dụng được hiển thị bên dưới

Toàn cảnh

Hy vọng điều này sẽ giúp. Tôi được hưởng lợi từ các câu trả lời khác về systemd, nhưng thực sự cần thiết để thu thập thông tin ở một nơi.

Thêm thông tin :

Để biết thêm về systemdbạn có thể truy cập các liên kết sau:

Các câu trả lời khác có đề xuất khác nhau. Bao gồm mua SSD, tăng RAM, v.v. Nếu bạn có đủ khả năng, những thứ đó chắc chắn sẽ giúp ích, đặc biệt là gợi ý về SSD.


15

Chuyển từ ổ đĩa từ sang ổ đĩa thể rắn hoặc ổ đĩa trạng thái từ tính và trạng thái rắn. Điều đó sẽ làm cho bất kỳ hệ điều hành khởi động nhanh hơn rất nhiều. Ổ đĩa lai không đắt hơn nhiều. Nếu bạn không muốn đi xa như vậy, thì chỉ cần lấy một ổ cứng 7200 hoặc 10K RPM.


6
Tốc độ đĩa là nút cổ chai khởi động hiện tại.
scottl

@scottl cho các đĩa của tôi là SATA và thời gian khởi động của tôi tương tự như 1:45 phút được báo cáo bởi @RobinJ, tôi nghi ngờ rằng có bất kỳ lý do nào để chỉ ngón tay vào hiệu suất đĩa nói riêng. Tuy nhiên, điều tôi thấy là việc gắn đĩa và chia sẻ được thực hiện theo kiểu đồng bộ, mặc dù 1.) sử dụng fastbootvà 2.) những đĩa đó không quan trọng đối với quá trình khởi động.
0xC0000022L

13

Tôi giả sử bạn đang nói về Ubuntu 11.04?
Tôi đã thử điều này từ khá lâu rồi mà không có nhiều thành công. Dù sao, các bước này đã tạo ra một vài giây khác biệt:

1. Loại bỏ các gói không cần thiết

apt-get purge brltty brltty-x11 foo2zjs min12xxw ttf-indic-fonts-core ttf-kacst-one ttf-khmeros-core ttf-lao ttf-punjabi-fonts ttf-unfonts-core

2. Sử dụng cả lõi / CPU trong quá trình khởi động

CHỈ LÀM ĐIỀU NÀY NẾU BẠN ĐANG BẮT ĐẦU MÁY TÍNH CỦA BẠN ĐÃ CÓ NHIỀU CPU / LESI!
Mở /etc/init.d/rc(bạn sẽ cần quyền root) và thay thế CONCURRENCY=nonebằng CONCURRENCY=shell. Sau đó lưu tập tin.

Cập nhật

"CONCURRENCY = shell hiện đã lỗi thời và được đặt biệt danh là 'makefile'. Kể từ 2010-05-14, mặc định đã là 'makefile'."    ~ Jonathon

3. Vô hiệu hóa daemon không cần thiết

Đây là một nâng cao hơn một chút, vì vậy tốt nhất không nên làm điều đó nếu bạn không biết điều này có nghĩa là gì. Cài đặt bumvà khởi động nó với quyền root. Sau đó, chỉ cần bỏ chọn các hộp ở phía trước của daemon bạn chắc chắn rằng bạn không cần. Chẳng hạn, khi bạn không có máy quét, bạn có thể tắt saned. Và nếu bạn không bao giờ sử dụng bluetooth, bạn cũng có thể vô hiệu hóa bluetooth.
Khi bạn đã hoàn tất, nhấn nút Áp dụng và nhấp vào hoặc không (điều đó không quan trọng lắm).

Sau khi hoàn thành các bước này, khởi động lại hai lần . Vì một số lý do, lần khởi động lại đầu tiên sau khi thay đổi tất cả các tùy chọn này mất nhiều thời gian hơn các tùy chọn khác, nhưng bạn sẽ nhận thấy một số khác biệt trong lần khởi động lại thứ hai.


3
CONCURRENCY = shell hiện đã lỗi thời và được đặt bí danh là 'makefile'. Kể từ 2010-05-14, mặc định là 'makefile'.
Jonathon

Có thể liệt kê (hoặc đưa ra một lời giải thích ngắn) những gói mà bạn khuyên nên loại bỏ? (điểm đầu tiên trong lời giải thích của bạn). Luôn luôn nhớ rằng có những người chỉ đơn giản là sao chép-dán và đột nhiên không thể đọc được từ thiết bị đầu cuối, v.v.
Willem Van Onsem

1
@CommuSoft Vì câu trả lời này là về Ubuntu 11.04 dù sao đi nữa, dù sao cũng sẽ không thể áp dụng được câu trả lời tương tự cho các phiên bản gần đây hơn. Một số thứ này sẽ không hoạt động nữa và những thứ khác có thể phá vỡ hệ thống.
RobinJ

9

Sử dụng bootchart để tạo các biểu đồ chi tiết về những gì cần có thời gian trong khi khởi động. Nó có thể giúp trong việc quyết định những gì để điều chỉnh hoặc loại bỏ. Từ https://wiki.ubfox.com/BootCharting :

  • Cài đặt bootchartpybootchartgui gói, hoặc thông qua apt-get hoặc Synaptic
  • Khởi động lại máy của bạn
  • Bootchart nằm trong / var / log / bootchart dưới dạng tệp .png

Tương đương hiện đại được đề cập ở đây Askubfox.com/a/763070/178596
Wilf


3

Máy của tôi đã khởi động CÁCH nhanh hơn nếu tôi thực hiện cài đặt thay thế và thêm các gói GUI theo cách thủ công. Tất nhiên, nó chỉ loại bỏ những thứ tôi không cần là tôi có khả năng tự thêm vào. Nếu bạn sẽ quay lại với "cách tôi biên dịch / cài đặt các ứng dụng X, Y và Z" thì đây có thể không phải là một ý tưởng hay.


3

Đối với bất kỳ ai khác đang vật lộn với điều này, chỉ cần cài đặt BUM và khởi động nó từ người dùng root (hãy cẩn thận sử dụng gksudo thay vì sudo bình thường). Sau đó bỏ chọn dịch vụ bạn muốn vô hiệu hóa (Tôi đã vô hiệu hóa Apache2, PostGreSQL daemon, MySQL, virtual box et al) và thế là xong! Bạn có thể xóa hoàn toàn dịch vụ nếu bạn không muốn nó ở đó nhưng vô hiệu hóa nó là quá đủ.

sudo apt-get install bum

nhập mô tả hình ảnh ở đây



2

Sửa 2016/10/25: Nếu bạn đang không sử dụng ngủ đông vì bạn có thể không hoặc bạn thích đình chỉ / S3 thì bạn có thể vô hiệu hóa nó trong Grub bằng cách thêm noresumevào GRUB_CMDLINE_LINUX_DEFAULTtrong /etc/default/grubvà chạy update-grub. Dưới đây là một ví dụ về Chromebook N22 chạy GalliumOS:

livewire@zc01:~$ systemd-analyze
Startup finished in 8.580s (kernel) + 4.160s (userspace) = 12.740s

livewire@zc01:~$ systemd-analyze
Startup finished in 3.595s (kernel) + 4.254s (userspace) = 7.850s

Tôi đã tìm thấy điều này bởi vì tôi tò mò về phần "Chạy tập lệnh cục bộ" trong khi khởi động và đã điều tra một chút trong initramfs dẫn tôi đến tùy chọn này mà trước đây tôi chỉ sử dụng khi hệ thống của tôi không thể thức dậy sau khi ngủ đông.


Chỉnh sửa 06.08.2016: Bạn nên cập nhật lên phiên bản phân phối Linux gần đây đi kèm với systemd.


Thành phần:

  • Nhận hệ thống UEFI với mã UEFI miễn phí phình to hoặc Coreboot
  • Nhận một ổ SSD
  • Cài đặt Ubuntu ở chế độ UEFI
  • Phần thưởng: Nén initramfs với xz lzop và chỉ bao gồm các mô-đun cần thiết. (Bạn nên thực sự biết những gì bạn đang làm trước khi cố gắng làm điều đó.)
  • Phần thưởng: Loại bỏ các daemon không cần thiết hoặc cấu hình chúng để khởi động nhanh hơn. Mặc dù cài đặt mặc định đã đủ tốt.
    • Ví dụ: công việc init của btrfs đang tìm kiếm pool để gắn kết trong khi không có khối lượng btrfs trên thiết bị này. Điều này khiến tôi loại bỏ btrfs-tools khỏi một số cài đặt của tôi.

Tôi phải nói 32 giây là thực sự đủ tốt. Nó sẽ không nhanh hơn nhiều với phần cứng truyền thống. Lenovo T530 mới của tôi mất cùng thời gian để khởi động ở chế độ cũ. Với ổ SSD siêu nhỏ mới tôi cài đặt gần đây và Ubuntu ở chế độ UEFI, chỉ mất 15 giây kể từ khi nhấn nút nguồn để đăng nhập. Nó vẫn cảm thấy như đang lãng phí 5 giây trong khi đăng bài, nhưng hoàn toàn không lãng phí thời gian để khởi động hệ điều hành thực tế. SSD siêu nhỏ có tốc độ truyền 280 MB / s, có thể là SSD 500 MB / s có thể mất tới 7 giây. Nhưng nó thực sự phụ thuộc vào các nhà sản xuất để giảm thời gian khởi động hệ điều hành trước (POST và những gì không).

Về hồ sơ khởi động và đồng thời vỏ. Những thông tin có thể được xem là ngày hoặc cuối cùng là huyền thoại. Tôi nhớ rằng cấu hình khởi động tự động hoặc thứ gì đó khiến cấu hình khởi động hoàn toàn không cần thiết đã được thêm vào Linux hoặc hệ thống cốt lõi cách đây nhiều năm, kể từ đó tôi không sử dụng cấu hình khởi động nữa sau khi gói kernel mới được cài đặt. Cài đặt đồng thời shell được cho là phá vỡ mọi thứ, nhưng với Systemd và Upstart, nó cũng không cần thiết lắm và không có tác dụng tích cực.


1

Garbagecollector là đúng. Tiến hành thận trọng. Nhưng một số chương trình bạn có thể vô hiệu hóa một cách an toàn là các tiện ích popping email như Evolution, đặc biệt nếu ban đầu bạn không sử dụng Evolution. Ngoài ra, mọi thứ liên quan đến in đều có thể bị vô hiệu hóa nếu bạn hoàn toàn không in. Tương tự cho Wireless nếu bạn có dây.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.