Apa Yang Saya Boleh Buat Dengan Git?


geeky stuff
Jawapan: Berkongsi fail dan direktori di mana-mana sahaja.


Macam sudah tak ada kerja sangat. Sebolehnya cuba macam-macam walaupun tak digunakan dan tak diperlukan.

Kali ini cuba pasang FreeBSD pula di Mesin Maya.

Seperti biasa; hos-nya Arch Linux, tetamu-nya FreeBSD.

Berbanding sistem-sistem lain yang tiada masalah untuk berkongsi fail / direktori, dengan FreeBSD ini ada isu pula, iaitu:-

  1. Setup NFS tak berjaya. Mungkin masalahnya adalah pada konfigurasi.
  2. Setup Samba tak berjaya. Mungkin bermasalah di bahagian konfigurasi juga.
  3. Bina Custom Kernel untuk VirtFS di sistem tetamu FreeBSD tak berjaya.
  4. Mount imej qcow2 untuk FreeBSD ini di sistem hos pula; sistem berformat UFS ini hanya boleh dibaca, tiada akses menulis bagi-nya.

Jalan terakhir (last resort) yang mampu difikirkan, setup git di kedua-dua sistem.

Atau kalau tidak mahu susah-susah set up git, boleh juga manfaatkan simpanan awan (cloud storage) yang tumbuh bak cendawan dewasa ini.

Saya sudah bereksperimentasi dengan qemu melalui baris perintah, dan juga dengan virt-manager.

Kali ini diakui menggunakan virt-manager adalah lebih baik, kerana paparan skrin penuh dari qemu jadi mengecil, dan sebaliknya pula apabila dijalankan melalui virt-manager.

Sebelum Pemasangan


Pastikan tetapan bagi cakera maya-nya adalah seperti berikut:-

  • Device type: VirtIO Disk
  • Disk bus: VirtIO

Untuk Virtual Network Interface pula, pastikan yang berikut:-

  • Network source: Virtual network 'default' : NAT
  • Device model: virtio
  • Pastikan juga Link state-nya aktif.

Semasa Pemasangan


Biarkan installer yang menjalankan kerja untuk berhubung dengan rangkaian Internet.


Selesai tambah pengguna, pilih Exit. Kemudian di bahagian Manual Configuration, pilih <YES> untuk berada di dalam situasi chroot.

Semasa Pemasangan, di dalam chroot


Tambahkan baris-baris berikut di fail /boot/loader.conf untuk load modul virtio ketika boot:-

virtio_load="YES"
virtio_pci_load="YES"
virtio_blk_load="YES"
if_vtnet_load="YES"
virtio_balloon_load="YES"


Tambahkan baris-baris berikut di fail /etc/fstab:-

# sed -ibak "s/ada/vtbd/g" /etc/fstab


Langkah seterusnya, pasang pakej-pakej yang diperlukan. FreeBSD sekarang sudah ada sediakan pakej binari. Senang kerja.

pkg update


Saya perlukan pakej-pakej berikut untuk set up git mengikut cara saya.

pkg install sudo vim xorg xfce chromium git zsh


Masukkan pengguna ke dalam kumpulan video dan wheel. Gantikan user dengan nama sendiri.

pw groupmod video -m user || pw groupmod wheel -m user


Tambahkan baris berikut di fail /boot/loader.conf:-

kern.vty=vt


Di fail /etc/rc.conf:-

dbus_enable="YES"


Keluar dari chroot:-

exit


Pilih <Live CD>. Login sebagai root, dan tutup sistem dengan baris berikut:-

shutdown -p now


Berkemungkinan besar sistem tetamu FreeBSD boot kembali dari virt-manager, dan berlaku sekatan di ‘sleeping for retry’.

Tekan Ctrl + C untuk login di tty.

Kemudian, masuk semula sebagai root dan tutup sistem dengan baris perintah seperti yang dinyatakan sebelum ini.

Sesudah itu, bolehlah buang CDROM yang ditambah untuk pemasangan tadi dan jalankan semula sistem FreeBSD di sistem maya dengan virt-manager.

Usai Pemasangan, di dalam Sistem Tetamu FreeBSD


  1. Login sebagai root dahulu untuk menjalankan visudo bagi menambah pengguna ke dalam sudo.
  2. Keluar.
  3. Login sebagai pengguna pula.
  4. Jalankan baris perintah berikut untuk bertukar shell kepada zsh.
    chsh -s /usr/local/bin/zsh user
  5. Keluar dan masuk semula sebagai pengguna.
  6. Boleh jalankan perintah pwd untuk memastikan pengguna di dalam direktori mana. Pastikan berada di /home/user, atau dua istilah lainnya adalah $HOME atau ~.
  7. Disebabkan saya menggunakan Desktop Environment Xfce, saya cipta fail ~/.xinitrc dengan baris perintah berikut:-
    echo ". /usr/local/etc/xdg/xfce4/xinitrc" > .xinitrc
  8. Tukar kebenaran fail supaya boleh dijalankan (executed).
    chmod +rx .xinitrc
  9. Dari tty,
    startx
    untuk masuk ke Xfce.


Di sistem hos Arch, jalankan virt-viewer sebagai superuser untuk memudahkan proses melihat skrin penuh hanya dengan menekan papan kekunci F11.


Menggunakan web browser, masuk ke akaun GitHub atau GitLab yang dimiliki dan cipta repositori / projek fbsd-share untuk kegunaan berkongsi fail ini.

