Thứ Ba, 11 tháng 3, 2014

*nix step 6c: Hack hệ thống Ubuntu để nó phục vụ bạn tốt hơn.

Đặt vấn đề:
  1. Khi cài Ubuntu, mặc định, có những thứ được cài sẵn mà bạn không dùng đến, hoặc gây khó chịu, hoặc gây ra lỗ hổng dễ bị thâm nhập đánh cắp dữ liệu... => Bạn có muốn loại bỏ nó?
  2. Máy của bạn chạy hơi chậm trên nền Ubuntu => Bạn có muốn hệ thống chạy tốt hơn?

Nếu bạn muốn: Chúng ta cùng bắt tay vào việc thôi!

! Để quen với dòng lệnh: Sức mạnh của mọi hệ thống *nix, bạn nên đọc bài Small tip: Cài ứng dụng trên *nix ..như hacker qua Terminal.

1. Gỡ bỏ giao diện Unity 2D:


(Dịch giao diện là không chuẩn, nhưng lại dễ hiểu. Dịch đúng là môi trường làm việc (desktop environment)).

Bạn đã thử chuyển sang giao diện Unity 2D theo hướng dẫn ở mục 2 của bài *nix step6a và thấy ..nó xấu tệ. Bạn lại chuyển qua Unity 3D. Nhưng làm sao để gỡ bỏ Unity 2D an toàn?
Rất đơn giản, chỉ cần Ctrl+Alt+T để bật Terminal và gõ vào lệnh sau:

sudo apt-get remove unity-2d
Từ nay, ngoài lệnh install (cùng một số lệnh khác) để cài ứng dụng bằng dòng lệnh như đã hướng dẫn ở bài small tip, các bạn biết thêm lệnh remove dùng để gỡ bỏ ứng dụng. Có thể các bạn cũng tò mò và tự tìm hiểu thêm 1 lệnh khác, cũng để gỡ bỏ ứng dụng nhưng  mạnh hơn: purge.

Xong. Ở lần đăng nhập (login) sau, bạn sẽ không thấy Unity 2D trong phần lựa chọn nữa.


2. Gỡ bỏ Guest account:



Account dành cho khách (Guest account), hay các account khác nói chung, là để dành cho trường hợp một máy tính nhưng có nhiều người dùng chung, mỗi người được tự ý thiết lập theo ý mình thích.

Phiên làm việc dành cho khách viếng thăm (ví dụ như có ai đó đòi mượn máy của bạn, nhưng bạn không hề thích người ta lục lọi các tập tin, hay xem lịch sử truy cập web mà bạn chưa kịp xóa...) sẽ không có quyền quản trị (không có quyền superuser, tức không thực hiện được lệnh sudo): Nghĩa là ngoài việc tùy biến 1 số thứ linh tinh, người ta không thể nào gỡ bỏ hay cài thêm bất kỳ 1 thứ gì khác trên máy bạn.

Guest session cũng khá hữu ích trong trường hợp bạn đang có hành tung gì bí hiểm, đột ngột có ai đến coi và đòi xem nhưng bạn không tắt kịp máy: Hãy nhanh tay click sang Guest session như hình minh họa ở trên.

Tuy vậy, guest account cũng tiềm tàng nguy cơ bảo mật, bởi guest acount không hề đòi hỏi mật khẩu.

Vậy, trong trường hợp bạn muốn: Bạn có thể bỏ guest account (disable) theo hướng dẫn sau:

