Install Alpine Linux In Virtualbox
Tags: laravel, alpinelinux, linux, development
Published: 2024-05-09 02:57:18


Bismillahirahmanirahim.

Aku tulis sikit nota untuk diri sendiri dan juga untuk orang lain yang berminat nok blajor cara-cara dan proses installasi OS Linux untuk kegunaan pembangunan sistem ( particularly PHP , mysql dan Laravel ) . aku pakai Alpine Linux. 

```
Tutorial ini ditulis dalam Bahasa Tranung. 
This tutorial written in Malay Language (Terengganu Accent).
Level : Intermediate with basic vi editor knowladge
```
 

Dulu, aku guna _full blown_ OS Linux untuk buat pembangunan sistem seperti Debian dan Manjaro  atas mesin yang sama berkongsi dengan Windows. Kemudian, aku guna full OS Linux Debian dan Linux MX ( debian base ) atas VirtualBox dan ada juga setup Debian atas WSL2. 

Dengan adanya Virtualbox/WSL2, mudoh untuk setup sistem berdasarkan php version, termasuklah php hok lama-lama. Alternatif lain adalah dengan menggunakan docker, boleh tukor-tukor php version, memandangkan ram pc aku dok besor mana, jadi docker dok sesuai untuk aku. 

Untuk setup  Alpine Linux, target aku adalah untuk menggunakan ram yang minimum sebab pc aku miskin ram. Ni setak untuk development sistem je. bukang untuk main game atau tengok movie.  

Dalam alpine linux ni aku akan setup i3wm , lightdm, neovim, shell fish 

**1. Download Alpine**

Gi ke laman  [Alpine Download](https://alpinelinux.org/downloads/),  amik hok virtual. x86_64 , mung nok amik hok standard pun boleh, tapi penggunaan ram dia dok sama lah, sebab hok virtual tu dia doh ubahsuai kernel bersesuaian untuk kegunaan virtual sahaja. 

**2. Setup Permulaan**

Dalam virtualbox, create new machine, set 1GB ram, 15Gb hdd. 

jangan lupa set linux type
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ha9su6m77zei159zppli.png)