Cara Set Up Git di kedua-dua sistem hos Arch dan tetamu FreeBSD


Sekarang, mulalah set up git ya? Proses penyediaan ini adalah sama di kedua-dua sistem, sebagai pengguna.
  1. Set up git-config:-
    git config --global user.name "nama-pengguna"
    git config --global user.email "alamat-emel-pengguna"
    git config --global pull.rebase false
  2. Cipta direktori .ssh di $HOME.
    mkdir .ssh
  3. Jana kekunci SSH:-
    ssh-keygen -f .ssh/id_rsa.fbsd-share
  4. Di web browser, tambahkan kedua-dua kekunci SSH yang dijana dari kedua-dua sistem.
    Tips

    Pelaksanaan Chromium di FreeBSD adalah /usr/local/bin/chrome.

    Seandainya menggunakan GitHub, pergi ke:-
    • Repository fbsd-share > Settings > Deploy keys > Add deploy key.
    • Masukkan Title. Di ruangan Key, salin kekunci SSH dari fail ~/.ssh/id_rsa.fbsd-share.pub dan tandakan kotak 'Allow write access'.
    • Add key.


    Seandainya menggunakan GitLab, pergi ke:-

    • Project fbsd-share > Settings > Repository > Deploy Keys > Expand.
    • Masukkan Title. Di ruangan Key, salin kekunci SSH dari fail ~/.ssh/id_rsa.fbsd-share.pub dan tandakan kotak 'Write access allowed'.
    • Add Key.
  5. Kembali ke terminal, cipta fail .ssh/config.
    Sekiranya menggunakan GitHub:-
    # akaun untuk berkongsi fail di antara hos Arch dan tetamu FreeBSD di GitHub
    Host github.com-fbsd-share
        HostName github.com
        User pengguna
        IdentitiesOnly yes
        IdentityFile ~/.ssh/id_rsa.fbsd-share

    Sekiranya menggunakan GitLab:-
    # akaun untuk berkongsi fail di antara hos Arch dan tetamu FreeBSD di GitLab
    Host gitlab.com-fbsd-share
        HostName gitlab.com
        User pengguna
        IdentitiesOnly yes
        IdentityFile ~/.ssh/id_rsa.fbsd-share
  6. Untuk klon repositori / projek, jalankan baris perintah berikut di terminal kedua-dua sistem:-
    git clone git@github.com-fbsd-share:pengguna/fbsd-share.git
    sekiranya menggunakan GitHub;
    git clone git@gitlab.com-fbsd-share:pengguna/fbsd-share.git
    sekiranya menggunakan GitLab.


    Perhatikan, github.com-fbsd-share atau gitlab.com-fbsd-share selepas git@ adalah sama dengan Host yang di-highlight-kan di fail .ssh/config di atas.

  7. Sebagai contoh, git clone yang pertama kali dijalankan akan memberi pengeluaran berikut di terminal:-
    Cloning into 'fbsd-share'...
    The authenticity of host 'gitlab.com (172.65.251.78)' can't be established.
    ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw.
    No matching host key fingerprint found in DNS.
    Are you sure you want to continue connecting (yes/no)? yes
    Taip 'yes', dan pengeluaran seterusnya adalah:-
    Warning: Permanently added 'gitlab.com' (ECDSA) to the list of known hosts.
    remote: Enumerating objects: 59, done.
    remote: Counting objects: 100% (59/59), done.
    remote: Compressing objects: 100% (47/47), done.
    remote: Total 59 (delta 25), reused 32 (delta 9), pack-reused 0
    Receiving objects: 100% (59/59), 18.04 KiB | 1.06 MiB/s, done.
    Resolving deltas: 100% (25/25), done.

    menandakan bahawa repositori / projek telah berjaya di-klon di sistem.
  8. Jangan lupa untuk jalankan 'commit' dan 'git pull' setiap kali berlakunya sebarang perubahan kepada repositori / projek. Saya cipta fail commit yang boleh dilaksanakan dengan mencipta skrip zsh seperti berikut:-
    #!/usr/bin/env zsh
    
    # Add changes to git.
    git add .
    
    # Commit changes.
    msg="update `date`"
    if [ $# -eq 1 ]
      then msg="$1"
    fi
    git commit -m "$msg"
    
    # Push source and build repos.
    git push -u origin master
    Skrip ini saya letakkan di dalam repositori / projek.


    Jadi selepas itu, apabila saya mahu kemaskini perubahan kepada repositori / projek, saya hanya perlu jalankan baris perintah berikut dari dalam direktori projek ini:-

    ./commit


    Senarionya adalah:-

    • Sekiranya perubahan dibuat kepada repositori dari hos Arch, 'commit' kemas kini di hos Arch dan kemudian, 'git pull' untuk kemas kini di tetamu FreeBSD.
    • Sekiranya perubahan dibuat kepada repositori dari tetamu FreeBSD, 'commit' kemas kini di tetamu FreeBSD dan kemudian, 'git pull' untuk kemas kini di hos Arch.


Tips:-

  • Untuk tutup sistem FreeBSD sebagai pengguna:-
    sudo shutdown -p now
  • Untuk memulakan semula FreeBSD sebagai pengguna:-
    sudo reboot


Kali terakhir halaman ini dikemaskini/disemak semula adalah pada .
Top