Anda di halaman 1dari 26

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).

2.2 Tujuan Praktikum

1. Mengenalkan struktur sistem operasi


2. Mengenalkan antarmuka dalam sistem operasi, yaitu command line interface
3. Mengenalkan perintah-perintah dasar Linux yang umum digunakan
4. Mengenalkan lingkungan sistem operasi
5. Memberikan bekal kepada praktikan sebelum melanjutkan ke materi lebih
lanjut.
6. Praktikan mengerti dan mampu berinteraksi dengan shell
7. Praktikan mampu membuat program sederhana dengan shell
8. Praktikan mengerti absolute dan relative path
9. Praktikan mengerti proses pemasangan modul

2.3 Materi Praktikum

2.3.1 Command Line Interface

CLI adalah antar muka 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:

A. Manajemen User dan Group

Pada sistem operasi yang mendukung banyak pengguna/multiuser Linux


menyediakan konsep pengaturan user yang sederhana. Untuk dapat menambah,
menghapus, ataupun mengelompokkan user/group baru harus login sebagai root (#),
jadi seorang ‘user/group’ tidak dapat memodifikasi user/group lain. Perintah-perintah
yang digunakan untuk memanajemen user dan group:

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

Untuk mengubah password :

#passwd nama_user

Menghapus User

Untuk menghapus user jalankan perintah berikut ini :

#userdel nama_user

Atau

# userdel –r nama_user

Jelaskan perbedaan dari kedua syntax diatas :

Membuat Group

Group adalah gabungan dari beberapa user membentuk suatu kelompok. User-
user yang tergabung dalam satu group dapat saling berbagi file.

 Berikut syntax untuk menambah group:

#groupadd nama_group

 Memberikan password group:

#gpasswd nama_group

 Perintah untuk menghapus group:

#groupdel nama_group

B. File dan direktori

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.

Operasi pada file

 Menamakan Files Dan Directories

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

Untuk membuat file ‘sisop’ di direktori terkini

Syntax :

$ touch sisop

Untuk membuat file ‘sisop’ di dalam direktori ‘home/praktikum’ subdirektori dari


direktori tersebut

Syntax :

$ touch home/praktikum/sisop

 Membuat Direktori

Gunakan perintah ‘mkdir’ untuk membuat sebuah direktori baru, berikan path
name untuk direktori baru sebagai argumen.

Untuk membuat folder ‘sisop’ di direktori terkini.

Syntax :

$ mkdir sisop

Untuk membuat folder ‘sisop’ di dalam direktori ‘/tmp’ subdirektori dari direktori
tersebut
Syntax :

$ mkdir/tmp/sisop

 Berpindah Direktori

Gunakan perintah cd untuk berpindah direktori dari direktori sebelumnya.

Syntax :

$ cd [alamat_direktori]

Contoh : $ cd /var/www

Untuk Berpindah direktori ke direktori diatasnya (parent) gunakan perintah

$ cd ..

 Mendapatkan Nama Direktori Terkini

Untuk memperlihatkan di direktori mana posisi kita berada sekarang digunakan


perintah

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
-a folder yang tersembunyi

-A sama dengan -a, tetapi tidak menampilkan direktori. dan ..

-C menampilkan direktori dengan output berbentuk kolom


-d menampilkan direktori saja, isi direktori tidak ditampilkan

-f menampilkan isi direktori tanpa diurutkan


menampilkan isi direktori secara lengkap, mulai dari hak akses,
-l owner, group dan tanggal file atau direktori tersebut dibuat

-1 menampilkan isi direktori dengan format satu direktori per baris

Contoh : $ ls –l

 Copy Berkas

Digunakan untuk melakukan copy file.

Syntax :

$ cp /[direktori]/[file_yang_ingin_dicopy] /[direktori tujuan]

Contoh : $ cp /etc/file1.txt /var/www

 Memindah Berkas

Digunakan untuk melakukan memindahkan, cut atau rename file.

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

Digunakan untuk menghapus file.

Syntax :

$ rm [nama_file]

Contoh : $ rm file1.txt

 Menghapus Direktori
Syntax :

$ rmdir [nama_file]

Contoh : $ rmdir coba

 Menghapus Direktori yang di Dalamnya Terdapat File

Syntax :

$ rm –rf [nama_direktori]

Contoh : $ rm –rf coba

 Menampilkan Isi Sebuah File

Syntax :

$ more [nama_file]

Contoh : $ more file1.txt

C. Kepemilikan File dan Hak Akses

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

 User pemilik (Owner) :u


 Group :g
 User lain :o

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 2008-08-31 20:19 File.txt

Pemilik Jml karakter Waktu


Jml link
Group Nama file
Ijin akses
tipe

Pemilik file/direktori dapat mengubah ijin akses sebagai berikut :

-rwxrwxrwx 1 student test 1639 2001-08-31 20:19 file.txt

other
group
user
Format untuk mengubah ijin akses :

chmod [ugoa] [= + -] [rwx] File(s)

chmod [ugoa] [= + -] [rwx] Dir(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)

chmod [Angka_Ijin] Dir(s)

1 0 1 = 5
r w x

Note : angka 0 diberikan apabila kita tidak memberikan ijin sedangkan angka 1
diberikan apabila diberikan ijin.

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

jadi formatnya adalah : $ chmod 740 file.txt

# Apakah ada cara lain untuk mengganti hak ijin akses file selain dengan
menggunakan mode biner dan alfabet? jika ada jelaskan!
# Buatlah file dengan nama coba1 lalu ubahlah hak ijin aksesnya dengan
$chmod u-x,g+r,o=w coba1. Jelaskan proses perintah tersebut!

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]