Ingatan: Kalau nok molek, pastikan mung reserve 5GB pada hdd, contoh katakan mung nok set 20GB hdd untuk sistem mung, mung tamboh 5GB lagi, jadikan 25GB. Sebab alpine akan buat swap file dalam 2gb hingga 4 gb secara auto ikut jumlah ram yang diset . boleh baca  [sini](https://wiki.alpinelinux.org/wiki/Alpine_setup_scripts)

rujuk [sini](https://www.linkedin.com/pulse/installing-alpine-linux-virtual-machine-razvan-alexandru-ionica), untuk tutorial bergambar. 

**3. Setup Alpine**

Bila doh boot dalam virtualbox, masukkan username root dan tekan enter

```
#setup-alpine ( tekan enter ) 
```
Setup Keyboard (tulis us enter pah tu taip us skali lagi
) 
Set Hostname  (localhost atau local atau alpine atau nama mung)
Set up Network Connection (eth0)
Set ip address ( dhcp )
Any Manual network configuration ? ( no ) 
Setting up Root Password ( ikut panda mung lah)
Set the Time Zone (Asia/Kuala_Lumpur)
Set proxy ( none ) 
Select Alpine Linux Mirror [ enter ]
Setup a Regular User Account [ set user biasa ]
Choose Secure Shell Daemon / ssh server .. pakai dropbear 
Disk Partitioning
- sda
- sys
- y untuk erace partition dan proceed installation 

bila siap setup, reboot 

jangan lupa remove boot iso. kemudian start balik virtualbox machine ni. 

**3.1. Post Installation**

ada sesetengoh orang suka pakai sudo untuk jalankan arahan root. 

enablekan community repo dulu 
```
#sed -i 's/#\(.*\/community\)/\1/' /etc/apk/repositories
```
```
#apk update
#apk add sudo 
```
```
echo '%wheel ALL=(ALL) ALL' > /etc/sudoers.d/wheel
adduser namauser wheel
```
[rujuk sini untuk bagi sudo privileges kepada user](https://ostechnix.com/add-delete-and-grant-sudo-privileges-to-users-in-alpine-linux/) 

**4. Setup i3**
ni kita nok setup x windows guna x11,  bukang guna wayland.

```
#setup-xorg-base
```
Tunggu xorg diinstall.. banyok gok package dia. 

```
#apk add xf86-video-fbdev xf86-video-vesa
#apk add font-terminus i3wm i3status dmenu xterm st tmux dbus font-hack xsel
```
Selesai install, cuba i3 

```
#startx /usr/bin/i3
```
tekan windows+ enter 

```
#reboot
```

tekan enter untuk first config i3 
pilih  win key atau alt key untuk set modifier key . biasa pilih win key

[step penuh rujuk sini](https://wiki.alpinelinux.org/wiki/I3wm) 



**4.1 Install Lightdm**

lightdm ni optional, tak dok pun dok apa, ada comel gok kadang. 

```
# apk add lightdm-gtk-greeter
# rc-update add lightdm
```

```
#reboot
```
 
try login balik , kalu ada masalah , tekan ctrl+alt F1 untuk masuk login ke tty lain

[Rujukan panjang berjela-jela sini ] (https://wiki.archlinux.org/title/LightDM) dan [sini](https://breder.org/alpine-setup)

Bila dah dapat login dengan lightdm, log masuk dengan user , bukan root. nanti i3 akan minta setkan modifier untuk user 

tekan windows+ enter , nanti xterm akan keluor .. 

tukar xterm ke stterm 

```
$vi .config/i3/config
```
cari i3-sensible-terminal 

tukar ke st 

exit terminal 
tekan window+shift+e untuk keluar i3
lepas tu log masuk balik 

untuk besar kan font dari terminal , tekan ctrl+shift+pageup


**4.2 enable copy & paste**

pastikan dekat config virtualbox, Setting->General->Advance , Shared Clipboard - bidirectional. 

```
# apk add virtualbox-guest-additions virtualbox-guest-additions-x11
# rc-service virtualbox-guest-additions start
# rc-update add virtualbox-guest-additions boot 
```

```
# rc-service virtualbox-drm-client start
# rc-update add virtualbox-drm-client default
```

Sebab di para 3 , kita dah start i3, dan buat config dia .. jadi dalam config i3 ( .config/i3/config ), kita letak baris ni

```
exec --no-startup-id VBoxClient --clipboard
```
```
#reboot
``` 

**5 Install development tools**

5.1 neovim + lazyvim

```
$sudo apk add neovim curl nodejs npm git clang
```
```
#su username 
```
pastikan kita duduk dalam user , bukan root . 

```
$git clone https://github.com/LazyVim/starter ~/.config/nvim
```
Cuba start nvim 
```
$nvim 
```

dalam nvim .. taip : dan tulis Mason - enter

install intelephense lsp guna mason  

5.2 fish shell + omf + theme + plugin 

```
$sudo apk add fish
```

```
sudo vi /etc/shadow 

```
cari user, tukar shell ash ke /usr/bin/fish

```
$curl https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install | fish
```
```
$omf install tmux-zen 
$omf install lambda-zero
```

5.3 php + composer 

Install Php untuk kegunaan laravel 

```
$sudo apk add composer php php-curl php-dom php-tokenizer php-xml php-xmlwriter php-session php-fileinfo php-pdo php-pdo_mysql  php82-gd php82-simplexml
```

5.4 mariadb 
```
apk add mariadb mysql-client
```
```
/etc/init.d/mariadb setup
```
```
rc-service mariadb start
```
```
rc-update add mariadb default 
```
```
mysql_secure_installation 
```

dalam mood root 

```
vi /etc/my.cnf
```
paste setting ini sebab kita nok pakai mysql sorang je, bukan nok jadikan mysql sebagai server .. jadi kita kuruskan dia punye setting. 

```
innodb_buffer_pool_size=5M
innodb_log_buffer_size=256K
query_cache_size=0
max_connections=10
key_buffer_size=8
thread_cache_size=0
host_cache_size=0
innodb_ft_cache_size=1600000
innodb_ft_total_cache_size=32000000

# per thread or per operation settings
thread_stack=131072
sort_buffer_size=32K
read_buffer_size=8200
read_rnd_buffer_size=8200
max_heap_table_size=16K
tmp_table_size=1K
bulk_insert_buffer_size=0
join_buffer_size=128
net_buffer_length=1K
innodb_sort_buffer_size=64K

#settings that relate to the binary log (if enabled)
binlog_cache_size=4K
binlog_stmt_cache_size=4K
```

{% embed  https://www.youtube.com/embed/NTA2fVVc4t4  %}
 

Rujukan

[Akos.ma](https://akos.ma/blog/alpine-linux-in-virtualbox/)
[linuxiac.com](https://linuxiac.com/how-to-install-alpine-linux/)
[http://www.lazyvim.org/installation](http://www.lazyvim.org/installation)
[Oh-My-Fish](https://github.com/oh-my-fish/oh-my-fish)
[Tocker.ca](http://www.tocker.ca/2014/03/10/configuring-mysql-to-use-minimal-memory.html)