Blog của Lê Văn Luật

Đời người thì có hạn mà sự học thì vô hạn!

RPI – 03: Một vài kiến thức cơ bản nhất về Linux

Do RPI chủ yếu hoạt động với Linux nên kiến thức cơ bản về Linux là cần thiết để tìm hiểu RPI. Trong bài này tôi giới thiệu một vài kiến thức cơ bản nhất để có thể làm việc với Raspbian trên RPI.

Xin lưu ý: Tôi không phải là một chuyên gia về Linux!

Trong bài này, tôi xem như các bạn đã quá quen thuộc với Windows.

Bài này trình bày một số vấn đề sau:

1/ Giới thiệu về Linux và Raspbian
2/ Giao diện của Raspbian
3/ Người dùng và quyền
4/ Cấu trúc thư mục và một số thư mục cần lưu ý
5/ Một số lệnh thao tác với thư mục, tập tin
6/ Soạn thảo cơ bản với nano
7/ Thao tác với gói phần mềm (cài đặt phần mềm, gỡ bỏ,…)
8/ Một số lệnh liên quan đến mạng

1/ Giới thiệu Linux và Raspbian

Linux là một dòng hệ điều hành máy tính dạng Unix. Năm 1991, một sinh viên người Hà Lan tên là Linus Torvalds phát triển nhân Linux đầu tiên dưới dạng mã nguồn mở, miễn phí. Có rất nhiều hệ điều hành dựa trên Linux như Redhat, Debian, Ubuntu,… và còn có nhiều biến thể khác nữa (ví dụ Android là một hệ điều hành di động dựa trên nhân Linux).

Raspbian là một hệ điều hành dựa trên Debian (một biến thể của Linux – gọi theo tiếng Anh là distro) – Raspbian là Debian được điều chỉnh để phù hợp với Raspberry PI nên tên gọi được ghép giữa Raspberry và Debian thành Raspbian.

2/ Giao diện của Raspbian

Cũng như các hệ điều hành dựa trên Linux khác, Raspbian có hai dạng giao diện: Giao diện văn bản – được gọi là Text console và giao diện đồ họa – là GUI = Graphical User Interface.

Với giao diện text console hay còn gọi là giao diện dòng lệnh, người dùng sẽ điều khiển máy qua các câu lệnh dạng văn bản tiếng Anh ví dụ: mkdir (tạo thư mục),… với chế độ này người dùng phải học thuộc câu lệnh và cách sử dụng câu lệnh đó.

rpi20

Hình: Giao diện dòng lệnh

Với giao diện đồ họa, cũng như đa số các bản Linux khác, Raspbian sử dụng X-server (X11) làm server đồ họa và dùng X11 client là LXDE (Lighweight X11 Desktop Environment). LXDE là một client đồ họa nhẹ, tiêu tốn ít năng lực của CPU và RAM.

Với LXDE, người dùng có thể điều khiển bằng bàn phím, con chuột như trên Windows (đương nhiên là thao tác có khác).

rpi21

Hình: Giao diện LXDE

Với RPI, tùy theo ứng dụng mà có thể ta rất ít làm việc trực tiếp với RPI (chỉ điều khiển từ xa) do đó khởi động RPI vào chế độ dòng lệnh giúp tiết kiệm tài nguyên (năng lực CPU, RAM).

Để kết nối từ xa tới RPI có 2 phương án:

a/ Dùng SSH: đây là dạng kết nôi vào môi trường dòng lệnh.

b/ Dùng VNC: đây là dạng kết nối vào môi trường GUI (đồ họa).

Để thiết lập 2 cách kết nối này xin xem lại bài trước.

3/ Người dùng và quyền

Người dùng

Cũng như các hệ điều hành linux khác, Raspbian là một hệ điều hành đa người dùng (multi-user) có nghĩa là mỗi người dùng máy tính cài đặt Raspbian có thể có một tài khoản người dùng trên Raspbian (user account).

Mỗi tài khoản người dùng như vậy cố một số đặc trưng như sau:

+ Có một tên người dùng (user name hay login name) duy nhất trên máy. Tên người dùng dài tối đa 8 ký tự.
+ Có một password đi kèm để bảo vệ
+ Có một thư mục riêng gọi là Home directory (nằm trong thư mục /home)
+ Có một mã định danh riêng (UID = User Identification)

Lưu ý:
+ Người có quyền cao nhất (có toàn quyền) trên hệ thống là người dùng root.
+ Chỉ người dùng root mới có thể tạo ra người dùng.

Có thể tạo người dùng bằng câu lệnh adduser. Câu lệnh sau tạo người dùng test.

rpi23