Untuk keamanan dan privasi, setiap file di Linux memiliki identitas


kepemilikan(ownership). Dengan adanya identitas ini maka akan jelas siapa pemilik
file tersebut.

D. Process dan Thread

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:

 PATH, daftar lokasi direktori dimana file executable berada.


 HOME, lokasi direktori home.
 CPPLIBS, lokasi dimana library yang berkaitan dengan program disimpan.
 HOSTNAME digunakan untuk penamaan mesin.
 USER user yang digunakan pada saat login pada sistem operasi

Memulai menggunakan perintah ps


# Apa perintah yang seharusnya Anda tulis agar menampilkan hasil output
seperti di atas?

# Apa fungsi perintah tersebut?

Menampilkan semua proses yang sedang berjalan pada sistem

# Apa perintah yang seharusnya Anda tulis agar menampilkan hasil output
seperti di atas?

# Atau Anda bisa menggunakan perintah lain, seperti ?


# Dan perintah apa yang berfungsi menampilkan semua proses dalam format
sesuai definisi user yaitu terdiri dari kolom PID dan CMD.?

Melihat semua proses yang berjalan kecuali root

# Pada poin ketiga ini, Anda dapat menggunakan perintah seperti di bawah ini :

ps -U root -u root -N

# Bagaimana hasil ouput-nya?

Menampilkan proses yang sedang dijalankan oleh user tertentu

# Untuk menjalankan fungsi pada poin empat, Anda dapat menggunakan


perintah seperti di bawah ini :

ps -u <user>

# Bagaimana hasil ouput-nya?

Menampilkan proses yang sedang berjalan dalam bentuk pohon

# Untuk menjalankan fungsi pada poin lima, Anda dapat menggunakan perintah
seperti di bawah ini :

pstree

#Bagaimana hasil ouput-nya?


# Apa perbedaan perintah pstree dengan pstree –h?

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 untuk menghentikan perintah $yes di atas?

Hasil output:

#Bagaimana cara agar perintah $yes tetap dijalankan tetapi shell tetap
digunakan untuk hal yang lain ?

Hasil output:

# Bagaimana cara untuk melihat status proses yang sedang berjalan?


Hasil output:

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.

# Bagaimana contoh perintah kill ?

# PID adalah nomor proses yang akan di hentikan. Tidak tahu PID proses mana
yang akan dihentikan? Cobalah bereksperimen dengan perintah:

ps aux | grep <myusername>

# Lalu tempelkan hasil output pada kolom di bawah ini

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 responsnya.

# Apa yang membedakan Daemons dengan proses lain ?


Berikut ini adalah beberapa cara untuk membuat daemon:

● Forking dan pembunuhan Proses induk.

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 :

● Membuat proses bekerja secara independen

Daemon harus bekerja secara independen dibandingkan dengan proses-proses


lainnya, termasuk juga proses yang menjalankannya. Langkah ini bisa dilakukan
dengan memanggil fungsi setsid(), sehingga proses akan mendapatkan sebuah
session ID yang baru.

