Saturday, November 28, 2015

FUSE

Halo balik lagi nih apa kabar? hehe
kali ini gue akan menjelaskan pengertian dari FUSE.

Apa itu FUSE?

Filesystem in Userspace (FUSE)

FUSE sendiri memungkinkan pengguna untuk menciptakan file system mereka sendiri tanpa mengubah kode kernel.

Ini adalah struktur FUSE
 Cara Kerja FUSE:

  • fuse_main() (lib/helper.c) = sebagian fungsi main (userspace), program user memanggil fungsi fuse_main() kemudian fungsi fuse_mount() dipanggil.
  • fuse_mount() (lib/mount.c) = menciptakan UNIX domain socket, kemudian di fork dan menciptakan child process yang menjalankan fusermount
  • fusermount() (util/fusermount.c) = untuk mengecek apakah modul FUSE sudah di load. Kemudian membuka /dev/fuse dan mengirim file handle melalu UNIX domain socket kembali ke fungsi fuse_mount()
  • fuse_new() (lib/fuse.c) = menciptakan struktur data yang berisi ruang yang digukanan untuk menyimpan data file system
  • fuse_loop() (lib/fuse.c) = membaca file system calls dari /dev/fuse
 Ini adalah beberapa fungsi yang disediakan oleh FUSE dan akan berguna kita pakai nantinya:

  1. int (*getattr) (const char *, struct stat *);
    Get file attributes.
  2. int (*readlink) (const char *, char *, size_t);
    Read the target of a symbolic link
  3. int (*mknod) (const char *, mode_t, dev_t);
    Create a file node. 
  4. int (*mkdir) (const char *, mode_t);
    Create a directory.
  5. int (*unlink) (const char *);
    Remove a file
  6. int (*rmdir) (const char *);
     Remove a directory
  7. int (*rename) (const char *, const char *);
    Rename a file
  8. int (*chmod) (const char *, mode_t);
    Change the permission bits of a file
  9. int (*chown) (const char *, uid_t, gid_t);
    Change the owner and group of a file
  10. int (*truncate) (const char *, off_t);
    Change the size of a file
  11. int (*open) (const char *, struct fuse_file_info *);
    File open operation.
  12. int (*readdir) (const char *, void *, fuse_fill_dir_t, off_t, struct fuse_file_info *);
    Read directory
  13. int (*read) (const char *, char *, size_t, off_t, struct fuse_file_info *);
    Read data from an open file
  14. int (*write) (const char *, const char *, size_t, off_t, struct fuse_file_info *);
    Write data to an open file
 Ini adalah contoh code dari fuse


#include <fuse.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <dirent.h>
#include <errno.h>
#include <sys/statfs.h>

static const char *dirpath = "/home/glleen/Downloads";

static int xmp_getattr(const char *path, struct stat *stbuf)
{
    int res;
    char fpath[1000];
    sprintf(fpath,"%s%s",dirpath,path);
    res = lstat(fpath, stbuf);

    if(res == -1)
    {
        return -errno;
    }

    return 0;
}

static int xmp_getdir(const char *path, fuse_dirh_t h, fuse_dirfil_t filler)
{
    char fpath[1000];
    if(strcmp(path,"/") == 0)
    {
        path=dirpath;
        sprintf(fpath,"%s",path);
    }
    else sprintf(fpath, "%s%s",dirpath,path);
    int res = 0;
    DIR *dp;
    struct dirent *de;
    dp = opendir(fpath);
    if(dp==NULL)
    {
        return -errno;
    }
    while((de = readdir(dp))!=NULL)
    {
        res = filler(h, de->d_name, de->d_type);
        if(res!=0) break;
    }
    system("notify-send hello");
    closedir(dp);
    return res;
}

static struct fuse_operations xmp_oper =
{
    .getattr = xmp_getattr,
    //.readlink = xmp_readlink,
    .getdir = xmp_getdir,
    //.mknod = xmp_mknod,
    //.mkdir = xmp_mkdir,
    //.symlink = xmp_symlink,
    //.unlink = xmp_unlink,
    //.rmdir = xmp_rmdir,
    //.rename = xmp_rename,
    //.link = xmp_link,
    //.chmod = xmp_chmod,
    //.chown = xmp_chown,
    //.truncate = xmp_truncate,
    //.utime = xmp_utime,
    //.open = xmp_open,
    //.read = xmp_read,
    //.write = xmp_write,
    //.release = xmp_release,
    //.fsync = xmp_fsync,
    //.readdir = hello_readdir
};