Lệnh adduser tự tạo nhóm mới cùng tên người dùng (trong hình trên là test), tự tạo thư mục riêng (home directory) cho người dùng (/home/test).

rpi22

Trong hình trên cho thấy pi là người dùng hiện thời (ta đang đăng nhập với tên pi) – trên biểu tượng thư mục pi có hình ngôi nhà và thư mục pi được đặt trên cùng trong cây thư mục.

Cũng có thể tạo người dùng bằng lệnh useradd. Câu lệnh sau tạo người dùng test và đặt primary group cho người dùng này là users.

sudo useradd test -g users

Một vài lệnh liên quan đến người dùng:

+ Tạo người dùng: useradd, adduser
+ Xóa người dùng: userdel
+ Thay đổi thông tin người dùng: usermod

Nhóm người dùng

Để dễ quản lý, Raspbian cho phép tạo các nhóm người dùng (Group). Mỗi nhóm người dùng có thể có một hay nhiều thành viên (member).

Mỗi nhóm có một số thông tin đặc trưng sau:

+ Tên nhóm duy nhất trên máy. Tên nhóm dài tối đa 8 ký tự.
+ Mã định danh riêng (GUI = Group Identification)
+ Một nhóm có thể gồm nhiều người dùng
+ Một người dùng có thể thuộc nhiều nhóm
+ Khi tạo ra một người dùng mới ta có thể chỉ rõ người dùng đó thuộc nhóm nào. Nếu không chỉ rõ người dùng mới thuộc nhóm nào, Raspbian sẽ tự tạo một nhóm có cùng tên và để người dùng mới thuộc vào nhóm đó. Nhóm mà người dùng mới thuộc vào (lần đầu khi được tạo ra) gọi là primary group.

Một vài lệnh liên quan đến nhóm người dùng:

+ Tạo nhóm: groupadd
+ Chỉnh sửa thông tin nhóm: groupmod
+ Thêm người dùng vào nhóm: usermod -a -G <groupname> username
+ Xóa nhóm: groupdel

Quyền

Mỗi người dùng có thể tạo ra một số tập tin, thư mục và khi đó họ là chủ sở hữu (owner) tập tin, thư mục đó và có toàn quyền trên tập tin, thư mục đó (trừ quyền thay đổi quyền sở hữu).

Giả sử bạn đang đăng nhập với username là pi. pi thuộc khá nhiều nhóm như pi, users, audio,… nhưng nhóm mặc định (primary group) là nhóm có cùng tên là pi. Bạn tạo một tập tin với tên là test.txt trên thư mục Desktop (đường dẫn đầy đủ của tập tin sẽ là /home/pi/Desktop/test.txt). Khi đó tập tin test.txt sẽ có owner (chủ sở hữu) là pi, nhóm sở hữu là pi.

Mỗi tập tin, thư mục có 3 đối tượng có quyền trên nó gồm: chủ sở hữu (owner), nhóm sở hữu (group) và các người dùng khác (other users).

Mỗi đối tượng đó có thể có các quyền sau: quyền đọc (read), quyền sửa nội dung (write) và quyền thực thi (execute).

– Quyền đọc (read): cho phép bạn xem (view) nội dung của tập tin. Bạn có thể copy tập tin ra nơi khác và có thể sửa nó. Đối với thư mục, quyền đọc cho phép bạn xem nội dung của thư mục.
– Quyền ghi (write): cho phép bạn thay đổi nội dung hay xóa tập tin. Đối với thư mục, quyền ghi cho phép tạo, xóa hay thay đổi tên các tập tin, thư mục con trong thư mục đó. Quyền ghi của thư mục sẽ vô hiệu hóa các quyền truy cập của tập tin trong thư mục.
– Quyền thực thi (execute): cho phép chạy chương trình.

Với lệnh ls -l ta có thể xem quyền của tập tin/thư mục:

rpi24

Trong hình trên cho biết: chủ sở hữu (owner) có toàn quyền (có cả 3 quyền rwx), trong khi nhóm sở hữu (group) và các người dùng khác không có quyền gì.

Với lệnh chmod ta có thể thay đổi quyền của tập tin/thư mục. Giả sử ta thực hiện lệnh sau (và sau đó xem quyền bằng lệnh ls – l):

chmod g+rw,o+r test.txt
ls -l test.txt

Lưu ý: đoạn g+rw,o+r không được có khoảng cách nào.

Câu lệnh chmod trên sẽ thêm quyền read và write cho group và thêm quyền read cho các người dùng khác (others), tiếp theo dùng lệnh ls – l ta sẽ thấy kết quả như sau:

rpi25

