Bab 2 membahas pengenalan lingkungan sistem operasi Linux. Terdapat penjelasan mengenai command line interface, perintah dasar Linux seperti manajemen user dan file, proses dan thread, serta kepemilikan file dan hak akses. Praktikan diajak untuk memahami konsep-konsep tersebut dan berlatih menggunakan perintah-perintah dasar Linux.
Perintah ps adalah perintah yang digunakan untuk menampilkan informasi mengenai
proses yang sedang aktif di dalam sistem operasi linux dan setelah saya amati dari komputer
yang saya gunakan dengan komputer teman-teman yang lain, tampilanya pun berbeda yang
menujukan proses yang dijalankan juga berbeda.
Perintah ps adalah perintah yang digunakan untuk menampilkan informasi mengenai
proses yang sedang aktif di dalam sistem operasi linux dan setelah saya amati dari komputer
yang saya gunakan dengan komputer teman-teman yang lain, tampilanya pun berbeda yang
menujukan proses yang dijalankan juga berbeda.
pwd : melihat current directory atau direktori yang aktif
cd : mengubah direktori
ls : melihat isi current directory atau direktori tertentu
Penggunaan : ls [pilihan] [file_or_dirs]
mkdir : membuat direktori
rmdir : menghapus direktori kosong
1. LABORATORIUM PEMBELAJARAN ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
NAMA : ILHAM TUBAGUS ARFIAN
NIM : 165150207111051
MATERI : BAB II
TANGGAL : 29/09/2017
ASISTEN : -ALFIAN RIZKY SUSANTO
-ANANDA ADIYATMA PUTRA
Bab 2. Pengenalan lingkungan sistem Operasi linux
2.1 Kebutuhan
Untuk melaksakanan kegiatan praktikum pada bab 2, diperlukan sebuah
sistem operasi yang didalamnya terdapat sebuah BASH ( Bourne Again SHell).
2.2 Tujuan Praktikum
1. Mengenalkan struktur system 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 melajutkan 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. Commnad 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 tesebut meliputi :
2. 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 merubah password :
#passwd nama_user
3. Menghapus User
Untuk menghapus user jalankan perintah berikut ini :
#userdel nama_user
Atau
# userdel –r nama_user
Jelaskan perbedaan dari kedua syntax diatas :
Perintah userdel hanya sebatas menghapus user sedangkan userdel -r
menghapus user sekaligus menghapus setiap file dan direktori yang terdapat
pada user tersebut.
Membuat Group
Group adalah gabungan dari beberapa user membentuk suatu kelompok.
User-user yangtergabung dalam satu group dapat saling berbagi file.
Berikut syntax untuk menambah group :
# groupadd nama_group
4. 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 didalamnya. 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 garisbawah (_). 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 ektensi disebut dengan base file
name. sebagai contoh base file name dari ‘sisop.txt’ adalah sisop.
5. Membuat File
Untuk membuat file ‘sisop’ di direktori terkini
Syntax : #membuat file
$ 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
6. Berpindah Direktori
Gunakan perintah cd untuk berpindah direktori dari direktori sebelumnya.
Syntax :
$ cd [alamat_direktori]
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 :
List directory
Perintah ini berfungsi untuk menampilkan isi dari suatu directory beserta
atribut filenya.
Syntax :
$ ls [option]
$ pwd
7. OPTION FUNGSI
-a
bila anda ingin menampilkan semua file dan folder, termasuk file
dan 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
-l
menampilkan isi direktori secara lengkap, mulai dari hak akses,
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 home/praktikum/sisop.txt home/SisopFolder
8. 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)
Mengcut file sisop.txt pada direktori /home/praktikum/ dan
memindahkannya kedalam direktori /home/SisopFolder.
Merename file sisop.txt menjadi SisopIsGood.txt yang terdapat dalam
direktori home/SisopFolder.
Menghapus file
Digunakan untuk menghapus file.
Syntax :
$ rm [nama_file]
Contoh : $ rm SisopIsGood.txt
9. Menghapus direktori
Syntax :
$ rmdir [nama_file]
Contoh : $ rmdir SisopFolder
Menghapus direktori yang didalamnya terdapat file
Syntax :
$ rm –rf [nama_direktori]
Contoh : $ rm –rf /home/SisopFolder
Menampilkan isi sebuah file
Syntax :
$ more [nama_file]
Contoh : $ more sisop.txt
10. C. Kepemilikan File dan hak akses
Ketika sebuah file atau direktori dibuat, maka file atau direktori tersebut
kepemilikikannya 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 hakakses.Perhatikan perintah berikut ini :
# chmod go+wx sisop.txt
11. Untuk merubah 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
kombinasibilangan numerik,yaitu 0 sampai7.
Untuk merubah kepemilikan file atau direktori baik user maupungrup gunakan
perintah Chown dan chgrp , kepemilikan file ini terkadang perlu dilakukan dengan
alasan keamanan.
# chown [nama pemilik baru] [nama directory/nama file]
Contoh $ chown ilham test.txt
Begitu juga nama group pada sebuah file juga dapat kita ubah,untuk
mengubahnya kita bisa menggunakan chgrp.
# chgrp [nama group baru] [nama direktory/ nama file
Contoh $ chgrp family test.txt
12. Contoh
-rw-rw-r-- 1 bin auth 1639 2008-08-31 20:19 File.txt
tipe
Ijin akses
Jml link
Pemilik Group
Jml karakter Waktu
Nama file
Pemilik File/Direktori dapat mengubah ijin akses sebagai berikut :
-rwxrwxrwx 1 student test 1639 2001-08-31 20:19 file.txt
Format untuk mengubah ijin akses
dimana u = user (pemilik)
g = group (kelompok)
user
group
other
chmod [ugoa] [= + -] [rwx] File(s)
chmod [ugoa] [= + -] [rwx] Dir(s)
13. Note : angka 0 di berikan apabila kita tidak memberikan ijin sedangkan
agka 1 di berikan 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 merubah ijin akses dari
file.txt tersebut ?
Jawab :
u = r w x = 1 1 1 = 7
g = r w x = 1 0 0 = 4
o = r w x = 0 0 0 = 0
jadi formatnya adalah : $ chmod 740 file.txt
#Apakah ada cara lain untuk mengganti hak ijin akses file selain dengan
meggunakan mode biner dan alphabet..? jika ada jelaskan!
Ada dengan menggunakan GUI. Dengan cara klik kanan pilih properties pilih
permisions. Setelah itu atur ijin hak akses yang diinginkan.
o = others (lainnya)
a = all
r w x
1 0 1 = 5
Format lain dari chmod adalah menggunakan bilangan biner sebagai berikut
chmod [Angka_ijin] File(s)
chmod [Angka_Ijin] Dir(s)
14. # 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 :
Contoh # chown ilham test.txt
Begitu juga nama group pada sebuah file juga dapat kita ubah, untuk
mengubahnya kita bisa menggunakan perintah chgrp.
Syntax :
# chown option pemilik_baru nama_file/direktori
# chgrp option group_pengganti nama_file/direktori
Pertama hak akses pada user yaitu execute akan
dihilangkan, kemudian ditambahkan hak akses read pada
group, setelah itu hak akses pada others dijadikan
hanya sebatas write.
15. Contoh $ chgrp family test.txt
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 diatas 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
16. 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 ?
Dengan cara menuliskan syntax : ps -u
17. # Apa fungsi perintah tersebut ?
Menampilkan semua proses yang sedang berjalan pada system
# Apa perintah yang seharusnya Anda tulis agar menampilkan hasil output
seperti di atas?
# atau Anda bisa menggunakan perintah lain, seperti ?
Untuk menampilkan proses yang sedang dijalankan oleh user.
ps -A
ps -a
ps -l
18. # 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 ouputnya ?
ps -m
19. 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 ouputnya ?
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 ouputnya ?
Hasil outputnyanya hampir sama dengan perintah ps -m akan tetapi pada perintah tersebut
tidak menampilkan nilai variabel TTY
21. contoh 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 y yang tidak akan pernah
selesai. Dengan menggunakan sintak sebagai berikut :
$ yes
#Bagaimana untuk menghentikan perintah $yes diatas?
Hasil output:
#Bagaimana cara agar perintah yes tetap dijalankan tetapi shell tetap
digunakan untuk hal yang lain ?
Hasil Output:
Pada perintah pstree tidak menunjukkan sebuah sub proses yang sedang dijalankan,
sedangkan pstree -h menunjukkan highlight dari proses yang sedang dijalankan dan
ancestor dari proses itu sendiri.
Menekan tombol Ctrl+Z.
Menekan tombol Ctrl + C.
22. # Bagaimana Untuk melihat status proses yang sedang berjalan??
Hasil Output:
PERINTAH KILL
Perintah kill adalah salah satu perintah daasar 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
pkill firefox
Mengetikkan perintah ps -u pada terminal
23. 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 menspawn
proses menjadi induk dan anak dengan melakukan forking, kemudian
membunuh proses induk. Proses induk yang mati akan menyebabakan sistem
operasi mengira bahwa proses telah selesai sehingga akan kembali ke terminal
user.
# Contoh Script :
Daemon tidak memiliki parent proses id, pengontrol, baik itu STDIN,STDOUT,STD error.
Daemon juga berjalan dalam privilege superuser. Daemon tidak memiliki suatu terminal yang
digunakan untuk mengontrol daemon itu sendiri. Sehingga daemon tidak dapat dikendalikan,
seperti di kill atau di beri perintah lainnya.
sid=setsid ();
if(sid<0){
exit(EXIT_FAILURE);
}
if((chdir("/"))<0){
exit(EXIT_FAILURE);
}
24. Membuat proses bekerja secara independen
Daemon harus bekerja secara independen daripada proses-proses lain,
termasuk juga proses yang menjalankannya. Langkah bisa dilakukan dengan
memanggil fungsi setsid(), sehingga proses akan mendapatkan sebuah session ID
yang baru.
# Contoh Script :
Menutup standar I/O deskriptor 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.
sid=setsid ();
if(sid<0){
exit(EXIT_FAILURE);
}
if((chdir("/"))<0){
exit(EXIT_FAILURE);
}
close(STDIN_FILENO);
close(STDERR_FILENO);
25. # Contoh Script:
Running Directory
Directory kerja daemon haruslah sebuah directory yang selalu hidup. Bisa
saja pada saat starting working directorynya pada saat itu berada pada user
home. Karena daemon bekerja sampai sistem reboot, maka file sistem user
directorynya takkan pernah bisa di unmount.
# Contoh Script :
Mendengarkan signal
# Tulislah pada kolom di bawah ini, apakah maksud dari proses ini ?
sid = setsid();
if(sid < 0)
{
exit(EXIT_FAILURE);
}
if((chdir(“/home/indra/Desktop/Data/”)) < 0)
{
exit(EXIT_FAILURE);
}
pid_t pid,sid;
pid=fork();
if(pid < 0)
{
exit(EXIT_FAILURE);
}
if(pid > 0)
{
printf("process_id of child process %d n", pid);
exit(EXIT_SUCCESS);
}
umask(0);
Tugas dari daemon adalah mendengarkan request yang dikirim melalui suatu sinyal. Sehingga dalam
suatu daemon harus terdapat fitur untuk mendengar/menerima suatu sinyal agar terdapat respon
saat dikirimi suatu sinyal. Kita dapat menginstall suatu signal listener pada suatu daemon dengan
mengetikkan fungsi signal().
26. 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 didalam sistem operasi, missal 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!
Mengetikkan syntax cat /etc/shells
- Metode Log File : Semua file ditulis ke dalam suatu file dan di kendalikan oleh file konfigurasi
daemon . Cara melakukan nya adalah dengan mengetikkan sintaks fopen()
- Metode Log Server : UNIX memiliki daemon khusus yang digunakan untuk logging yaitu syslogd.
Daemon ini mengelompokkan pesan-pesan menjadi beberapa kelompok yang disebut facility,
kemudian kelompok ini dapat dikirim ke tempat yang berbeda misalnya email.
27. 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
linux bisa dengan menggunakan perintah $ls /etc/shells kemudian enter. Berikut
adalah beberapa contoh macam shell yang digunakan pada linux :
Shell Developer Lokasi Keterangan
Bourne Shell
( /bin/sh)
Steven
Bourne
Shell yang pertama kali ada di Unix
Bourne Again
Shell
( /bin/bash)
Brian Fox dan
Chet Ramey
Free
Software
Foundation
Shell BASH merupakan shell yang
paling umum digunakan di semua
system operasi Linux
C Shell
( /bin/csh)
Bill Joy Universitas
Berkeley
California
C Shell adlah Shell yang mengadopsi
perintah
pemrograman C
Tenec C Shell
( /bin/tcsh)
TCSH adalah Shell pengembangan
dari UNIX C Shell
Korn Shell
(/ bin/ksh)
Bill Joy AT&T Labs Shell ini menggabungkan kelebihan
Bourne shell dan C shell sehingga
lebih interaktif.
Alquimist
Shell
( /bin/ash)
Kenneth
Almquist
Ash banyak digunakan dalam
embedded linux, sistem yang
tertanam misalnya BIOS.
Z Shell
( /bin/zsh)
Z shell ini biasa digunakan oleh
pengguna linux untuk membangun
script yang kompleks.
28. #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 usernya. Untuk melihat shell yang sedang
digunakan oleh user bisa dilihat pada file :
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.
Terminal akan memanggil shell bash.
/etc/passwd
.................................
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
.................................
$ env
...........
SHELL=/bin/bash
..............
29. 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) :
M
e
n
j
a
lankan 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 prompt Bourne shell.
Untuk keluar dan kembali ke shell default, ketik exit atau tekan Ctrl + d.
Contoh :
bash@praktikum:~$ sh
$
$ exit
1. cat /etc/shells
2.chsh -s /bin/sh nama_user
30. Menjalankan Script Shell
Untuk menjalankan sebuah script shell, Ada dua cara yang digunakan
untuk menjalankan sebuah shell script, yaitu
a) Langsung ruuning dari file [dot]sh-nya.
b) Ubah Hak Aksesnya.
Melihat variabel PATH
Untuk melihat variabel path, gunakan perintah
Syntax:
$ echo $PATH
$ bash hello.sh
chmod +x hello.sh
./hello.sh
31. 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
32. Berikut penjelasan detile 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 diatas perangkat lunak secara fisik. Kernel ini berisi
sistem file, penjadwalan CPU, menejemen 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.
33. Pada umumnya mikrokernel mendukung proses dan menajemen memori yang
minimal, sebagai tambahan utnuk 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
34. 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. Praktikann");
return 0;
}
static void __exit hello_end(void)
{
printk(KERN_INFO "Goodbye Mr. Praktikann");
}
module_init(hello_start);
module_exit(hello_end);
35. 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:
36. 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
37. 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.