int main(int argc, char *argv[])
{
    return fuse_main(argc, argv, &xmp_oper);
}


catatan : ubah dirpath ini sesuai dengan yang directory yang ingin di mount const char *dirpath = "/home/glleen/Downloads";

Thursday, November 5, 2015

Thread and Inter-Process Communication (IPC)

Hai apakabar? Semoga sehat selalu dan dilindungi oleh yang Maha Esa aamiin.

Disini kali ini gue mau jelasin tentang thread dan IPC di sistem operasi.

Thread

Ulir atau thread (singkatan dari "thread of execution") dalam ilmu komputer, diartikan sebagai sekumpulan perintah (instruksi) yang dapat dilaksanakan (dieksekusi) secara sejajar dengan thread lainnya, dengan menggunakan cara time slice (ketika satu CPU melakukan perpindahan antara satu thread ke thread lainnya) atau multiprocess (ketika thread-thread tersebut dilaksanakan oleh CPU yang berbeda dalam satu sistem).

Thread sebenarnya mirip dengan proses, tapi cara berbagi sumber daya antara proses dengan thread sangat berbeda. Multiplethread dapat dilaksanakan secara sejajar pada sistem komputer.

Semua proses merupakan unit kepemilikan dan unit penjadwalan (aktivitas). Pada sistem operasi mutakhir, proses dapat mempunyai banyak aktivitas idependen, sehingga:
-  Thread adalah abstraksi dari unit aktivitas (penjadwalan)
 - Proses adalah unit kepemilikan sumber daya
Proses adalah lingkungan eksekusi, unit managemen sumber daya, yaitu kumpulan sumber daya dimana thread-thread dapat mengaksesnya.


Thread sering disebut Light Weight Process (LWP) yaitu unit dasar utilitasi pemroses dan berisi ID thread, progam counter, register set dan stack space. Thread-thread di satu proses berbagi (memakai bersama) bagian kode, data dan sumber daya system operasi seperti file dan signal. Pemakaian ektensif menyebabkan alih pemroses antara thread –thread di satu proses tidak mahal disbanding alih konteks antar proses. Meski alih thread masih memerlukan alih himpunan register, namun tidak ada keterlibatan manajemen memori.

Single thread dan multi thread
1.Single thread >> process hanya mengeksekusi satu thread saja pada satu waktu
2.Multi thread >> process dapat mengeksekusi sejumlah thread dalam satu waktu.

Multithread ing merupakan upaya meningkatkan kinerja system computer, disebabkan :
1. Penciptaan thread baru lebih cepat dibanding penciptaan proses baru
2. Terminasi thread lebih cepat dibanding pengakhiran proses.
3. Alih ke thread lain di satu proses lebih cepat dibanding dari satu proses ke proses lain.
4. Thread-thread di satu proses dapat berbagi kode, data dan sumber daya lain secara nyaman dan efisien dibanding proses-proses terpisah. 

Model Multithread
Sebelumnya, perlu diketahui apa itu user thread dan kernel thread.
User thread >> pengelolaan thread dilakukan oleh user level (pengguna)
Kernel thread >> pengelolaan thread dilakukan oleh kernel komputer User tidak dapat menginterupsi.

Model-model multithreading :
1. Many to one.
- Beberapa thread user-lever dipetakan ke dalam single kernel thread
- Penggunaannya pada sistem tidak memerlukan dukungan kernel thread
2. One to one
- Setiap user-level thread dipetakan ke kernel thread.
- Contoh : Windows 95/98/NT/2000
3. Many to many
- Membolehkan setiap user-level thread dipetakan ke banyak kernel thread
- Membolehkan sistem operasi membuat sejumlah kernel thread
- Contoh : Windows NT/2000 dengan paket ThreadFiber 10, Solaris 2.