+ Các quyền có thể dùng dạng ký tự r w x hoặc dùng theo số dạng hệ bát phân (octal):
r = 4               w = 2            x = 1
+ Do đó:
rwx = 4 + 2 + 1 = 7
rw = 4 + 2 = 6
rx = 4 + 1 = 5
+ Ví dụ: sudo chmod  u=7,g=7,o=1  test.txt    hoặc  sudo chmod  771  test.txt
Lệnh trên gán quyền rwx (7) cho owner, rwx (7) cho group và quyền x (1) cho other users.

Lệnh thao tác với quyền

Xem quyền, chủ sở hữu (lưu ý phần từ dấu # trở về cuối dòng là ghi chú):

VD:

ls  -l  test.txt # Xem quyền, chủ sở hữu của file test.txt

ls -ld  videos  # Xem quyền và chủ sở hữu của thư mục videos

Đổi người dùng/nhóm chủ sở hữu (chỉ root mới có quyền đổi owner nên trước chown phải có sudo):

VD:

sudo chown  pi  test.txt # Đổi người dùng sở hữu của file test.txt thành pi

sudo chown  :minidlna test.txt # Đổi nhóm sở hữu của file test.txt thành minidlna

sudo chown pi:minidlna test.txt # Đổi người sở hữu thành pi, nhóm sở hữu thành minidlna

Lưu ý: với thư mục, thêm -R để thay đổi cho các các thư mục con

Cấp quyền cho người dùng: dấu + để thêm (giữ các quyền cũ), dấu – để bỏ (giữ các quyền khác nếu có), dấu = để gán (chỉ lấy các quyền sau dấu =). u là user owner, g là group owner, o là others tức các người dùng khác.

VD:

chmod   u=rw,g=rw,o=r   test.txt     # Cấp quyền đọc (r), ghi (w) cho user owner, rw cho group owner, r cho others

chmod   u+x,g+w,o+w   test.txt        # thêm quyền x cho user owner, w cho group owner và others

chmod   u-x    test.txt                           # Bỏ quyền x của user owner

chmod   u=rw    test.txt

4/ Cấu trúc thư mục và một số thư mục cần lưu ý

Phần này được lấy từ đây: http://kb.hostvn.net/cau-truc-cay-thu-muc-trong-linux_61.html và từ đây: http://www.gocit.vn/bai-viet/y-nghia-cua-cac-thu-muc-trong-linux/

/ – Root – Thư mục gốc

–  Mỗi tập tin đơn và thư mục được bắt đầu thư mục gốc.
–  Chỉ người dùng root mới có quyền ghi trong thư mục này.
–  Lưu ý rằng thư mục /root là thư mục của người dùng root chứ không phải là thư mục /.

/bin – Các tập tin thực thi của người dùng

–  Chứa các tập tin thực thi.
–  Các lệnh thường dùng của Linux mà bạn cần để dùng trong chế độ người dùng đơn được lưu ở đây.
–  Các lệnh được sử dụng bởi tất cả người dùng trong hệ thống được lưu ở đây. Vd : ls, nano , grep..

/sbin – Các tập tin thực thi của hệ thống

–  Cũng chứa các tập tin thực thi như /bin. Các lệnh được lưu trong thư mục này cơ bản được dùng cho quản trị viên và dùng bảo trì hệ thống.
–  Vd : iptables,  reboot, fsck..

/etc – Các tập tin cấu hình

–  Chứa các tập tin cấu hình cần thiết cho tất cả các chương trình.
–  Chứa các đoạn mã khởi động và tắt các chương trình đơn lẻ.
–  Vd:  /etc/ssh/sshd_config,  /etc/my.cnf ….

/dev – Các tập tin thiết bị

–  Chứa các tập tin thiết bị.  Nó chứa các tập tin thiết bị đầu cuối như là USB hoặc bất kỳ thiết bị nào gắn vào hệ thống.
–  Vd: /dev/sda,  dev/usbmon0..

File thiết bị

Description

/dev/console Bàn giao tiếp hệ thống, là màn hình nối kết vật lý với hệ thống
/dev/hd* Giao diện driver cho các ổ cứng IDE. Thiết bị /dev/hda1 chỉ partition đầu tiên trên ổ cứng had. Thiết bị /dev/had chỉ toàn bộ ổ cứng hda.
/dev/sd* Giao diện driver cho các ổ đĩa SCSI. Những ổ đĩa và partition này có cùng quy ước với thiết bị IDE /dev/hd*.
/dev/fd* Driver thiết bị hỗ trợ đĩa mềm. Ổ đĩa mềm đầu tiên là /dev/fd0, ổ thứ hai là /dev/fd1.
/dev/st* Driver thiết bị cho ổ cứng băng từ SCSI.
/dev/tty* Driver cung cấp nhiều loại thiết bị giao tiếp khác nhau cho user nhập liệu. Sở dĩ viết tắt là tty bởi vì trước kia các terminal dạng teletype đều móc nối với hệ điều hành UNIX. Với Linux, những tập tin này hỗ trợ các thiết bị giao tiếp ảo, mà bạn có thể truy cập bằng cách bấm từ cho đến . Thiết bị giao tiếp ảo cho phép nhiều user đăng nhập cùng lúc.
/dev/pty* Driver hỗ trợ terminal giả, dùng cho việc đăng nhập từ xa, chẳng hạn như những phiên đăng nhập qua Telnet.
/dev/ttyS* Các cổng giao diện nối tiếp trên máy bạn. File /dev/ttyS0 tương ứng COM1 của MS-DOS. Nếu bạn sử dụng chuột nối tiếp, thì file /dev/mouse là một liên kết tượng trưng, nối với thiết bị ttyS tương ứng (Chuột nối kết với thiết bị này.)
/dev/cua* Các thiết bị đặc biệt gọi ra ngoài dùng với modem
/dev/null Một thiết bị rất đặc biệt, chủ yếu là một lỗ đen. Tất cả các dữ liệu ghi vào /dev/null xem như bị mất vĩnh viễn. Việc này hữu ích khi bạn muốn chạy một câu lệnh và thủ tiêu stdout hoặc stderr. Và nếu /dev/null dùng làm file nhập, bạn sẽ tạo ra một file có độ dài zero.

/proc – Thông tin tiến trình

–  Chứa các thông tin về tiến trình của hệ thống.
–  Các tập tin tại đây chưa thông tin về các tiến trình đang chạy. Vd : /proc/ directory chứa thông tin tiến trình với pid bạn chọn.
–  Đây là các tập tin hệ thống ảo với nội đung tài nguyên hệ thống. Vd: /proc/cpuinfo, /cpu/uptime…

/var – Các tập tin biến đổi

–  Chứa các tập tin mà dung lượng lớn dần theo thời gian sư dụng.
–  Bao gồm – Các tập tin ghi chú về hệ thống (/var/log); các gói và các tập tin cơ sở dữ liệu (/var/lib); thư điện tử (/var/mail);  hàng đợi in queues (/var/spool); các tập tin khóa (/var/lock); các tập tin tạm được dùng khi khởi động lại (/var/tmp);

/lost+found – thư mục này được dùng để lưu các tập tin không có thư mục mẹ mà được tìm thấy dưới thư mục gốc (/) sau khi thực hiện lệnh kiểm tra hệ thống tập tin (fsck).

/tmp – Thư mục chưa các tập tin tạm

–  Thư mục chứa các tập tin tạm được tạo bởi hệ thống và người dùng.
– Các tập tin trong thư mục này bị xóa khi hệ thống khởi động lại.

/usr – Các chương trình của người dùng

–  Chứa các tập tin thực thi, thư viện, tài liệu và mã nguồn cho các chương trình mức độ thứ hai.
–  /usr/bin chứa các tập tin thực thi cho các chương trình của người dùng.  Nếu bạn không thể tìm thấy trong thư mục /bin thì nằm trong /usr/bin. Vd: at, awk, cc, less…
–  /usr/sbin chứa các tập tin thực thi cho quản trị hệ thống.  Nếu bạn không thể tìm thấy trong /sbin thì tìm trong /usr/sbin. Vd:  cron, sshd, useradd…
–  /usr/lib chứa các tập tin thư viện /usr/bin và  /usr/sbin
–  /usr/local chứa các chương trình của người dùng mà bạn cài từ mã nguồn . Vd : cài apache, nó được đưa vào thư muc /usr/local/apache2.

/home – Thư mục người dùng

–  Chứa các tập tin của người dùng trong hệ thống.
–  Vd: /home/hostvn, /home/bloghostvn…

/boot – Các tập tin của chương trình khởi động máy

–  Chứa những tập tin liên quan đến chương trình khởi động máy.
–  Các tập tin vmlinux, grub được lưu trong thư mục /boot
–  Vd: initrd.img-2.6.32-24-generic, vmlinuz-2.6.32-24-generic..

/lib – Các tập tin thư viện của hệ thống

–   Chứa các tập tin thư việc để hỗ trợ các tập tin thực thi trong  /bin và /sbin
–  Tên các tập tin này là ld* hoặc lib*.so*.
–  Vd: ld-2.11.1.so, libncurses.so.5.7

/opt – Các ứng dụng tùy chọn hoặc thêm

–  opt là viết tắt của optional
–  Chứa các ứng dụng thêm của các hãng khác nhau.
–  Các ứng dụng thêm nên được cài trong thư mục con của thư mục /opt/.

/mnt – Thư mục mount

–  Thư mục mount tạm thời nơi mà người quản trị hệ thống có thể mount các tập tin hệ thống.

/media – Các thiết bị tháo lắp

–  Thư mục chứa các mount tạm thời cho các thiết bị tháo lắp.
–  Vd:  /media/cdrom cho CD-ROM; /media/floppy cho ổ đĩa mềm; /media/cdrecorder cho ổ đĩa ghi CD.

/srv – Dữ liệu dịch vụ

–  Srv là viết tắt của service
–  Chứa cấc dữ liệu liên quan tới các dịch vụ trên máy chủ.

5/ Một số lệnh thao tác với thư mục, tập tin

+ Chuyển thư mục: cd  tênthưmục
+ Xem thư mục hiện tại: pwd
+ Xóa thư mục: rmdir  tênthưmục
+ Tạo thư mục: mkdir  tênthưmục

+ Xem nội dung tập tin: cat  tênfile
+ Xóa tập tin: rm  tênfile
+ Sao chép tập tin: cp   tênfile   đích

6/ Soạn thảo cơ bản với nano

nano là một trong số rất nhiều trình soạn thảo trên linux. Ngoài nano, vi, vim,… là những trình soạn thảo rất nổi tiếng trên Linux. Trên raspbian chỉ có vi, nano nhưng nano tiện dụng hơn cho những người mới và đặc biệt là những người chuyển từ nền tảng Windows sang (như tôi).

Mở file để soạn thảo: nano TênFile


nano  /home/pi/Desktop/test.txt

Màn hình nano sẽ như sau:

rpi26

Trong nano, để lưu và đóng: Ctrl X Y Enter

7/ Thao tác với gói phần mềm (cài đặt phần mềm, gỡ bỏ,…)

sudo apt-get install têngói: cài đặt gói phần mềm

Ví dụ: cài đặt phần mềm mc (phần mềm cho phép thao tác với tập tin, thư mục dễ dàng hơn so với dùng lệnh):


sudo apt-get install mc

rpi27

Ssau khi cài đặt thành công, khi đó có thể chạy mc:

 mc

Màn hình mc trông như sau:

rpi28

Nếu bạn nào đã từng sử dụng Norton Command trên Ms-DOS thì thấy mc trông khá quen thuộc!

sudo apt-get install –reinstall têngói: càilại gói phần mềm

sudo apt-get remove têngói: bỏ gói nhưng vẫn giữ thông tin cấu hình

sudo apt-get purge têngói: bỏ hoàn toàn gói

sudo apt-get clean dọn các gói deb

8/ Một số lệnh liên quan đến mạng

Trong linux, card mạng dây được ký hiệu là eth0, eth1,…, WIFI ký hiệu là wlan0, wlan1,…

+ Xem cấu hình mạng: ifconfig. Cấu hình có dạng như sau:

rpi29

+ Xem cấu hình mạng không dây: iwconfig

+ Đặt ip tĩnh cho card mạng:


sudo nano /etc/network/interfaces

Cấu hình có dạng sau:


iface eth0 inet static
 address 192.168.1.5
 netmask 255.255.255.0
 gateway 192.168.1.1

allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa.conf

Dòng iface eth0 init static để xác định đặt IP tĩnh cho card mạng dây đầu tiên (eth0). Ba dòng kế tiếp xác định thông tin cho card mạng eth0 gồm.

Dòng allow-hotplug wlan0 để xác định cho phép gắn nóng (khi RPI đang chạy) card mạng không dây đầu tiên (wlan0).

Dòng auto wlan0 cho phép WLAN khi khởi động.

Dòng iface wlan0 init dhcp để xác định đặt IP động cho card mạng không dây đầu tiên (wlan0).

Dòng wpa-conf /etc/wpa.conf để xác định định file cấu hình WPA client là file /etc/wpa.conf

Thông thườngta dùng file cấu hình mạng như sau:


iface eth0 inet dhcp

allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa.conf

File cấu hình trên cho phép dùng IP động cho cả LAN và WLAN, và có thể gắn nóng WLAN (dùng WIFI gắn qua USB).
Để có thể dùng WPA cần cài đặt WPA client:

sudo apt-get install wpasupplicant

Phần cấu hình mạng sẽ trình bày thêm trong phần sau!

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

Information

This entry was posted on 15/06/2015 by in Raspberry PI and tagged , .

Điều hướng

%d bloggers like this: