BAB II
PENGENALAN LINGKUNGAN SISTEM OPERASI LINUX 2.1 Kebutuhan
Untuk melaksanakan kegiatan praktikum pada bab 2, diperlukan sebuah sistem operasi yang di
dalamnya terdapat sebuah BASH (Bourne Again Shell).
CLI adalah antarmuka yang tidak menyediakan grafik, baik berupa gambar
gambar, jendela-jendela ataupun animasi-animasi yang bisa memanjakan pengguna, melainkan
hanya berupa teks yang harus diketikkan oleh pengguna. Pada bagian ini akan dikenalkan
beberapa perintah dasar Linux yang diperlukan dalam kehidupan sehari-hari, bahkan untuk
proses administratif. Materi yang disajikan juga untuk mendukung kegiatan praktikum pada bab
selanjutnya. Materi-materi tersebut meliputi:
Membuat User
Untuk membuat user dan group hanya dapat dilakukan oleh super user “root”. Perintah untuk
membuat user baru adalah :
#useradd nama_user
#adduser nama_user
Menghapus User
Atau
# userdel –r nama_user
Membuat Group
Group adalah gabungan dari beberapa user membentuk suatu kelompok. User-user yang
tergabung dalam satu group dapat saling berbagi file.
File merupakan koleksi dari data yang disimpan di dalam disk dan dapat
dimanipulasi sebagai suatu unit sesuai dengan namanya. Sedangkan directories
atau direktori adalah sebuah file yang bertindak sebagai folder untuk file lain. Sebuah
direktori juga berisi direktori lain(subdirektori). Sebuah direktori yang berisi direktori lain
disebut direktori parent. Sebuah directory tree termasuk sebuah direktori dan semua file
di dalamnya. Sebuah karakter slash (‘/’) adalah nama dari root directory.
Sebuah file dapat terdiri dari huruf besar dan huruf kecil, nomor, titik (.), tanda penghubung(-) dan
tanda garis bawah (_). Sebuah nama dari file juga mengandung case sensitive. ‘sisop’ , ‘Sisop’ dan
‘SISOP’ merupakan nama yang berbeda.
Linux juga tidak membatasi dalam ekstensi sebuah file, tapi akan sangat baik dan berguna jika
memberikan ekstensi yang sesuai untuk mengidentifikasi tipe file dengan sekali lihat. Nama file sebelum
ekstensi disebut dengan base file name. sebagai contoh base file name dari ‘sisop.txt’ adalah sisop.
● Membuat File
Syntax :
$ touch sisop
Syntax :
$ touch home/praktikum/sisop
● Membuat Direktori
Gunakan perintah ‘mkdir’ untuk membuat sebuah direktori baru, berikan pathname
untuk direktori baru sebagai argumen.
Syntax :
$ mkdir sisop
Untuk membuat folder ‘sisop’ di dalam direktori ‘/tmp’ subdirektori dari direktori tersebut
Syntax :
$ mkdir /tmp/sisop
● Berpindah Direktori
$ cd [alamat_direktori]
Contoh : $ cd /var/www
Untuk memperlihatkan di direktori mana posisi kita berada sekarang digunakan perintah
Laporan Praktikum Sistem Operasi – (nama) – (nim) 5
LAPORAN PRAKTIKUM SISTEM OPERASI
FAKULTAS ILMU KOMPUTER – UNIVERSITAS BRAWIJAYA
Syntax :
$ pwd
● List Directory
Perintah ini berfungsi untuk menampilkan isi dari suatu direktori beserta atribut file- nya.
Syntax :
$ ls [option]
OPTION FUNGSI
bila Anda ingin menampilkan semua file dan folder, termasuk file dan folder yang
tersembunyi
-a
Contoh : $ ls –l
● Copy Berkas
Syntax :
$ cp /[direktori]/[file_yang_ingin_dicopy] /[direktori tujuan]
● Memindah Berkas
Syntax :
$ mv /[direktori]/[file_yang_ingin_dicut] /[direktori tujuan] (cut) $ mv
/[direktori]/[file_yang_ingin_direname] /[nama_baru_file] (rename)
Contoh : $ mv /etc/file1.txt /var/www
$ mv /etc/file1.txt file2.txt
● Menghapus File
Syntax :
$ rm [nama_file]
Contoh : $ rm file1.txt
● Menghapus Direktori
Syntax :
$ rmdir [nama_file]
Syntax :
$ rm –rf [nama_direktori]
Syntax :
$ more [nama_file]
Ketika sebuah file atau direktori dibuat, maka file atau direktori tersebut
kepemilikannya akan melekat pada suatu user dan group tertentu. Selain itu pada file
tersebut akan melekat juga tiga hak akses yang berbeda, yaitu baca (read), tulis (write),
dan eksekusi (execute), terhadap pemilik, grup, atau user
lain. Hak akses tersebut dapat diubah oleh root atau user yang memilikinya. Mekanisme
kepemilikan dan akses file tersebut sangat penting, karena Linux bersifat multiuser,
sehingga harus ada mekanisme untuk mencegah akses-akses ilegal terhadap file.
Secara umum pengaturan hak akses atas file atau direktori mempunyai prinsip sebagai
berikut:
● Setiap file selalu dimiliki oleh seorang yang berhak mengatur hak akses terhadap
file tersebut.
● Hak akses terbagi menjadi 3 bagian: Read, Write, dan Execute.
● Hak akses dapat diberikan kepada 3 kelompok pemakai, yaitu pemilik file (Owner),
grup pemilik file (Group), dan pemakai lainnya (Other).
Hak akses
● read : r
● write : w
● execute : x
Kelompok pemakai
Kemudian tanda (+) untuk menandakan pemberian hak akses, sedangkan tanda (-) untuk
menandakan penghapusan hak akses. Perhatikan perintah berikut ini:
# chmod go+w nama_file.txt
Untuk mengubah hak akses sebuah file atau direktori hanya bisa dilakukan oleh user root. Contoh
berikut menunjukkan agar group (g) dan other (o) bisa menulis (w). Selain menggunakan kombinasi
huruf, hak akses file atau direktori dapat dilakukan dengan kombinasi bilangan numerik, yaitu 0 sampai
7.
Untuk merubah kepemilikan file atau direktori baik user maupun grup gunakan perintah chown dan
chgrp, kepemilikan file ini terkadang perlu dilakukan dengan alasan keamanan.
# chown [nama pemilik baru] [nama directory/nama file]
Begitu juga nama group pada sebuah file juga dapat kita ubah, untuk mengubahnya kita bisa
menggunakan chgrp.
# chgrgp [nama group baru] [nama direktory/ nama file
Contoh :
-rw-rw-r--
1 bin auth
1639
Pemilik
Jml karakter
Waktu
Jml link
Ijin akses Nama file
Group
tipe
other
group
user
Format untuk mengubah ijin akses :
chmod [ugoa] [= + -] [rwx] File(s)
Dimana:
u = user (pemilik)
g = group (kelompok)
o = other (lainnya)
a = all
Format lain dari chmod adalah menggunakan bilangan biner sebagai berikut
chmod [Angka_ijin] File(s)
1 0 1 = 5
r w x
Note : angka 0 diberikan apabila kita tidak memberikan izin sedangkan angka 1 diberikan apabila
diberikan izin.
Contoh :
Ada file dengan nama file.txt dimana untuk ijin aksesnya owner diberi seluruh akses, group hanya
baca, other tidak ada akses sama sekali. Bagaimanakah format yang digunakan untuk mengubah ijin
akses dari file.txt tersebut?
Jawab :
u=rwx=111=7
g=rwx=100=4
o=rwx=000=0
# Apakah ada cara lain untuk mengganti hak izin akses file selain dengan menggunakan mode
biner dan alfabet? jika ada jelaskan!
4. "o=w" berarti mengatur hak akses write (w) untuk pengguna lain selain
pemilik dan grup (others).
5. "coba1" adalah nama file yang akan diubah hak aksesnya. Dengan perintah
tersebut, hak akses pada file "coba1" akan diubah sesuai dengan mode yang
diatur. Mode yang diatur adalah "u-x,g+r,o=w", yang berarti:
1. Pemilik file (user) kehilangan hak akses write pada file "coba1". 2. Grup
pemilik file (group) mendapatkan hak akses read pada file "coba1". 3.
Pengguna lain selain pemilik dan grup (others) mendapatkan hak akses write
pada file "coba1".
Pemilik sebuah file atau direktori dapat diganti menjadi user yang lain yang kita inginkan.
Untuk menggantinya digunakan perintah chown.
Syntax:
# chown [option] [pemilik_baru] [nama_file/direktori]
Begitu juga nama group pada sebuah file juga dapat kita ubah, untuk mengubahnya kita bisa
menggunakan perintah chgrp.
Syntax:
# chgrp [option] [group_pengganti] [nama_file/direktori]
Proses pada Linux merupakan aktifitas permintaan user terhadap sistem operasi. Model proses
pada Linux mirip dengan UNIX, dimana prinsip dasar keduanya menggunakan fungsi fork() dan exec().
fork() digunakan untuk membuat proses baru sedangkan exec() digunakan untuk memanggil program.
Kedua pendekatan di atas merupakan dua hal yang berbeda, dimana proses (child) bisa
diciptakan tanpa membuka program baru, dan secara sederhana akan meneruskan program awal
(parent) untuk mengeksekusi perintah yang sama pada program awal.
Untuk membuat proses baru, bisa dengan mengetikan perintah langsung pada shell Linux.
Tipe Proses
Terdapat beberapa tipe proses yang dikenal dalam OS berbasis Linux pada umumnya, antara
lain:
● Interactive : proses yang dimulai (dan dikontrol oleh) shell. Bisa tampak di luar (foreground) ataupun
hanya di dalam (background).
● Batch : proses yang tidak berhubungan dengan terminal, tetapi menunggu untuk dieksekusi secara
berurutan (sekuensial).
● Daemon : proses yang dimulai ketika Linux booting dan berjalan secara background. Proses ini
menunggu permintaan dari proses lainnya, bila tidak ada request, maka berada dalam keadaan
‘idle’.
Process Environment
Pada sistem operasi Linux process environment terdiri dari dua komponen, argumen dan
environment. Argumen adalah daftar opsi tambahan pada CLI yang berkaitan dengan perilaku
program ketika dijalankan, sedangkan environment adalah daftar parameter, baik berupa variabel,
direktori home yang secara tekstual dibutuhkan oleh program. Environment
variable biasanya terdiri dari beberapa informasi seperti:
# Apa perintah yang seharusnya Anda tulis agar menampilkan hasil output seperti di atas?
Opsi a memberitahu perintah ps untuk menampilkan proses semua user. Hanya proses
yang tidak terkait dengan terminal dan proses group tidak ditampilkan.
Opsi u adalah singkatan untuk format yang berorientasi pada user, dan memberikan
informasi terperinci tentang proses yang berjalan.
Opsi x menginstruksikan ps untuk membuat daftar proses tanpa terminal. Opsi ini
menampilkan proses yang berjalan ketika boot dan berjalan di background.
Opsi a memberitahu perintah ps untuk menampilkan proses semua user. Hanya proses
yang tidak terkait dengan terminal dan proses group tidak ditampilkan.
Opsi u adalah singkatan untuk format yang berorientasi pada user, dan memberikan
informasi terperinci tentang proses yang berjalan.
Opsi x menginstruksikan ps untuk membuat daftar proses tanpa terminal. Opsi ini
menampilkan proses yang berjalan ketika boot dan berjalan di background.
# Apa perintah yang seharusnya Anda tulis agar menampilkan hasil output seperti di atas?
Perintah ps
# Dan perintah apa yang berfungsi menampilkan semua proses dalam format sesuai definisi user
yaitu terdiri dari kolom PID dan CMD.?
Perintah ps -efo pid, comm
Perintah ps auxo pid, comm
Karena pada opsi o memungkinkan untuk user menentukan kolom mana yang
ditampilkan saat menjalankan perintah ps.
# Pada poin ketiga ini, Anda dapat menggunakan perintah seperti di bawah ini : ps -U root
-u root -N
1 ? Ss 0:01 /sbin/init
2 ? S 0:00 [kthreadd]
9 ? S 0:05 [ksoftirqd/0]
10 ? I 0:05 [rcu_sched]
11 ? S 0:03 [migration/0]
13 ? S 0:00 [cpuhp/1]
14 ? S 0:01 [migration/1]
15 ? S 0:06 [ksoftirqd/1]
16 ? I 0:02 [kworker/1:0-crypto]
# Untuk menjalankan fungsi pada poin empat, Anda dapat menggunakan perintah seperti di
bawah ini :
ps -u <user>
1011 ? 00:00:00 ps
# Untuk menjalankan fungsi pada poin lima, Anda dapat menggunakan perintah seperti di bawah
ini :
pstree
Controlling Proses
Dalam sistem operasi Linux semua proses dikontrol oleh shell yaitu sebuah antar muka antara
sistem operasi dengan user.
Sebagai contohnya kita akan mengirim output yang tidak akan pernah selesai. Dengan
menggunakan sintak sebagai berikut :
$yes
#Bagaimana cara agar perintah $yes tetap dijalankan tetapi shell tetap digunakan untuk hal yang
lain ?
Hasil output:
Untuk menjalankan perintah yes di latar belakang, jalankan perintah seperti
PERINTAH KILL
Perintah kill adalah salah satu perintah dasar Linux yang digunakan untuk menghentikan atau
mematikan proses yang sedang berjalan pada Sistem Operasi Linux /
UNIX. perintah ini sangat penting karena dengan memahami perintah ini kita bisa mengetahui mana
proses yang mengganggu performa, tidak dibutuhkan, dll.
# PID adalah nomor proses yang akan di hentikan. Tidak tahu PID proses mana yang akan
dihentikan? Cobalah bereksperimen dengan perintah:
Daemons
Daemons adalah sebuah proses yang bekerja pada background karena proses ini tidak memiliki
terminal pengontrol. Dalam sistem operasi Windows biasanya lebih dikenal dengan sebutan service.
Daemon adalah sebuah proses yang didesain supaya proses tersebut tidak mendapatkan intervensi
dari user. Daemon biasanya bekerja dalam jangka waktu yang sangat lama dan bertugas menerima
request dan menjalankan responnya.
# Apa yang membedakan Daemons dengan proses lain ?
Forking dan pembunuhan Proses induk.
Daemon dirancang untuk berjalan di latar belakang dan memproses permintaan
yang masuk secara terus-menerus, sementara proses biasa dijalankan sebagai
bagian dari aplikasi atau layanan yang sedang berjalan dan biasanya memiliki
siklus hidup yang lebih singkat.
Langkah pertama dari pembuatan daemon adalah dengan men-spawn proses menjadi induk dan
anak dengan melakukan forking, kemudian membunuh proses induk. Proses induk yang mati akan
menyebabkan sistem operasi mengira bahwa proses telah selesai sehingga akan kembali ke terminal
user.
# Contoh Script :
pid_t pid, sid;
pid=fork();
exit(EXIT_SUCCESS);
} //jika pembuatan proses berhasil, maka parent proses
akan dimatikan
# Contoh Script:
sid = setsid();
if(sid<0){
exit(EXIT_FAILURE);
}
● Menutup standar I/O descriptor yang diwarisi
Untuk mencegah terjadinya intervensi dari user serta untuk pengamanan, maka standar I/O
descriptor dan descriptor yang diwarisi dari proses induk harus ditutup. Ada 3 jenis standar I/O
descriptor : STDIN (standar input), STDOUT (standar output), STDERR (standar error).
# Contoh Script:
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
Sebagian besar daemon bekerja dalam previlege super user. Daemon biasanya memproteksi
setiap file yang dibuat, dengan alasan keamanan. Fungsi umask() akan mencegah file-file previleges
yang tidak aman dalam setiap pembuatan file.
# Contoh Script:
pid_t pid,sid;
pid=fork();
if(pid < 0)
{
exit(EXIT_FAILURE);
}
if(pid > 0)
{
exit(EXIT_SUCCESS);
}
umask(0);
● Running Directory
Directory kerja daemon haruslah sebuah directory yang selalu hidup. Bisa saja pada saat
starting working directory-nya pada saat itu berada pada user home. Karena daemon bekerja
sampai sistem reboot, maka file sistem user directorynya tidak akan pernah bisa di unmount.
# Contoh Script :
sid = setsid();
if(sid < 0)
{
exit(EXIT_FAILURE);
}
if((chdir(“/home/assassin/modul2/shift2.1/”)) < 0)
{
exit(EXIT_FAILURE);
}
● Mendengarkan signal
# Tulislah pada kolom di bawah ini, apakah maksud dari proses ini?
Jika nilai sid dan atau (chdir(“/home/assassin/modul2/shift2.1/”)) kurang dari 0, maka akan
keluar sebagai Failure/gagal .
● Logging
# Sebutkan beberapa cara untuk melakukan proses logging dan berikan penjelasan!
1. Logging pada level aplikasi: pada level aplikasi, proses logging dapat
dilakukan dengan menambahkan perintah atau kode untuk mencatat
aktivitas atau kejadian penting pada aplikasi. Setiap kali kejadian tersebut
terjadi, log akan dicatat dalam file log khusus.
2. Logging pada level sistem operasi: pada level sistem operasi, proses
logging dapat dilakukan dengan menggunakan utilitas log sistem operasi.
Sistem operasi seperti Linux atau Windows memiliki utilitas logging bawaan
yang dapat digunakan untuk merekam aktivitas sistem, seperti pengguna
yang masuk atau keluar, aktivitas jaringan, kesalahan aplikasi, dan
sebagainya.
3. Logging pada level jaringan: pada level jaringan, proses logging dapat
dilakukan dengan menggunakan perangkat lunak pihak ketiga yang
dirancang khusus untuk memantau aktivitas jaringan. Beberapa
perangkat lunak jaringan populer seperti Nagios, Cacti, atau Zabbix dapat
digunakan untuk memonitor jaringan dan merekam aktivitas yang terjadi
di dalamnya.
4. Logging pada level server: pada level server, proses logging dapat
dilakukan dengan menggunakan perangkat lunak pihak ketiga yang
dirancang khusus untuk memantau server. Beberapa perangkat lunak
server populer seperti Apache, Nginx, atau Tomcat memiliki fitur logging
bawaan yang dapat digunakan untuk merekam aktivitas server.
Shell disebut juga dengan command interpreteur language, artinya shell adalah bahasa yang
menerjemahkan perintah yang menjadi penghubung secara langsung atau antar muka antara user
dengan utilitas & bahasa pemrograman dari sistem operasi itu sendiri. Contohnya pada saat kita
mengetikkan perintah “ls” di terminal, shell akan menjalankan perintah tersebut dengan mengeksekusi
program “ls” yang ada pada sistem operasi. Jika kita mengetikkan perintah yang tidak memiliki program
di dalam sistem operasi, misal kita mengetikkan “hello” saja pada terminal, maka shell tidak akan
mengeksekusi program apapun, dan biasanya akan muncul pesan “command not found”.
# Bagaimana cara menampilkan shell yang tersedia di linux anda? Tunjukkan screenshot!
1. Macam-macam Shell
Shell sendiri terdiri dari berbagai macam dengan kelebihan dan kekurangan masing
masing. Untuk melihat langsung shell apa saja yang ada di inux bisa dengan menggunakan
perintah $ls /etc/shells kemudian enter. Berikut adalah beberapa contoh macam shell yang digunakan
pada Linux:
Tenec C
TCSH adalah Shell pengembangan dari
Shell (/bin/tcsh) Korn Shell
UNIX C Shell
Linux menggunakan bash sebagai shell default, tetapi pengguna bisa mengubah shell default
untuk tiap user-nya. Untuk melihat shell yang sedang digunakan oleh user bisa dilihat pada file:
/etc/passwd
.................................
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
.................................
Isi dari file tersebut tiap barisnya dibagi menjadi tujuh bagian, dan setiap terakhir
digunakan untuk mendefinisikan shell yang digunakan. Dalam contoh di atas user root
menggunakan shell Bash sedangkan daemon menggunakan shell bourne shell.
Cara lain yang bisa digunakan untuk melihat shell adalah dengan melihat environmet user
dengan menjalankan perintah env. Environment user merupakan lingkungan user yang berisi semua
variabel atau ketentuan khusus untuk user tersebut.
$env
...........
SHELL=/bin/bash
..............
● Mengganti Shell
Ada beberapa cara yang dapat digunakan untuk mengubah shell default, yaitu dengan utilitas
userconf, atau dapat juga dengan mengubah pada file /etc/passwd tersebut tetapi harus sebagai root.
● Menjalankan Shell
Sebuah shell dapat dijalankan tanpa harus mengubah default shell-nya. Cara yang digunakan
adalah dengan memanggil nama shell pada command prompt. Misalnya, user akan menggunakan
shell sh, user tinggal menjalankan shell sh, user tinggal menjalankan sh sehingga prompt akan
berubah sesuai dengan promt Bourne shell.
Untuk keluar dan kembali ke shell default, ketik exit atau tekan Ctrl + d. Contoh :
bash@praktikum:~$ sh
$
$ exit
Mengatur PATH di bash, ksh atau csh adalah satu dan sama.
Syntax:
$ PATH=$PATH:folder_baru_yang_mengandung_binari
Contoh : $ PATH=$PATH:/usr/share/java
export PATH=$PATH:/user/share/java
di dalam file ~/.profile atau ~/.bashrc agar dapat digunakan secara permanen.
Setelah diset, kita perlu menambahkan perintah source di terminal agar PATH menjadi tersedia
dan dapat digunakan.
Sebuah sistem yang besar dan kompleks seperti sistem operasi modern harus diatur dengan
cara membagi tugas ke dalam beberapa komponen-komponen kecil agar dapat berfungsi dengan baik
dan mudah dimodifikasi. Ada beberapa jenis struktur pembagian komponen sistem operasi antara lain :
a. Struktur Sederhana
b. Struktur Lapisan
c. Struktur Monolitik
d. Struktur Microkernel
e. Struktur Modular
Struktur Sederhana
Ada sejumlah sistem komersial yang tidak memiliki struktur yang cukup baik. Sistem operasi
tersebut sangat kecil, sederhana dan memiliki banyak keterbatasan. Salah satu contoh sistem tersebut
adalah MS-DOS. MS-DOS dirancang oleh orang-orang yang tidak memikirkan akan kepopuleran
software tersebut. Sistem operasi tersebut terbatas pada perangkat keras sehingga tidak terbagi
menjadi modul-modul. Meskipun MS-DOS mempunyai beberapa struktur, antarmuka dan tingkatan
fungsionalitas tidak terpisah secara baik.
B. Struktur Monolitik
Pada perkembangannya, mulai terjadi pemisahan struktur sistem operasi yaitu antara bagian
kernel dan program sistem. Kernel berada di bawah tingkat antarmuka system call dan di atas
perangkat lunak secara fisik. Kernel ini berisi system file, penjadwalan CPU, manajemen memori, dan
fungsi sistem operasi lainnya yang ada pada sistem call berupa sejumlah fungsi yang besar pada satu
level. Program sistem meminta bantuan kernel untuk memanggil fungsi
fungsi dalam kompilasi dan manipulasi file. Salah satu contoh sistem operasi dengan struktur monolitik
adalah sistem operasi UNIX generasi awal.
C. Struktur Lapisan
Sistem operasi dibagi menjadi sejumlah lapisan yang masing-masing dibangun di atas lapisan yang
lebih rendah. Lapisan yang lebih rendah menyediakan layanan untuk lapisan yang lebih tinggi. Lapisan
yang paling bawah adalah perangkat keras, dan yang paling tinggi adalah User-Interface.
D. Struktur Microkernel
Metode ini menyusun sistem operasi dengan mengeluarkan semua komponen yang tidak esensial
dari kernel, dan mengimplementasikannya sebagai program sistem dan level pengguna. Hasilnya
kernel yang lebih kecil. Pada umumnya mikrokernel mendukung proses dan manajemen memori yang
minimal, sebagai tambahan untuk fasilitas komunikasi.
E. Struktur Modular
Pada struktur modular, kernel hanya menyediakan layanan inti dari sistem operasi sedangkan
layanan lain diimplementasikan secara dinamis ketika kernel sedang berjalan. Sebagai contoh, layanan
inti seperti penjadwalan CPU dan manajemen memori ditangani langsung oleh kernel, sedangkan
layanan-layanan yang lain seperti dukungan untuk beragam jenis file system dilakukan pada modul-
modul yang dapat dipasang dan dilepas saat kernel utama berjalan. Modul-modul tersebut dikenal
dengan istilah loadable kernel module.
Salah satu contoh sistem operasi yang memakai pendekatan struktur modular adalah Linux. Salah
satu contoh kernel module di Linux adalah modul ath3k, ath9k yang berfungsi sebagai device driver
untuk perangkat wifi dengan chipset Atheros. Pada bagian selanjutnya, akan disajikan contoh kode
kernel module sederhana dalam bahasa C beserta cara kompilasi dan pemasangannya.
Pada bagian ini akan dijelaskan mengenai tahapan kompilasi dan pemasangan sebuah kernel
module sederhana.
1. Sebelum melakukan kompilasi kernel module, terlebih dahulu kita harus memasang paket yang
dibutuhkan antara lain: library header sesuai versi kernel Linux, gcc (GNU C Compiler) dan make
dengan perintah :
sudo apt-get install linux-headers-general make gcc
2. Buat file hello.c dengan editor favorit Anda dengan isi sebagai berikut hello.c
#include <linux/module.h> /* Needed by all modules */ #include
module_init(hello_start);
module_exit(hello_end);
Pada kode hello.c tersebut terdapat dua fungsi callback yang dipanggil yaitu module_init() dan
module_exit(). Fungsi callback module_init() akan dipanggil ketika kernel module dipasang.
Selanjutnya, fungsi hello_start() sebagai parameter dari module_init() akan dieksekusi. Pada
hello_start() dilakukan pencetakan string dengan fungsi printk(). Prosedur yang sama berlaku
untuk fungsi module_exit() yang dipanggil ketika sebuah kernel module dilepas.
3. Buat sebuah file bernama Makefile di direktori yang sama dengan hello.c. Makefile berisi informasi
source code mana yang akan dikompilasi, lokasi library yang dibutuhkan dan juga output dari
proses kompilasi. Berikut isi Makefile:
Makefile
obj-m = hello.o
all:
$ make
5. Pada direktori tersebut akan muncul file baru yaitu hello.ko. File tersebut adalah file executable dari
kernel module yang kita buat.
7. Cek apakah kernel module berhasil dipasang dengan perintah lsmod. Jika sudah terpasang dengan
benar, maka nama kernel module hello akan ada pada daftar modul yang terpasang.
8. Cek output dari kernel module setelah dipasang dengan perintah dmesg.
9. Untuk melepas kernel module hello yang sudah terpasang tadi, kita dapat memakai perintah:
$ sudo rmmod hello
10. Cek output dari kernel module setelah dilepas dengan perintah dmesg.
2.4 Latihan Soal
Direktori Deskripsi
/bin
/dev
/etc
/home
/lib
/proc
/root
/sbin
/tmp
/usr
/var
2 Buatlah file dengan nama coba2.txt lalu ubahlah ijin aksesnya dengan 2 cara yaitu biner & alfabet,
dimana owner ijin hanya read, group hanya execute, dan other tidak ada akses sama sekali.
(Sertakan Screenshot)
3 Saya mempunyai script yang berada di /home/sisop/script. Saya ingin mengeksekusi script saya tanpa
menjalankan sh atau bash. Bagaimanakah caranya?
4 Buatlah 2 groups dengan nama parent dan children dan buatlah user baru untuk masing masing
groups lalu susunlah groups dan user tersebut sehingga pengelompokannya menjadi seperti ini:
Parent Children
Joni Ana
Sertakan Screenshot!
5. Hapuslah user yang telah kalian buat (min 2) beserta home directory-nya!
6. Buatlah perintah untuk menghitung perkalian aritmatika dengan menggunakan variabel inputan!
2.5 Kesimpulan
1. Jelaskan pengertian dari CLI beserta kelebihan dan kekurangannya!