Contoh thread :
- Java Thread, Java threads dikelola oleh JVM dan biasanya dilaksanakan dengan menggunakan benang model yang disediakan oleh OS. Java threads dapat digunakan untuk Memperluas kelas Thread dan Pelaksanaan Runnableinterface.
 
 
IPC (Inter-Process Communication)
 
IPC (Inter-Process Communication) adalah komunikasi antar proses untuk mengirim data dari satu proses ke proses yang lain, baik antar proses dalam satu komputer maupun proses-proses dalam komputer yang berbeda. IPC dapat dilakukan dengan berbagai cara yaitu Shared memory, Pipe, Messages passing, dan sebagainya. Berikut penjelasan mengenai cara-cara tersebut.


Karakteristik dari IPC :
    • Synchronous and asynchronous communication
    • Message destinations
    • Reliability
    • Ordering
  
a.      Shared memory

Sistem Berbagi Memori atau yang disebut juga sebagai Shared Memory System merupakan salah satu cara komunikasi antar proses dengan cara mengalokasikan suatu alamat memori untuk dipakai berkomunikasi antar proses. Alamat dan besar alokasi memori yang digunakan biasanya ditentukan oleh pembuat program. Pada metode ini, sistem akan mengatur proses mana yang akan memakai memori pada waktu tertentu sehingga pekerjaan dapat dilakukan secara efektif.
 
  
b.      Pipe  
     Pipe merupakan komunikasi sequensial antar proses yang saling terelasi, namun pipe memiliki kelemahan yaitu hanya bisa digunakan untuk komunikasi antar proses yang saling berhubungan, dan komunikasinya yang dilakukan adalah secara sequensial. Urutan informasi yang ada dalam sebuah pipe ada yang mirip dengan antrian queue. Jika komunikasi yang diinginkan adalah komunikasi dua arah maka kita harus membuat dua pipe, karena sebuah pipe hanya bisa digunakan untuk komunikasi satu arah saja.
c. Message Queue 
    Merupakan metode dimana proses (atau program contoh) dapat bertukar data menggunakan atau melalui sebuah interface untuk sistem yang dikelola message queue. Sebuah pesan antrian dapat dibuat oleh satu proses dan digunakan oleh banyak proses yang membaca dan / atau menulis pesan ke antrian. Misalnya, server proses dapat membaca dan menulis pesan dari dan ke pesan antrian dibuat untuk klien proses. Jenis pesan dapat digunakan untuk menghubungkan pesan dengan klien tertentu proses meskipun semua pesan pada antrian yang sama.
 
d. Semaphore 
   Sebuah variabel yang dilindungi atau tipe data abstrak yang merupakan metode klasik untuk membatasi akses ke sumber daya bersama seperti shared memory dalam suatu lingkungan pemrograman paralel.  Semaphore adalah solusi klasik untuk mencegah race condition pada dining philosopher problem, meskipun mereka tidak mencegah deadlock sumber daya. 

Saturday, October 17, 2015

Proses dan Daemon

Holaa piye kabare semua? semoga baik baik wae aamiin.

Kali ini gue bakal jelasin proses dan daemon di linux

Process adalah keadaan ketika sebuah program sedang di eksekusi. Cara menampilkan process tersebut adalah dengan mengetik "ps" (tanpa tanda petik di terminal)

Daemon merupakan background proses yang di design agar dapat menjalankan suatu proses secara otomatis karena tidak memiliki terminal pengontrol, dengan sedikit atau tanpa hubungan langsung dengan pengguna.
 
Sedangkan cara membuat daemon yaitu ada 6 langkah :
1. Fork Parent Processs dan penghentian Parent Process
2. Mengubah mode file menggunakan UMASK(0);
3. Membuat Unique Session ID (SID)
4. Mengubah Directory Kerja
5. Menutup File Descriptor Standar
6. Membuat Loop utama (inti kerja dari daemon)

Proses Pembuatan Daemon
1. Forking dan Kill Parent Process
Langkah pertama dari pembuatan daemon adalah menspawn 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.

