bersama catatan peribadi & teknikalnya.

Apa Yang Saya Boleh Buat Dengan Git?


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

Hantaran ini saya tulis sebelum mengenali OpenSSH.


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

Kali ini cuba pasang FreeBSD pula sebagai VM dengan menggunakan Virt-Manager melalui libvirt. 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. Bina Custom Kernel untuk VirtFS di sistem tetamu FreeBSD tak berjaya.
  3. 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.

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


Boleh rujuk hantaran saya yang lain di QEMU/KVM, FreeBSD & ZFS#Chroot.


Keluar dari chroot apabila habis urusan:-
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 perintah baris 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 arahan 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 Xfce4, saya cipta fail ~/.xinitrc dengan arahan 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 tambah 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. Buat direktori .ssh di $HOME.
    mkdir .ssh
  3. Jana kunci SSH:-
    ssh-keygen -f .ssh/id_rsa.fbsd-share
  4. Di web browser, tambahkan kedua-dua kunci 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 kunci 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 kunci 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 perintah baris berikut di terminal kedua-dua sistem:-
    git clone git@github.com-fbsd-share:pengguna/fbsd-share.git
    sekiranya menggunakan GitHub; dan
    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 tambah fail commit sebagai satu 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 main
    Skrip ini saya letakkan di dalam repositori / projek.
    Jadi selepas itu, apabila saya mahu kemaskini perubahan kepada repositori / projek, saya hanya perlu jalankan arahan 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 dikemaskini:
Top