# Contoh Script:

● 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:

● Melakukan masking pada File Creation


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:

● 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 :

● Mendengarkan signal

# Tulislah pada kolom di bawah ini, apakah maksud dari proses ini?

● Logging

# Sebutkan beberapa cara untuk melakukan proses logging dan berikan


penjelasan!

2.3.2 Pengenalan Lingkungan Sistem Operasi Linux

Shell
Shell merupakan command executive, yaitu program yang menunggu instruksi
atau perintah dari pemakai, memeriksa sintaks dari perintah yang diberikan, dan
kemudian mengeksekusi perintah tersebut

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:

Shell Developer Lokasi Keterangan

Bourne Steven Shell yang pertama kali ada di Unix


Shell Bourne
(/bin/sh)
Bourne Brian Fox Free Shell BASH merupakan shell yang paling
Again Shell dan Chet Software umum digunakan di semua sistem
operasi Linux
(/bin/bash) Ramey Foundation

C Shell Bill Joy Universitas C Shell adalah shell yang mengadopsi


(/bin/csh) Berkeley perintah pemrograman C

California

Tenec C TCSH adalah Shell pengembangan dari


Shell UNIX C Shell

(/bin/tcsh)

Korn Shell Bill Joy AT&T Labs Shell ini menggabungkan kelebihan
(/bin/ksh) Bourne Shell dan C Shell sehingga lebih
interaktif.

Alquimist Kenneth Ash banyak digunakan dalam embedded


Shell Almquist Linux, sistem yang tertanam misalnya
BIOS.
(/bin/ash)

Z Shell Z Shell ini biasa digunakan oleh


(/bin/zsh) pengguna Linux untuk membangun
script yang kompleks.

# Ketikkan perintah "bash" pada terminal Anda, apa yang akan muncul?
Mengapa muncul seperti itu?

● Mengganti dan Menjalankan 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.

# Contoh mengganti shell dengan utilitas chsh (change shell) :

● 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
● Menjalankan Script Shell
Untuk menjalankan sebuah script shell, Ada dua cara yang digunakan untuk
menjalankan sebuah shell script, yaitu:

a) Langsung running dari file [dot]sh-nya.


$ bash hello.sh

b) Ubah Hak Aksesnya.


$ chmod +rwx hello.sh

● Melihat variabel PATH


Untuk melihat variabel path, gunakan perintah:
Syntax:

$ echo $PATH

● Menentukan variabel PATH

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

● Menentukan variabel PATH secara permanen


Jika ingin tetap menjaga agar variabel PATH tetap bisa dieksekusi setelah
reboot/restart, maka harus diset secara permanen. Masukan kalimat:

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.

$ Source ~/.profile atau


$ Source ~/.bashrc

Atau lakukan reboot.


2.3.3 Macam Struktur Sistem Operasi

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

Berikut penjelasan detail dari masing-masing jenis struktur sistem operasi:

A. 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, antar muka 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 <linux/kernel.h> /* Needed for KERN_INFO */

#include <linux/init.h> /* Needed for the macros */

static int __init hello_start(void){

printk(KERN_INFO "Loading hello module...\n");

printk(KERN_INFO "Hello world Mr. Praktikan\n");

return 0;

static void __exit hello_end(void){

printk(KERN_INFO "Goodbye Mr. Praktikan\n");

module_init(hello_start);

module_exit(hello_end);

Penjelasan source code :

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

KVERSION = $(shell uname -r)

all:

make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules

clean:

make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean

4. Compile source code dengan perintah:


make

5. Pada direktori tersebut akan muncul file baru yaitu hello.ko. File tersebut adalah
file executable dari kernel module yang kita buat.

6. Pasang kernel module tadi dengan perintah:


sudo insmod hello.ko

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

1. Carilah fungsi dari directory berikut:

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

Budi Ani

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!
7. Coba buatlah sebuah modul kemudian install dan kemudian remove

2.5 Kesimpulan
1. Jelaskan pengertian dari CLI beserta kelebihan dan kekurangannya!

2. Sebutkan dan jelaskan 5 jenis perintah ls (list directory) beserta fungsinya!

3. Jelaskan kegunaan shell dan tunjukkan shell apa saja yang ada pada Linux!

4. Jelaskan fungsi dari hak akses!

Anda mungkin juga menyukai