2. Mengubah mode file menggunakan UMASK(0);
Untuk menulis beberapa file (termasuk logs) yang dibuat oleh daemon, mode
file harus diubah untuk memastikan bahwa file tersebut dapat ditulis dan
dibaca secara benar. Pengubahan mode file menggunakan implementasi
umask().

3. Membuat Unique Session ID (SID)
Child Process harus memiliki unik SID dari kernel untuk dapat beroperasi.
Sebaliknya, Child process menjadi Orphan Proses pada system. Tipe pid_t yang
dideklarasikan pada bagian sebelumnya, juga digunakan untuk membuat SID
baru untuk child process. Pembuatan SID baru menggunakan implementasi
setsid(). Fungsi setsid() memiliki return tipe yang sama seperti fork().

4. Mengubah Directory Kerja
Directori kerja yang aktif harus diubah ke suatu tempat yang telah pasti akan
selalu ada. Pengubahan tempat direktori kerja dapat dilakukan dengan
implementasi fungsi chdir (). Fungsi chdir() mengembalikan nilai -1 jika gagal.

5. Menutup File Descriptor Standar
Salah satu dari langkah terakhir dalam mengeset daemon adalah menutup file
descriptor standar (STDIN, STDOUT, STDERR). Karena daemon tidak perlu
menggunakan kendali terminal, file descriptor dapat berulang dan berpotensi
memiliki bahaya dalam hal keamanan. Untuk mengatasi hal tersebut maka
digunakan implemtasi fungsi close().

6. Membuat Loop utama (inti kerja dari daemon)
Daemon bekerja dalam jangka waktu tertentu, sehingga diperlukan sebuah
looping.

Contoh daemon:

#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <syslog.h>
#include <string.h>

int main(void)
{
    pid_t pid, sid;
    pid = fork();
    if (pid < 0){
        exit(EXIT_FAILURE);
    }
    if (pid > 0) {
        exit(EXIT_SUCCESS);
    }
    umask(0);
    sid = setsid();
    if(sid < 0) {
        exit(EXIT_FAILURE);
    }
    if ((chdir("/")) < 0) {
        exit(EXIT_FAILURE);
    }
    close(STDIN_FILENO);
    close(STDOUT_FILENO);
    close(STDERR_FILENO);
    while (1) {
        sleep(30);
    }
    exit(EXIT_SUCCESS);
}

Sekarang penjelasan sedikit

PID (Process ID)
berupa nomer atau suatu angka tertentu yang unik di setiap process nya.

Untuk mendapatkan PID :
System call getpid()

PPID (Parent Process ID)
Parent Process ID. Induk dari Process ID (PID). Setiap proses memiliki satu induk proses (PPID). PPID adalah creator dari proses. PPID adalah PID yang bersifat Private, atau PID yang tidak langsung ditampilkan

Untuk mendapatkan PPID :
System call getppid()

Parent Process 
Proses yang menciptakan beberapa proses anak. Proses ini tercipta dengan mengeksekusi fungsi fork(), kemudian hasil dari pemanggilan fork tersebut menciptakan beberapa child process. Untuk mematikan parent process kita bisa mengetikkan kill lalu di ikuti oleh angka dari parent process yang ingin di matikan.

Implementasi pembuatan forking parent (proses
pembuatan child) :
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
int main()
{
    pid_t child_pid ;
    child_pid = fork();
    if(child_pid<0){
          printf(“Create New Process Failed!!!”);
    }
    if(child_pid > 0){
          printf(“Parent Process with id %d”, (int)getpid() );
    }

return 0;
}

Child Process
Proses yang dibuat oleh proses lainnya ( parent process ). Setiap proses bisa membuat banyak proses anak tapi hanya akan memiliki satu parent process, kecuali unuk proses paling pertama yang tidak memiliki parent. Proses pertama yang dipanggil init dalam Linux, dimulai oleh kernel saat boot dan tidak pernah dihentikan.

Implementasi pembuatan proses child:
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
int main()
{
   pid_t child_pid ;
   child_pid = fork();
   if(child_pid<0){
         printf(“Create Child Process Failed!!!”);
   }
   if(child_pid == 0){
         printf(“Child Process with id : %d \n”, (int) getpid() );
   }

   return 0;
}