Cách 1: 
Bật Terminal, và gõ vào dòng lệnh:
gksudo gedit /etc/lightdm/lightdm.conf
thêm vào dòng dưới cùng của lightdm.conf dòng:
allow-guest=false
Ấn save và tắt đi là xong. Từ lần khởi động sau, bạn sẽ không còn nhìn thấy guest session nữa.
Nếu bạn muốn thấy ngay kết quả, mà không cần phải khởi động lại máy, gõ lệnh:
sudo restart lightdm
Lưu ý rằng với lệnh này thì mọi chương trình đồ họa đang chạy sẽ buộc bị tắt.
Chú thích:
1. Tập tin lightdm.conf sau khi được chỉnh sửa, sẽ có nội dung tương tự như sau:
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
allow-guest=false
2. Câu lệnh gksudo cũng giống như sudo, dùng để cấp quyền quản trị cho ứng dụng đang chạy. Khác ở chỗ: gksudo dùng cho các ứng dụng đồ họa mà không phải dòng lệnh. Như trường hợp trên, gedit chính là một chương trình soạn thảo và sửa văn bản giao diện đồ họa, như notepad ở Windows.
3. Trong trường hợp dành cho người mới dùng, các bạn hoàn toàn dùng được sudo cho các ứng dụng đồ họa, thay cho gksudo, tuy nhiên HTTL không khuyến khích. Ví dụ, thay vì gõ như trên, bạn có thể gõ:
sudo gedit /etc/lightdm/lightdm.conf
Cách 2: Chỉnh sửa bằng vi:
sudo vi /etc/lightdm/lightdm.conf
Sửa xong, gõ :wq và ấn enter.
?: Tôi muốn tìm hiểu về lệnh vi?
!: Gõ man vi
??: Câu hỏi khác: man là ..gì?
!!: man tức manual, dịch thô man vi là "hướng dẫn sử dụng cho lệnh vi" ^_^
(Bạn muốn tìm hiểu thêm các lệnh dành cho vi? Hãy click vào đây để download tập hướng dẫn .pdf)

3. Cài đặt Preload:


Cái tên đã nói lên tất cả: pre-load: 'cầm đèn chạy trước ..ô tô' (ha ha, just kidding).
Chương trình chạy nền này sẽ 'quan sát' thói quen dùng ứng dụng của bạn, và sẽ tự động tạo cache (bộ nhớ đệm) cho những phần mềm đó. Mục đích là để bạn bật ứng dụng nhanh hơn.
Cá nhân HTTL không cài ứng dụng này, do trước đó quan sát thấy nó bị xung đột với ứng dụng thời tiết my-weather-indicator đã giới thiệu ở bài small tip, đẩy việc chiếm dụng RAM của ứng dụng này lên tới 1.2GB thay vì vài MB như thông lệ, ở Ubuntu 13.04.

Bạn có thể cài đặt bằng câu lệnh:
sudo apt-get install preload
Thiết đặt mặc định đã khá tốt, tuy nhiên nếu muốn sửa thiết đặt cho preload, bạn có thể dùng lệnh:
gksudo gedit /etc/preload.conf
Trường hợp bị xung đột hay không thích nữa, bạn gỡ bỏ theo lệnh:
sudo apt-get purge preload

4. Xóa apt-cache:


Như đã giới thiệu ở bài small tip phần 3, địa chỉ chợ ứng dụng (software sources) là nơi chứa toàn bộ địa chỉ những ứng dụng để bạn có thể cài đặt bằng lệnh install nếu bạn cần.
Tuy nhiên, ví dụ như tớ tạo ra 1 phần mềm có tên là gvehacker ver1.0, sau thời gian nữa tớ lại nâng cấp nó lên thành 1.1, ..., 2.4..., thì trong cache vẫn còn chứa những địa chỉ cũ, không hữu dụng.

Để xóa, bạn chỉ cần gõ lệnh:
sudo apt-get autoclean

5. Bỏ bớt ứng dụng khởi động cùng *nix:


Thông thường, nếu không can thiệp vào hệ thống Ubuntu, khi ta gõ 'startup' vào Dash Home để tìm kiếm và bật 'Startup Applications', ta chỉ quan sát thấy một bảng tương tự như hình sau (chỉ có vài ứng dụng startup):

Thực ra có nhiều thứ được Startup cùng Ubuntu, chẳng qua Ubuntu sợ chúng ta ..tắt nhầm đi vài ứng dụng cần thiết, khiến máy không thể hoạt động trơn tru, nên nó ẩn đi :p

Để hiện ra, ta gõ lệnh sau trong Terminal:

sudo sed -i 's/NoDisplay=true/NoDisplay=false/g' /etc/xdg/autostart/*.desktop
Dòng lệnh này chỉnh sửa autostart file, và thay đổi giá trị hiển thị (display) từ ẩn sang hiện.
Sau khi gõ lệnh trên, Startup Applications sẽ hiển thị đầy đủ danh sách các ứng dụng khởi động cùng hệ thống, tương tự như sau:

Bạn có thể bỏ bớt nhiều thứ mà bạn hiểu là bạn không muốn nó khởi chạy cùng.
Nếu bối rối, chưa hiểu ý nghĩa, các bạn có thể hỏi HTTL ở phần comment dưới bài.

6. Điều chỉnh swappiness:


Mặc định khi cài Ubuntu, nó đã tự để dành cho nó 1 file swap ở trên đĩa cứng, với mục đích là khi nào RAM yếu, thì nó sẽ dùng phần HDD/SSD này như 1 phần RAM (gọi là RAM ảo).
RAM ảo tất nhiên không tốt bằng RAM thật, tuy nhiên sẽ vô cùng hữu dụng khi máy dùng gần hết RAM thật: Nó sẽ lấy swap làm RAM, đảm bảo cho hệ thống không bị treo máy và vẫn làm việc bình thường.

Để xem file swap, các bạn có thể bật qua tab Resources của System Monitor (tìm qua Dash Home, hoặc ấn Ctrl+Alt+Del, nếu đã làm theo hướng dẫn của HTTL ở mục 1.2.2 của bài *nix step6b):

Ở hình trên ta thấy HTTL có 2GB RAM, và 2GB Swap.
?
Tại sao RAM thiệt còn dư 700MB mà Swap đã 'bắt đầu hoạt động', chiếm tới 254.1MB?

Thử kiểm tra file cấu hình mặc định cho file swap bằng lệnh:
cat /proc/sys/vm/swappiness
Ta thấy giá trị mặc định trả về là 60:

Hèn chi, khi RAM thiệt được dùng hết >60% (như  hình ở trên, *nix của HTTL dùng hết 68.3%), thì một phần tác vụ ít dùng sẽ bị đẩy sang 'đồ đểu' là Swap, gây chậm máy.

Ta có thể điều chỉnh con số này, với ý nghĩa:

  • 0: Máy sẽ không xài swap cho đến khi RAM thiệt (physical memory) bị đầy ự (tức cố đến mức 'as long as possible');
  • 100: Máy sẽ xài ngay Swap ngay khi có thể (tức 'as soon as possible').
Như vậy, bạn có thể tùy chỉnh giá trị này, khoảng từ 0-10 là hợp lý, theo lệnh:
gksudo gedit /etc/sysctl.conf
Tìm (nếu chưa có, thêm vào ở cuối) dòng:
vm.swappiness=5

Xong rồi xếp lại. Thiết đặt này sẽ có hiệu lực mãi mãi (permanent), ngay ở lần khởi động sau.
(Chú ý đừng để dấu #, là dấu chú thích phía trước. Ví dụ nếu bạn để #vm.swappiness=5 thay vì vm.swappiness=5: Bạn chả thay đổi cái gì cả).

Trong trường hợp bạn muốn thử hiệu lực tạm thời (temporary -  sẽ bị mất hiệu lực khi restart), các bạn gõ lệnh:

sudo sysctl vm.swappiness=5

7. Điều chỉnh Boot time:


Khi khởi động xong BIOS, một màn hình lựa chọn hệ điều hành sẽ hiện lên (như hình minh họa ở cuối mục 4 bài *nix step2, trong phần hướng dẫn install alongside để có dualboot Win7//Ubuntu).
Đó gọi là màn hình Grub2 boot menu.
Bạn nhìn thấy, thời gian đếm ngược mặc định là 10s, gây trễ thời gian khởi động, mặc dù bạn có thể ấn phím Enter để quyết định (decide) nhanh hơn.

Để sửa thời gian boot, dùng lệnh:
gksudo gedit /etc/default/grub

Bạn có thể để 3.
Nếu để 0 như mình, khi khởi động là boot mặc định vào Ubuntu luôn mà không thấy Windows đâu nữa?
Bạn đừng quá lo lắng, nếu bạn ấn phím Shift, hoặc phím mũi tên (đi xuống) ngay từ khi BIOS còn khởi động, thì Grub2 vẫn hiện lên cho bạn lựa chọn OS để boot :)
Sau khi sửa xong Grub, đừng quên gõ lệnh sau trong Terminal để cập nhật Boot menu:
sudo supdate-grub

8. Cài ZRAM:


Trong trường hợp bạn đang sở hữu 1 chiếc máy tính cũ, RAM yếu, bạn có thể cài đặt thêm ZRAM:
Ý tưởng của tác giả là tạo ra trên hệ thống *nix một khối nén bắt chước swap (ở mục 6).

Chính điều này giảm thiểu sự 'đẩy qua đẩy lại' quá trình disk thrashing giữa RAM và Swap => khắc phục nguyên nhân gây chậm hệ thống.

lệnh để cài đặt ZRAM:
sudo apt-get install zram-config
Kiểm tra sự hoạt động của ZRAM:
cat /proc/swaps
9. Bỏ bớt hiệu ứng trên Ubuntu:

Hiệu ứng trên máy Ubuntu, khi ở Unity desktop environment là rất đẹp.
Tất nhiên, cái đẹp bao giờ cũng phải đánh đổi lấy 1 ít tài nguyên của máy.

Muốn máy nhanh hơn: Bạn cần cài 1 ứng dụng để bỏ bớt những hiệu ứng không cần thiết và bạn có thể tinh chỉnh thêm hệ thống.
Có nhiều ứng viên: Ubuntu-Tweak, compizconfig-settings-manager (CCSM)...

Mình cài CCSM như sau:
sudo apt-get install compizconfig-settings-manager

Sau khi cài xong, tìm và bật Compiz (bằng cách tìm ở Dash home), một cảnh báo sẽ hiện ra:

Cảnh báo trên đã nói rõ CCSM là một công cụ chỉnh sửa can thiệp sâu vào hệ thống, mong bạn hãy sử dụng cẩn thận.

Trong trường hợp không muốn can thiệp thêm cái gì khác, mà chỉ muốn bỏ bớt hiệu ứng, hãy click vào tab Effects để bỏ bớt hay thêm vào hiệu ứng mà bạn muốn.

10. Chỉnh FStab để giảm sự đọc/ghi của đĩa cứng (disk I/O):


Folder /tmp (temporary) chính là nơi có nhiều tác vụ disk I/O nhất. Đây cũng là một nguyên nhân gây chậm hệ thống => các nhà lập trình viên của *nix đã nghĩ cách để cho chúng ta "mở lối" để có thể 'đẩy' tác vụ này cho RAM.

Ta có thể làm việc này bằng cách sửa /etc/fstab bằng dòng lệnh:
sudo gedit /etc/fstab
Thêm vào ở cuối dòng:
tmpfs /tmp tmpfs defaults,noexec,nosuid 0 0
rồi xếp lại là ok:
Thêm chú thích bằng dấu # cho dễ nhận dạng mình đã can thiệp, chỉnh sửa.
Với 10 tips vừa rồi, *nix của bạn từ nay trở đi đã hoạt động tốt hơn nhiều so với trước. Thử khởi động lại máy và cảm nhận điều đó. Chúc các bạn thành công.
Mọi vướng mắc, xin thảo luận, HTTL sẽ giải đáp trong khả năng của mình.
Cám ơn các bạn đã đọc bài.

3 nhận xét:

  1. em muốn thay đổi cái thứ tự ở màn hình boot cho windows lên ưu tiên thì có sửa đc không

    Trả lờiXóa
    Trả lời
    1. Hoàn toàn được, có nhiều cách lắm. Cách hay nhất sau đây: Sửa Grub2:
      Tử Terminal gõ:
      fgrep menuentry /boot/grub/grub.cfg

      => có ngay danh sách boot.
      Tìm và copy dòng boot của Windows, ví dụ dòng:
      Windows 7 (loader) (on /dev/sda1)

      Sau đó sửa grub bằng lệnh:
      gksu gedit /etc/default/grub

      Tìm dòng:
      GRUB_DEFAULT=0

      Thay vào đó là:
      GRUB_DEFAULT="Windows 7 (loader) (on /dev/sda1)"

      Sau đó lưu lại chỉnh sửa.

      Sau đó ở Terminal gõ lệnh:
      sudo update-grub

      Done :)

      Xóa
  2. em muốn xóa grub sau khi đã xóa ubuntu nhưng ko biết làm sao mong ad giúp ạ

    Trả lờiXóa