Zombie Process
Proses pada system operasi yang telah telah menyelesaikan prosesnya tetapi terdapat pada entry proses. Zombie proses terjadi apabila child process diberi perintah kill atau prosesnya dihentikan, child proses kemudian memberikan signal SIGCHILD ke parent process, apabila parent proess tidak menghandle signal tersebut, maka child process tersebut akan menjadi Zombie Process. Sebenarnya proses telah berhenti namun seakan-akan tetap ada. Zombie process ditandai dengan <defunct>.


Orphan Process
Proses yang terjadi apabila Parent processnya telah berhenti dieksekusi tetapi child process tetap berjalan

Sekarang disini gue mau kasih 1 contoh daemon yang menunjukan seluruh proses dari user yang sedang login begini :

#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <syslog.h>
#include <string.h>

int main(){

    pid_t pid, sid;
    pid=fork();
    if (pid < 0){
         exit(EXIT_FAILURE);
    }
    if (pid > 0){
         exit(EXIT_SUCCESS);
    }
    umask(0);
    sid = setsid();

    if(sid<0){
        exit(EXIT_FAILURE);
    }

    if((chdir("/"))<0) {
        exit(EXIT_FAILURE);
    }
    close(STDIN_FILENO);
    close(STDERR_FILENO);


    register uid_t uid;
    while(1){
       
       
        system("ps -aux | grep -i $(whoami) | grep -v \"root\" > /home/glleen/proses.txt");   
    }
}


penjelasannya yaitu proses daemon seperti yang sudah dijelaskan di atas tadi, nah bagaimana cara kita ngeprint seluruh proses yang sedang berjalan dari user yang sedang login?
Pertama kita harus tau kalo untuk menampilkan proses itu kita bisa menjalankan perintah ps aux di terminal.
Nah untuk menampilkan user yang sedang login kita bisa menggunakan perintah whoami di terminal.
Setelah itu fungsi untuk mencari kata yaitu kita pakai fungsi grep dimana kita akan mencari nama user yg sedang login, dan hanya akan mencetak proses dari user yang sedang login saat ini saja.
Itu semua bakal disimpan dengan nama proses.txt (berdasarkan contoh).
Kita panggil perintah di atas tadi semua itu dengan perintah system.

Sekian dulu penjelasan kali ini dari gue, mohon maaf kalo ada salah-salah namanya jg manusia, makasih yaa udh mau baca sampe akhir.

Thursday, September 24, 2015

Shell Scripting Bilangan Prima

Halo gimana kabarnya semua? semoga baik-baik aja yah hehe. Oh iya Selamat Hari Raya Idul Adha bagi yang merayakan ya (bagi dagingnya dong hehe :p).

Kali ini gue mau ngasih bash script tentang bilangan prima, jadi disini gue bakal ngasih inputan sebuah angka, lalu dimunculkan antgka prima apa saja sampe pada angka inputan tadi. Gausah banyak ngomong lagi sikat aja ini diaaa...

Awalnya itu kita buka terminal bisa dengan cara cepat di ctrl+alt+t.

Masuk sudo su. Sudo su ini artinya kita masuk sebagai super user yang bisa mengakses hampir segala aktivitas di terminal

Terus setelah masuk sebagai super user. Kita ketik nano namafile.sh. Nano itu sebagai editor untuk mengcoding shell script. Kenapa nama extensi file nya itu .sh? Karena .sh itu yang bisa di eksekusi di terminal linux. Lalu coding di bawah ini

#!/bin/bash
angka=$1
for i in `seq 1 $angka`;
do
        cek=0
        for j in `seq 2 $angka`;
        do
                if [ $(( i%j )) -eq 0 ];
                then
                let "cek=$cek+1"
                fi
        done
                if [ $cek -eq 1 ];
                then
                echo $i
                fi
done

Setelah itu kita ketik chmod 777 namafile.sh. chmod 777 itu untuk mengubah permission untuk file tersebut agar bisa di read, write, dan execute.

Untuk menjalankan file tersebut kita ketik ./namafile.sh

Jadi gini penjelasannya untuk codingan di atas, untuk angka=$1 itu angka inputannya.

Buat baris selanjutnya itu memulai looping(perulangan) dimulai dari angka 1 sampe berhenti pada angka inputan di deklarasi sebagai i.

Lalu gue bikin cek atau flag nya atau penanda nya itu 0 setiap kali sebelum memasuki looping kedua.

Di looping kedua kali ini di mulai dari angka 2 sampe angka inputan di deklarasi sebagai j, karena gue bakal bagi ngelakuin i%j (i mod j).

Jika i%j sisa hasil bagi nya adalah 0,  maka gue naikin "cek"(flag/penanda) gue tadi jadi 1. Lalu keluar dr kondisi i%j=0 dan di cek apakah cek=1 atau engga. Karena bilangan prima itu bilangan yang bisa hanya bisa di bagi 1 dan bilangan itu sendiri, maka cek itu pasti 1, karena cek hanya akan naik dari 0 jadi 1 ketika i%j hasil baginya 0. Terus di keluarin deh angka-angka di variabel i.

Contohnya inputan gue adalah 3, lalu masuk looping dimulai dari 1, lalu masuk looping lagi di mulai dari 2, karena 1%2 hasil baginya bukan 0, terus ulang lagi ke j nya 3, dan 1%3 hasil baginya bukan 0, jadi 1 itu bukan prima.

Terus ulang lagi dari cek=0 karena looping untuk j itu udah selesai karena perintah loopingnya selesai ketika j sampai angka inputan, terus di mulai lagi i berikutnya yaitu 2, j nya juga 2, karena 2%2 hasil baginya adalah 0, lalu cek gue naikin dari 0 jadi 1, terus gue keluar dari kondisi i%j=0, dan masuk di kondisi apakah cek=1, karena benar cek gue sama dengan 1, terus gue munculin angka i tadi yaitu 2.


Lalu masuk lagi ke cek=0 dan di ulang lagi perintahnya kayak di atas ini, untuk i angka 3, begitulah seterusnya sampe nanti hasilnya yang keluar adalah angka 2 dan 3. Ini contohnya di bawah




Gimana? Simpel kan? hehe makasih yah udah baca blog gueee semoga lo semua bahagia hari ini. Have a great day!:)

Saturday, August 8, 2015

Install webserver dan deploy web pada Ubuntu

Saya disini ingin menjelaskan cara meng install webserver pada ubuntu
1. Pertama masuk ke terminal ubuntu
2. Ketik "sudo apt-get update" tanpa tanda ""(petik). Lalu akan diminta password user, masukkan password anda. Lalu tunggu hingga update selesai.
3. Ketik "sudo apt-get install mysql-client mysql-server php5-mysql"
4. Ketik "sudo mkdir /var/ww"
5. Ketik "sudo chmod 0777 /var/www"
6. Ketik "sudo chown username /var/www/"untuk username itu karena user di komputer saya namanya glleen, jadi saya ketik "sudo chown glleen /var/www/"
7. Ketik "sudo apt-get install apache2"
8. Ketik "sudo apt-get install libapache2-mod-php5 php5 php5-mysql"
9. Ketik "sudo apt-get install phpmyadmin" lalu webserver pilih yang apache (langsung di enter saja)
10. Ketik "sudo gedit /etc/apache2/apache2.conf" lalu ketik seperti gambar di bawah ini, ketikkan persis posisinya seperti gambar dibawah. Setelah itu di close saja lalu buka terminal lagi
11. Ketik "sudo gedit /etc/apache2/http.conf"
12. Akan muncul sebuah tempat kosong lalu tulis ServerName localhost. Setelah itu disave dan di close.
13. Ketik "sudo service apache2 restart"
Nah apache2 sudah terinstall

 Sekarang untuk deploy web profile saya.
Pertama buat dulu web profile nya, setelah itu web profile saya, saya masukkan ke dalam folder "glleen" termasuk gambar-gambar untuk web saya.

Langkah berikutnya lalu pindahkan semua yang ada di folder glleen ke /var/www/html dengan terminal di ubuntu, bisa menggunakan perintah cp(copy) atau mv(move).

lalu agar semua orang bisa melihat web profile saya, perlu di setting dahulu VirtualBox nya.

1. Klik Setting lalu masuk ke bagian Network lalu ubah setting seperti pada gambar dibawah ini
2. Lalu jalankan Ubuntu nya. Buka terminal lalu ketik "ifconfig" akan muncul tampilan seperti ini, dan yang di beri kotak adalah alamat ip kita jika orang lain ingin membuka web profile kita





Install Dual Boot Linux pada VirtualBox (Ubuntu dan Debian)

Disini saya mau menjelaskan cara install Dual Boot Linux pada VirtualBox, saya akan menginstall Ubuntu 14.04 dengan Debian

Pertama buka VB yang sebelumnya sudah di install
Lalu klik New dan akan muncul tampilan seperti ini, berikan namanya untuk membedakan dengan virtual machine yang lain.
setelah itu set alokasi RAM yang akan di gunakan, untuk rekomendasi gunakan setengah dari RAM komputer anda, jika ingin OS nya tidak berjalan lelet. Setelah itu klik next dan klik Create.

lalu klik next saja sampai bertemu yang seperti ini
ini adalah alokasi memory untuk OS anda, karena kita akan menginstall dual boot maka dibutuhkan memory yang besar, saya disini menggunakan 30GB. Setelah itu klik Create, dan Virtual Machine nya sudah jadi.

Untuk menginstall OS pertama, klik dulu setting lalu masuk ke bagian storage, sebelumnya siapkan dulu OS yang ingin di install, karena saya ingin menginstall Ubuntu jadi bisa didapatkan di website ubuntu
Setelah itu klik OK, lalu jalankan dengan klik Start, akan muncul tampilan seperti ini, pilih bahasa yang ingin digunakan lalu klik install ubuntu, lalu klik continue
sampai bertemu tampilan seperti ini pilih something else
Lalu set partisi partisi nya dengan ukurang masing-masing untuk root(/) 8GB, untuk /home 2GB dan untuk swap area 2GB

lalu continue pilih daerah anda, continue lagi untuk memilih keyboard layout, lalu continue untuk setting nama user dan password user lalu klik continue dan mulai installasi Ubuntu
dan sudah jadi ubuntu nya di VB
sekarang untuk install OS kedua kita close dulu Ubuntu nya lalu kembali ke VB dan klik setting, di general ubah dahulu versi OS nya karena disini saya akan menginstall Debian maka ubah ke Debian 64bit, lalu ke bagian storage dan pilih iso untuk OS debian
setelah itu kita start dan akan muncul tampilan berikut
setelah itu saya memilih graphical install, lalu pilih bahasa, klik continue lalu pilih lokasi lalu continue lagi, continue lagi untuk memilih keyboard, lalu continue dan masukkan password untuk root anda.

Lalu ketikkan username yang anda inginkan dan password untuk username anda, lalu pilih untuk partition disks pilih manual dan akan muncul tampilan seperti ini

lalu pilih yang free space, klik continue, pilih create new partition, lalu continue dan tuliskan 8GB, lalu continue pilih yang logical, dan lakukan hal yang sama untuk /home sebanyak 2GB dan swap area sebanyak 2GB juga, lalu pilih finish partitioning, dan klik continue akan mulai untuk melakukan installasi
ditengah-tengah installasi akan muncul tampilan seperti ini saya pilih seperti yang di gambar


lalu untuk tampilan seperti di bawah ini saya checklist KDE, web server, print server, SSH server, dan standart system utilities, lalu klik continue.
setelah itu restart VB nya lalu ketika booting up akan muncul pilihan seperti ini
artinya kita sudah berhasil install dual boot.



Thursday, June 18, 2015

Install VirtualBox

Hallo..
Disini saya ingin memberitahu cara menginstall virtualbox untuk windows. Semoga membantu:)

1. Hal pertama yang perlu dilakukan adalah download virtualbox, sudah tersebar dimana-mana di google juga sudah banyak sekali

2. Setelah selesai download lalu buka aplikasi nya, akan muncul tampilan seperti berikut
3. Lalu tinggal next-next saja seperti gambar di bawah

4. Jika muncul peringatan seperti ini, klik saja yes
5. Lalu pilih install dan klik yes


Dan taraaa sudah selesai menginstall VirtualBox