ืžืึทื›ืŸ MacBook Pro 2018 T2 ืึทืจื‘ืขื˜ ืžื™ื˜ ArchLinux (ื“ื•ืึทืœื‘ืึธืึธื˜)

ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื‘ื™ืกืœ ื›ื™ื™ืคึผ ื•ื•ืขื’ืŸ ื“ืขื ืคืึทืงื˜ ืึทื– ื“ื™ ื ื™ื™ึทืข ื˜ 2 ืฉืคึผืึธืŸ ื•ื•ืขื˜ ืžืึทื›ืŸ ืขืก ืื•ืžืžืขื’ืœืขืš ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืœื™ื ื•ืงืก ืื•ื™ืฃ ื“ื™ ื ื™ื™ึทืข 2018 ืžืึทืงื‘ืึธืึธืงืก ืžื™ื˜ ืึท ื˜ืึธื•ื˜ืฉื‘ืึทืจ. ืฆื™ื™ื˜ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ, ืื•ืŸ ืื™ืŸ ื“ื™ ืกื•ืฃ ืคื•ืŸ 2019, ื“ืจื™ื˜-ืคึผืึทืจื˜ื™ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื™ืžืคึผืœืึทืžืขื ืึทื“ ืึท ื ื•ืžืขืจ ืคื•ืŸ ื“ืจื™ื•ื•ืขืจืก ืื•ืŸ ืงืขืจืŸ ืคึผืึทื˜ืฉืึทื– ืคึฟืึทืจ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ ื“ื™ T2 ืฉืคึผืึธืŸ. ื“ืขืจ ื”ื•ื™ืคึผื˜ ืฉืึธืคืขืจ ืคึฟืึทืจ ืžืึทืงื‘ืึธืึธืง ืžืึธื“ืขืœืก 2018 ืื•ืŸ ื ื™ื™ึทืขืจ ื™ืžืคึผืœืึทืžืึทื ืฅ VHCI ืึธืคึผืขืจืึทืฆื™ืข (ืคืึทืจื‘ื™ื ื“ืŸ / ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ / ืขื˜ืง ืึธืคึผืขืจืึทืฆื™ืข), ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ื’ืขื–ื•ื ื˜ ืึธืคึผืขืจืึทืฆื™ืข.

ืคึผืจื•ื™ืขืงื˜ mbp2018-bridge-drv ืฆืขื˜ื™ื™ืœื˜ ืื™ืŸ 3 ื”ื•ื™ืคึผื˜ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ:

  • BCE (Buffer Copy Engine) - ื™ืกื˜ืึทื‘ืœื™ืฉื™ื– ื“ื™ ื”ื•ื™ืคึผื˜ ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ืงืึทื ืึทืœ ืžื™ื˜ T2. VHCI ืื•ืŸ Audio ื“ืึทืจืคืŸ ื“ืขื ืงืึธืžืคึผืึธื ืขื ื˜.
  • VHCI ืื™ื– ืึท ื•ืกื‘ ื•ื•ื™ืจื˜ื•ืึทืœ ื”ืึธืกื˜ ืงืึธื ื˜ืจืึธืœืœืขืจ; ื“ื™ ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ, ืžื•ื™ื– ืื•ืŸ ืื ื“ืขืจืข ืกื™ืกื˜ืขื ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ื–ืขื ืขืŸ ืฆื•ื’ืขืฉื˜ืขืœื˜ ื“ื•ืจืš ื“ืขื ืงืึธืžืคึผืึธื ืขื ื˜ (ืื ื“ืขืจืข ื“ืจื™ื•ื•ืขืจืก ื ื•ืฆืŸ ื“ืขื ื‘ืึทืœืขื‘ืึธืก ืงืึธื ื˜ืจืึธืœืœืขืจ ืฆื• ืฆื•ืฉื˜ืขืœืŸ ืžืขืจ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™.
  • ืึทื•ื“ื™ืึธ - ืฉืึธืคืขืจ ืคึฟืึทืจ ื“ื™ T2 ืึทื•ื“ื™ืึธ ืฆื•ื‘ื™ื ื“, ื“ืขืจื•ื•ื™ื™ึทืœ ืฉื˜ื™ืฆื˜ ืึทื•ื“ื™ืึธ ืจืขื–ื•ืœื˜ืึทื˜ ื“ื•ืจืš ื“ื™ ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ืกืคึผื™ืงืขืจื– ืคื•ืŸ ื“ื™ ืžืึทืงื‘ืึธืึธืง


ื“ืขืจ ืฆื•ื•ื™ื™ื˜ืขืจ ืคึผืจื•ื™ืขืงื˜ ืื™ื– ื’ืขืจื•ืคืŸ macbook12-spi-driver, ืื•ืŸ ืขืก ื™ืžืคึผืœืึทืžืึทื ืฅ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืึทืจื‘ืขื˜ืŸ ืึทืŸ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืฉืึธืคืขืจ ืคึฟืึทืจ ื“ื™ ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ, SPI ื˜ืจืึทืงืงืคึผืึทื“ ืื•ืŸ ื˜ืึธื•ื˜ืฉื‘ืึทืจ ืคึฟืึทืจ MacBook Pro ืฉืคึผืขื˜ 2016 ืื•ืŸ ืฉืคึผืขื˜ืขืจ. ืขื˜ืœืขื›ืข ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ / ื˜ืจืึทืงืงืคึผืึทื“ ื“ืจื™ื•ื•ืขืจืก ื–ืขื ืขืŸ ืื™ืฆื˜ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ื™ ืงืขืจืŸ, ืกื˜ืึทืจื˜ื™ื ื’ ืžื™ื˜ ื•ื•ืขืจืกื™ืข 5.3.

ืกื•ืคึผืคึผืึธืจื˜ ืคึฟืึทืจ ื“ืขื•ื•ื™ืกืขืก ืึทื–ืึท ื•ื•ื™ Wi-Fi, ื˜ืึธื•ื˜ืฉืคึผืึทื“, ืขื˜ืง ืื™ื– ืื•ื™ืš ื™ืžืคึผืœืึทืžืขื ืึทื“ ืžื™ื˜ ืงืขืจื ืขืœ ืคึผืึทื˜ืฉืึทื–. ืงืจืึทื ื˜ ืงืขืจืŸ ื•ื•ืขืจืกื™ืข 5.3.5-1

ื•ื•ืึธืก ืึทืจื‘ืขื˜ ืื™ืฆื˜

  1. NVMe
  2. ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ
  3. ื•ืกื‘-C (ื˜ื”ื•ื ื“ืขืจื‘ืึธืœื˜ ืื™ื– ื ื™ืฉื˜ ื˜ืขืกื˜ืขื“; ื•ื•ืขืŸ ื“ื™ ืžืึธื“ื•ืœืข ืื™ื– ืœืึธื•ื“ื™ื“ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ, ืขืก ืคืจื™ื–ื™ื– ื“ื™ ืกื™ืกื˜ืขื)
  4. ื˜ืึธื•ื˜ืฉื‘ืึทืจ (ืžื™ื˜ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืงืขืจ ืื•ื™ืฃ ื“ื™ Fn ืฉืœื™ืกืœืขืŸ, ื‘ืึทืงืœื™ื™ื˜, ESC, ืขื˜ืง.)
  5. ื’ืขื–ื•ื ื˜ (ื‘ืœื•ื™ื– ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ืกืคึผื™ืงืขืจื–)
  6. ื•ื•ื™-ืคื™ ืžืึธื“ื•ืœืข (ื“ื•ืจืš brcmfmac ืื•ืŸ ื‘ืœื•ื™ื– ื“ื•ืจืš iw)
  7. DisplayPort ืื™ื‘ืขืจ USB-C
  8. ืกืขื ืกืึธืจืก
  9. ืกื•ืกืคึผืขื ื“ / ื ืขืžืขื  ื–ื™ื› ื•ื•ื™ื“ืขืจ (ื˜ื™ื™ืœ)
  10. ืขื˜ืง ..

ื“ืขืจ ื˜ื•ื˜ืึธืจื™ืึทืœ ืื™ื– ืึธื ื•ื•ืขื ื“ืœืขืš ืคึฟืึทืจ macbookpro15,1 ืื•ืŸ macbookpro15,2. ื“ืขืจ ืึทืจื˜ื™ืงืœ ืื™ื– ื’ืขื ื•ืžืขืŸ ื•ื•ื™ ืึท ื™ืงืขืจ ืคึฟื•ืŸ Github ืื™ืŸ ืขื ื’ืœื™ืฉ. ืคื•ื  ื“ืึทื ืขื˜. ื ื™ื˜ ืึทืœืฅ ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ื’ืขืืจื‘ืขื˜, ืึทื–ื•ื™ ืื™ืš ื’ืขื”ืื˜ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืึท ืœื™ื™ื–ื•ื ื’ ื–ื™ืš.

ื•ื•ืึธืก ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ

  • ื•ืกื‘-C ื“ืึทืงื™ื ื’ ืึทื“ืึทืคึผื˜ืขืจ ืฆื• ื•ืกื‘ (ืœืคึผื—ื•ืช ื“ืจื™ื™ ื•ืกื‘ ื™ื ืคึผื•ืฅ ืคึฟืึทืจ ืงืึทื ืขืงื˜ื™ื ื’ ืึท ืžื•ื™ื–, ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ, ื•ืกื‘ ืžืึธื“ืขื ืึธื“ืขืจ ื˜ืขืœืขืคืึธืŸ ืื™ืŸ ื˜ืขื˜ื”ืขืจื™ื ื’ ืžืึธื“ืข). ื“ืึธืก ืื™ื– ื ืึธืจ ื ื™ื™ื˜ื™ืง ืื™ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืกื˜ืึทื’ืขืก ืคื•ืŸ ื™ื ืกื˜ืึทืœื™ืจื•ื ื’
  • ื•ืกื‘ ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ
  • ื•ืกื‘ / ื•ืกื‘-C ื‘ืœื™ืฅ ืคืึธืจ ืžื™ื ื™ืžื•ื 4 ื’ื™ื’ืื‘ื™ื™ื˜

1. ื“ื™ืกื™ื™ื‘ืึทืœ ื“ื™ ืคืึทืจื‘ืึธื˜ ืื•ื™ืฃ ื‘ื•ื˜ื™ื ื’ ืคื•ืŸ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืžื™ื“ื™ืึท

https://support.apple.com/en-us/HT208330
https://www.ninjastik.com/support/2018-macbook-pro-boot-from-usb/

2. ืึทืœืึทืงื™ื™ื˜ ืคืจื™ื™ ืคึผืœืึทืฅ ื ื™ืฆืŸ ื“ื™ืกืง ื•ื˜ื™ืœื™ื˜ื™

ืคึฟืึทืจ ืงืึทื ื•ื•ื™ื ื™ืึทื ืก, ืื™ืš ืžื™ื“ ืึทืœืึทืงื™ื™ื˜ื™ื“ 30 ื’ื‘ ืฆื• ื“ื™ ื“ื™ืกืง, ืคืึธืจืžืึทื˜ื˜ื™ื ื’ ืขืก ืื™ืŸ ืขืงืกืคืึทื˜ ืื™ืŸ ื“ื™ืกืง ื•ื˜ื™ืœื™ื˜ื™ ื–ื™ืš. ืคึผืึทืจื˜ื™ืฉืึทื ื™ื ื’ ืึท ื’ืฉืžื™ื•ืช ื“ื™ืกืง ื“ื™ืกืง ื•ื˜ื™ืœื™ื˜ื™.

3. ืฉืึทืคึฟืŸ ืึทืŸ ื™ืกืึธ ื‘ื™ืœื“

ืึธืคึผืฆื™ืขืก:

  1. ืื™ืจ ืงืขื ืขืŸ ื’ื™ื™ืŸ ื“ื™ ืคึผืฉื•ื˜ ืžืึทืจืฉืจื•ื˜ ืื•ืŸ ืืจืืคืงืืคื™ืข ืึท ืคืึทืจื˜ื™ืง ื‘ื™ืœื“ ืžื™ื˜ ืงืขืจืŸ 5.3.5-1 ืื•ืŸ ืคึผืึทื˜ืฉืึทื– ืคึฟื•ืŸ aunali1 ืœื™ื ืง ืฆื• ื“ื™ ืคืึทืจื˜ื™ืง ื‘ื™ืœื“
  2. ืฉืึทืคึฟืŸ ืึท ื‘ื™ืœื“ ื–ื™ืš ื“ื•ืจืš archlive (ืึท ืกื™ืกื˜ืขื ืžื™ื˜ ืึทืŸ ืึทืจื˜ืฉืึท ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ ืื™ื– ืคืืจืœืื ื’ื˜)

    ื™ื ืกื˜ืึทืœื™ืจืŸ archiso

    pacman -S archiso

    
    cp -r /usr/share/archiso/configs/releng/ archlive
    cd archlive
    

    ืœื™ื™ื’ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืฆื• pacman.conf:

    
    [mbp]
    Server = https://packages.aunali1.com/archlinux/$repo/$arch
    

    ืžื™ืจ ืื™ื’ื ืึธืจื™ืจืŸ ื“ื™ ืึธืจื™ื’ื™ื ืขืœ ืงืขืจืŸ ืื™ืŸ pacman.conf:

    IgnorePkg   = linux linux-headers
    

    ืœื™ื™ื’ ื“ื™ ื ื™ื™ื˜ื™ืง ืคึผืึทืงืึทื“ื–ืฉืึทื–, ืื™ืŸ ื“ื™ ืกื•ืฃ ืœื™ื™ื’ืŸ ื“ื™ ืœื™ื ื•ืงืก-ืžื‘ืคึผ ืงืขืจืŸ ืื•ืŸ ืœื™ื ื•ืงืก-ืžื‘ืคึผ-ื›ืขื“ืขืจืก

    ...
    wvdial
    xl2tpd
    linux-mbp
    linux-mbp-headers
    

    ืžื™ืจ ื˜ื•ื™ืฉืŸ ื“ื™ ืฉืจื™ืคื˜ ืฆื• ืึทืจื‘ืขื˜ืŸ ืื™ืŸ ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื• ืžืึธื“ืข (ืคืึทืจื‘ื™ื™ึทื˜ืŸ pacstrap -C ืžื™ื˜ pacstrap -i -C):

    sudo nano /usr/bin/mkarchiso

    # Install desired packages to airootfs
    _pacman ()
    {
        _msg_info "Installing packages to '${work_dir}/airootfs/'..."
    
        if [[ "${quiet}" = "y" ]]; then
            pacstrap -i -C "${pacman_conf}" -c -G -M "${work_dir}/airootfs" $* &> /dev/null
        else
            pacstrap -i -C "${pacman_conf}" -c -G -M "${work_dir}/airootfs" $*
        fi
    
        _msg_info "Packages installed successfully!"
    }

    ืฉืึทืคึฟืŸ ืึท ื‘ื™ืœื“:

    sudo ./build.sh -v

    ื“ืจื•ืง Y ืฆื• ื”ืึธืคึผืงืขืŸ ืื™ื’ื ืึธืจื™ืจื˜ ืคึผืึทืงืึทื“ื–ืฉืึทื–, ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ ื“ื™ ื™ืกืึธ ื‘ื™ืœื“ ืฆื• ื“ื™ ื•ืกื‘ ื‘ืœื™ืฅ ืคืึธืจ:

    sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M

4. ืขืจืฉื˜ืขืจ ืฉื˜ื™ื•ื•ืœ

ืจืขื‘ืึธืึธื˜ ืžื™ื˜ ื“ื™ ื‘ืœื™ืฅ ืคืึธืจ ืื•ืŸ ื“ื™ ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ ื™ื ืกืขืจื˜ืึทื“. ื“ืจื•ืง ืึธืคึผืฆื™ืขืก ื•ื•ืขืŸ ื“ืขืจ ืขืคึผืœ ืื™ื– ืืจื•ื™ืก, ืกืขืœืขืงื˜ื™ืจืŸ EFI BOOT.

ื•ื•ื™ื™ึทื˜ืขืจ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื“ืจื™ืงืŸ ื“ื™ "E" ืฉืœื™ืกืœ ืื•ืŸ ืึทืจื™ื™ึทืŸ ืื™ืŸ ื“ื™ ืกื•ืฃ ืคื•ืŸ ื“ื™ ื‘ืึทืคึฟืขืœ ืฉื•ืจื” module_blacklist = ื˜ืึทื ื“ืขืจื‘ืึธืœื˜. ืื•ื™ื‘ ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ื’ืขื˜ืืŸ, ื“ื™ ืกื™ืกื˜ืขื ืงืขืŸ ื ื™ืฉื˜ ืฉื˜ื™ื•ื•ืœ ืื•ืŸ ืึท Thunderbolt ICM ื˜ืขื•ืช ื•ื•ืขื˜ ื“ืขืจืฉื™ื™ึทื ืขืŸ.

ื ื™ืฆืŸ fdisk / cfdisk ืžื™ืจ ื’ืขืคึฟื™ื ืขืŸ ืื•ื ื“ื–ืขืจ ืฆืขื˜ื™ื™ืœื•ื ื’ (ืคึฟืึทืจ ืžื™ืจ ืขืก ืื™ื– nvme0n1p4), ืคึฟืึธืจืžืึทื˜ ืขืก ืื•ืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ืึทืจืงื™ื™ื•ื•. ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ื‘ืึทืึทืžื˜ืขืจ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืึธื“ืขืจ ืกื™ื™ื“ื•ื•ื™ื™ื–.

ืžื™ืจ ื–ืขื ืขืŸ ื ื™ืฉื˜ ืงืจื™ื™ื™ื˜ื™ื ื’ ืึท ืฉื˜ื™ื•ื•ืœ ืฆืขื˜ื™ื™ืœื•ื ื’; ืžื™ืจ ื•ื•ืขืœืŸ ืฉืจื™ื™ึทื‘ืŸ ื“ื™ ื‘ืึธืึธื˜ืœืึธืึทื“ืขืจ ืื™ืŸ /dev/nvme0n1p1
ื ืึธืš ื“ื™ ืกื•ื•ื™ื•ื•ืข ืื™ืŸ / mnt ืื™ื– ื’ืึธืจ ื’ืขืฉืืคืŸ ืื•ืŸ ืื™ื™ื“ืขืจ ืื™ืจ ืžืึทืš ืฆื• ืึทืจื˜ืฉ-ื˜ืฉืจืึธืึธื˜, ืฉืจื™ื™ึทื‘ืŸ:

mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash

ืœื™ื™ื’ ืฆื• /etc/pacman.conf:


[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch

ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ืงืขืจืŸ:


sudo pacman -S linux-mbp linux-mbp-headers
sudo mkinitcpio -p linux-mbp

ืžื™ืจ ืคืึทืจืฉืจื™ื™ึทื‘ืŸ ื˜ืึทื ื“ืขืจื‘ืึธืœื˜ ืื•ืŸ applesmc ืื™ืŸ /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ, ื˜ืึธื•ื˜ืฉื‘ืึทืจ, ืขื˜ืง

ื™ื ืกื˜ืึทืœื™ืจืŸ ื™ืึธ:


sudo pacman -S git gcc make fakeroot binutils
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

ื™ื ืกื˜ืึธืœื™ื ื’ ืžืึทื“ื–ืฉื•ืœื– ืคึฟืึทืจ ื“ื™ ื˜ืึธื•ื˜ืฉื‘ืึทืจ ืฆื• ืึทืจื‘ืขื˜ืŸ:


git clone --branch mbp15 https://github.com/roadrunner2/macbook12-spi-driver.git
cd macbook12-spi-driver
make install

ืœื™ื™ื’ ืžืึทื“ื–ืฉื•ืœื– ืฆื• ืกื˜ืึทืจื˜ืึทืคึผ: /etc/modules-load.d/apple.conf

industrialio_triggered_buffer
apple-ibridge
apple-ib-tb
apple-ib-als

ื™ื ืกื˜ืึธืœื™ื ื’ ืงืขืจืŸ ืžืึทื“ื–ืฉื•ืœื– ืคึฟืึทืจ ื“ื™ ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ. ืื™ืŸ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ anuali1 ืขืก ืื™ื– ืึท ืคืึทืจื˜ื™ืง ืคึผืขืงืœ, ืขืก ืื™ื– ื’ืขืจื•ืคืŸ apple-bce-dkms-git. ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืขืก, ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ ื“ื™ ืงืึทื ืกืึธื•ืœ:

pacman -S apple-bce-dkms-git

ืื™ืŸ ื“ืขื ืคืึทืœ, ื“ื™ ืงืขืจืŸ ืžืึธื“ื•ืœืข ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขืจื•ืคึฟืŸ apple-bce. ืื™ืŸ ื“ืขื ืคืึทืœ ืคื•ืŸ ื–ื™ืš-ืคึฟืึทืจื–ืึทืžืœื•ื ื’, ืขืก ืื™ื– ื’ืขืจื•ืคืŸ bce. ืึทืงืงืึธืจื“ื™ื ื’ืœื™, ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ืคืึทืจืฉืจื™ื™ึทื‘ืŸ ืึท ืžืึธื“ื•ืœืข ืื™ืŸ ื“ื™ MODULES ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืคื•ืŸ ื“ืขืจ mkinicpio.conf ื˜ืขืงืข, ื˜ืึธืŸ ื ื™ื˜ ืคืึทืจื’ืขืกืŸ ื•ื•ืึธืก ืžืึธื“ื•ืœืข ืื™ืจ ืื™ื ืกื˜ืึทืœื™ืจืŸ.

ืžืึทื ื•ืึทืœ ืคึฟืึทืจื–ืึทืžืœื•ื ื’:


git clone https://github.com/MCMrARM/mbp2018-bridge-drv.git
cd mbp2018-bridge-drv
make
cp bce.ko /usr/lib/modules/extramodules-mbp/bce.ko

ืœื™ื™ื’ ื“ื™ bce ืึธื“ืขืจ apple-bce ืžืึธื“ื•ืœืข ืฆื• ืกื˜ืึทืจื˜ืึทืคึผ: /etc/modules-load.d/bce.conf

bce

ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ื ื•ืฆืŸ ื“ื™ Fn ืงื ืขืคึผืœืขืš ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ ื“ื™ /etc/modprobe.d/apple-tb.conf ื˜ืขืงืข:

options apple-ib-tb fnmode=2

ืึทืคึผื“ื™ื™ื˜ื™ื ื’ ื“ื™ ืงืขืจืŸ ืื•ืŸ ื™ื ื˜ืจืึทืžืคืก.


mkinitcpio -p linux-mbp

ื™ื ืกื˜ืึทืœื™ืจืŸ ื™ื•ื•ื“:

sudo pacman -S networkmanager iwd

5. ืœืึธื•ื“ืขืจ

ืึทืžืึธืœ ืึทืœืข ื“ื™ ื”ื•ื™ืคึผื˜ ืคึผืึทืงืึทื“ื–ืฉืึทื– ื–ืขื ืขืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ ืื™ืŸ ื“ื™ ื˜ืฉืจืึธืึธื˜, ืื™ืจ ืงืขื ืขืŸ ืึธื ื”ื™ื™ื‘ืŸ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ื‘ืึธืึธื˜ืœืึธืึทื“ืขืจ.

ืื™ืš ื”ืึธื‘ ื ื™ื˜ ื’ืขืงืขื ื˜ ื‘ืึทืงื•ืžืขืŸ ื’ืจื•ื‘ ืฆื• ืึทืจื‘ืขื˜ืŸ. ื’ืจื•ื‘ ืฉื™ืš ืคึฟื•ืŸ ืึท ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื•ืกื‘ ืคืึธืจ, ืึธื‘ืขืจ ื•ื•ืขืŸ ืื™ืจ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ืคืึทืจืฉืจื™ื™ึทื‘ืŸ ืขืก ืื™ืŸ nvme ื“ื•ืจืš

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub

ื“ื™ ืกื™ืกื˜ืขื ืื™ื– ืืจื™ื™ืŸ ืื™ืŸ ืงืขืจื ืขืœ ืคึผืึทื ื™ืง, ืื•ืŸ ื ืึธืš ืจื™ืกื˜ืึทืจื˜ื™ื ื’ ืึท ื ื™ื™ึทืข ื ื•ืžืขืจ ื“ื•ืจืš ืึธืคึผืฆื™ืขืก ืื™ื– ื ื™ืฉื˜ ืืจื•ื™ืก. ืื™ืš ื”ืึธื‘ ื ื™ื˜ ื’ืขืคึฟื•ื ืขืŸ ืงื™ื™ืŸ ืงืœืึธืจ ืœื™ื™ื–ื•ื ื’ ืฆื• ื“ืขื ืคึผืจืึธื‘ืœืขื ืื•ืŸ ื“ืขืจื™ื‘ืขืจ ื‘ืึทืฉืœืึธืกืŸ ืฆื• ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ื‘ื•ื˜ื™ื ื’ ืžื™ื˜ Systemd-boot.

  1. ืงืึทื˜ืขืจ
    bootctl --path=/boot install

    ืื•ืŸ ืžื™ืจ ื’ื™ื™ืŸ ืื™ืŸ ืงืขืจื ืขืœ ืคึผืึทื ื™ืง. ืงืขืจ ืึทื•ื•ืขืง ื“ื™ ืžืึทืงื‘ืึธืึธืง, ืงืขืจ ืขืก ืื•ื™ืฃ ื•ื•ื™ื“ืขืจ, ื’ื™ื˜ ืึธืคึผืฆื™ืขืก (ื˜ืึธืŸ ื ื™ื˜ ืงืขืจ ืึทื•ื•ืขืง ื“ื™ ื•ืกื‘-C ื›ืึทื‘ ืžื™ื˜ ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ)

  2. ืžื™ืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทื– ืึท ื ื™ื™ึทืข EFI BOOT ืคึผืึธื–ื™ืฆื™ืข ืื™ื– ืืจื•ื™ืก ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ื“ื™ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืžื™ื˜ืœ
  3. ืžื™ืจ ืกืขืœืขืงื˜ื™ืจืŸ ืฆื• ืฉื˜ื™ื•ื•ืœ ืคึฟื•ืŸ ืึท ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื•ืกื‘ ืคืึธืจ, ื•ื•ื™ ื‘ืขืฉืึทืก ื“ืขืจ ืขืจืฉื˜ืขืจ ื™ื™ึทื ืžืึธื ื˜ื™ืจื•ื ื’ (ื˜ืึธืŸ ื ื™ื˜ ืคืึทืจื’ืขืกืŸ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ module_blacklist=thunderbolt)
  4. ืžื™ืจ ืึธื ืงืœืึทืคึผืŸ ืื•ื ื“ื–ืขืจ ื“ื™ืกืง ืื•ืŸ ื’ื™ื™ืŸ ืื™ืŸ ื“ื™ ืกื•ื•ื™ื•ื•ืข ื“ื•ืจืš ืึทืจื˜ืฉ-ื˜ืฉืจืึธืึธื˜


mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt

ืื•ื™ื‘ ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืคึฟืึทืจ ื“ื™ ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ ืฆื• ืึทืจื‘ืขื˜ืŸ ื‘ื™ื– ื“ื™ ืกื™ืกื˜ืขื ืื™ื– ื’ืึธืจ ืœืึธื•ื“ื™ื“ (ื“ืึธืก ืื™ื– ื ื™ื™ื˜ื™ืง ื•ื•ืขืŸ ื ื™ืฆืŸ luks/dm-crypt ืขื ืงืจื™ืคึผืฉืึทืŸ), ืฉืจื™ื™ึทื‘ืŸ ืขืก ืื™ืŸ ื“ื™ /etc/mkinicpio.conf ื˜ืขืงืข ืื™ืŸ ื“ื™ ืžืึธื“ื•ืœืขืก ืึธืคึผื˜ื™ื™ืœื•ื ื’:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

ืึทืคึผื“ื™ื™ื˜ื™ื ื’ ื“ื™ ืงืขืจืŸ ืื•ืŸ ื™ื ื˜ืจืึทืžืคืก.


mkinicpio -p linux-mbp

ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืกื™ืกื˜ืขืื“-boot

ืžื™ืจ ืจืขื“ืึทื’ื™ืจืŸ ื“ื™ /boot/loader/loader.conf ื˜ืขืงืข, ื•ื™ืกืžืขืงืŸ ืึทืœืฅ ื™ืŸ, ืื•ืŸ ืœื™ื™ื’ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข:

default arch
timeout 5
editor 1

ื’ื™ื™ืŸ ืฆื• ื“ื™ /boot/loader/Entries ื˜ืขืงืข, ืฉืึทืคึฟืŸ ื“ื™ arch.conf ื˜ืขืงืข ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ:

title arch
linux /vmlinuz-linux-mbp
initrd /initramfs-linux-mbp.img
options root=/dev/<b>nvme0n1p4</b> rw pcie_ports=compat

ืื•ื™ื‘ ืื™ืจ ื’ืขื•ื•ื™ื™ื ื˜ luks ืื•ืŸ lvm, ื“ืขืžืึธืœื˜

options cryptdevice=/dev/<b>nvme0n1p4</b>:luks root=/dev/mapper/vz0-root rw pcie_ports=compat

ืจืขื‘ืึธืึธื˜ ืื™ืŸ ืžืึทืงืึธืก.

6. ื•ื•ื™-ืคื™ ืกืขื˜ืึทืคึผ

ื•ื•ื™ ืขืก ืคืืจืงืขืจื˜ ืื•ื™ืก ืื™ืŸ ื“ื™ ืกื•ืฃ, MacOS ืกื˜ืึธืจื– ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ื˜ืขืงืขืก ืคึฟืึทืจ ื“ื™ ื•ื•ื™-ืคื™ ืึทื“ืึทืคึผื˜ืขืจ ืื™ืŸ ื“ืขืจ ื˜ืขืงืข /usr/share/firmware/wifi , ืื•ืŸ ืื™ืจ ืงืขื ืขืŸ ื ืขืžืขืŸ ื–ื™ื™ ืคึฟื•ืŸ ื“ืึธืจื˜ ืื™ืŸ ื“ื™ ืคืึธืจืขื ืคื•ืŸ ื‘ืœืึทื‘ื– ืื•ืŸ ืงืึธืจืžืขืŸ ื–ื™ื™ ืฆื• ื“ื™ brcmfmac ืงืขืจืŸ ืžืึธื“ื•ืœืข. ืื™ืŸ ืกื“ืจ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืื•ื™ืก ื•ื•ืึธืก ื˜ืขืงืขืก ื“ื™ื™ืŸ ืึทื“ืึทืคึผื˜ืขืจ ื ื™ืฆื˜, ืขืคึฟืขื ืขืŸ ืึท ื•ื•ืึธืงื–ืึทืœ ืื™ืŸ ืžืึทืงืึธืก ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ:

ioreg -l | grep C-4364

ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ืึท ืœืึทื ื’ ืจืฉื™ืžื”. ืžื™ืจ ื“ืึทืจืคึฟืŸ ื‘ืœื•ื™ื– ื˜ืขืงืขืก ืคึฟื•ืŸ ื“ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’ Requested Files:

"RequestedFiles" = ({"Firmware"="<b>C-4364__s-B2/maui.trx</b>","TxCap"="C-4364__s-B2/maui-X3.txcb","Regulatory"="C-4364__s-B2/<b>maui-X3.clmb</b>","NVRAM"="C-4364__s-B2/<b>P-maui-X3_M-HRPN_V-m__m-7.7.txt</b>"})

ืื™ืŸ ื“ื™ื™ืŸ ืคืึทืœ, ื“ื™ ื˜ืขืงืข ื ืขืžืขืŸ ืงืขืŸ ื–ื™ื™ืŸ ืึทื ื“ืขืจืฉ. ื ืึธื›ืžืึทื›ืŸ ื–ื™ื™ ืคื•ืŸ ื“ื™ /usr/share/firmware/wifi ื˜ืขืงืข ืฆื• ื“ื™ ื‘ืœื™ืฅ ืคืึธืจ ืื•ืŸ ืจืขื ืึทืžืข ื–ื™ื™ ื•ื•ื™ ื’ื™ื™ื˜:

    maui.trx -> brcmfmac4364-pcie.bin
    maui-X3.clmb -> brcmfmac4364-pcie.clm_blob
    P-maui-X3_M-HRPN_V-m__m-7.7.txt -> brcmfmac4364-pcie.Apple Inc.-<b>MacBookPro15,2.txt</b>

ืื™ืŸ ื“ืขื ืคืึทืœ, ื“ื™ ืœืขืฆื˜ืข ื˜ืขืงืกื˜ ื˜ืขืงืข ื›ึผื•ืœืœ ื“ื™ ืžืึธื“ืขืœ ื ืขืžืขืŸ; ืื•ื™ื‘ ื“ื™ื™ืŸ ืžืึธื“ืขืœ ืื™ื– ื ื™ืฉื˜ macbookpro15,2, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืจืขื ืึทืžืข ื“ืขื ื˜ืขืงืข ืื™ืŸ ืœื•ื™ื˜ ืžื™ื˜ ื“ื™ื™ืŸ ืžืึทืงื‘ืึธืึธืง ืžืึธื“ืขืœ.

ืจืขื‘ืึธืึธื˜ ืื™ืŸ ืึทืจื˜ืฉ.

ื ืึธื›ืžืึทื›ืŸ ื“ื™ ื˜ืขืงืขืก ืคื•ืŸ ื“ื™ ื‘ืœื™ืฅ ืคืึธืจ ืฆื• ื“ื™ /lib/firmware/brcm/ ื˜ืขืงืข


sudo cp brcmfmac4364-pcie.bin /lib/firmware/brcm/
sudo cp brcmfmac4364-pcie.clm_blob /lib/firmware/brcm/
sudo cp 'brcmfmac4364-pcie.Apple Inc.-<b>MacBookPro15,2.txt' /lib/firmware/brcm/

ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ื“ื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืคื•ืŸ ื“ื™ ืžืึธื“ื•ืœืข:


rmmod brcmfmac
modprobe brcmfmac

ืžื™ืจ ืžืึทื›ืŸ ื–ื™ื›ืขืจ ืึทื– ื“ื™ ื ืขืฅ ืฆื•ื‘ื™ื ื“ ืื™ื– ืืจื•ื™ืก ื“ื•ืจืš ifconfig/ip.
ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื•ื•ื™ืคื™ ื“ื•ืจืš iwctl

ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ึทื˜. ื“ื•ืจืš netctl, nmcli, ืขื˜ืง. ื“ื™ ืฆื•ื‘ื™ื ื“ ื˜ื•ื˜ ื ื™ืฉื˜ ืึทืจื‘ืขื˜ืŸ, ื ืึธืจ ื“ื•ืจืš ื™ื•ื•ื“.

ืžื™ืจ ืฆื•ื•ื™ื ื’ืขืŸ NetworkManager ืฆื• ื ื•ืฆืŸ iwd. ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืฉืึทืคึฟืŸ ื“ื™ ื˜ืขืงืข /etc/NetworkManager/NetworkManager.conf ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ:

[device]
wifi.backend=iwd

ืึธื ื”ื™ื™ื‘ ื“ื™ NetworkManager ื“ื™ื ืกื˜


sudo systemctl start NetworkManager.service
sudo systemctl enable NetworkManager.service

7. ื’ืขื–ื•ื ื˜

ื›ึผื“ื™ ื“ืขืจ ื’ืขื–ื•ื ื˜ ื–ืึธืœ ืึทืจื‘ืขื˜ืŸ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ pulseaudio:


sudo pacman -S pulseaudio

ืืจืืคืงืืคื™ืข ื“ืจื™ื™ ื˜ืขืงืขืก:

ืœืืžื™ืจ ื–ื™ื™ ื‘ืื•ื•ืขื’ืŸ:

    /usr/share/alsa/cards/AppleT2.conf
    /usr/share/pulseaudio/alsa-mixer/profile-sets/apple-t2.conf
    /usr/lib/udev/rules.d/91-pulseaudio-custom.rules

8. ืกื•ืกืคึผืขื ื“ / ื ืขืžืขื  ื–ื™ื› ื•ื•ื™ื“ืขืจ

ืื™ืŸ ื“ืขื ืžืึธืžืขื ื˜ 16.10.2019 ืื™ืจ ื”ืึธื‘ืŸ ืฆื• ืงืœื™ื™ึทื‘ืŸ ืึธื“ืขืจ ื’ืขื–ื•ื ื˜ ืึธื“ืขืจ ื•ืคื”ืขื ื’ืขืŸ / ื ืขืžืขื  ื–ื™ื› ื•ื•ื™ื“ืขืจ. ืžื™ืจ ื•ื•ืืจื˜ืŸ ืคึฟืึทืจ ื“ืขืจ ืžื—ื‘ืจ ืคื•ืŸ ื“ื™ bce ืžืึธื“ื•ืœืข ืฆื• ืคืึทืจืขื ื“ื™ืงืŸ ื“ื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™.

ืฆื• ื‘ื•ื™ืขืŸ ืึท ืžืึธื“ื•ืœืข ืžื™ื˜ ืกืึทืกืคึผืขืงื˜ื™ื“ / ื ืขืžืขื  ื–ื™ื› ื•ื•ื™ื“ืขืจ ืฉื˜ื™ืฆืŸ, ืื™ืจ ืžื•ื–ืŸ ื˜ืึธืŸ ื“ื™ ืคืืœื’ืขื ื“ืข:


git clone https://github.com/MCMrARM/mbp2018-bridge-drv.git
cd mbp2018-bridge-drv
git checkout suspend
make
cp bce.ko /usr/lib/modules/extramodules-mbp/bce.ko
modprobe bce

ืื•ื™ื‘ ืื™ืจ ื”ืึธื˜ ืื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ืคืึทืจื˜ื™ืง apple-bce ืžืึธื“ื•ืœืข ืคึฟื•ืŸ ื“ื™ anuali1 ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™, ืื™ืจ ืžื•ื–ืŸ ืขืจืฉื˜ืขืจ ื‘ืึทื–ื™ื™ึทื˜ื™ืงืŸ ืขืก ืื•ืŸ ื‘ืœื•ื™ื– ืึทืกืขืžื‘ืึทืœ ืื•ืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ bce ืžืึธื“ื•ืœืข ืžื™ื˜ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื•ืคื”ืขื ื’ืขืŸ ืžืึธื“ืข.

ืื•ื™ืš, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื™ื™ื’ืŸ ื“ื™ applesmc ืžืึธื“ื•ืœืข ืฆื• ื“ื™ ื‘ืœืึทืงืœื™ืกื˜ (ืื•ื™ื‘ ืื™ืจ ื”ืึธื˜ ื ื™ืฉื˜ ื’ืขื˜ืืŸ ื“ืึธืก ืคืจื™ืขืจ) ืื•ืŸ ืžืึทื›ืŸ ื–ื™ื›ืขืจ ืึทื– ืื™ืŸ /boot/loader/entries/arch.conf ืื™ืŸ ื“ื™ ืึธืคึผืฆื™ืขืก ืฉื•ืจื” ืื™ืŸ ื“ื™ ืกื•ืฃ, ื“ืขืจ ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ. pcie_ports=ืงืึธืžืคึผืึทื˜.

ื“ืขืจื•ื•ื™ื™ึทืœ, ื“ื™ ื˜ืึธื•ื˜ืฉื‘ืึทืจ ืฉืึธืคืขืจ ืงืจืึทืฉื™ื– ื•ื•ืขืŸ ืื™ืจ ืึทืจื™ื™ึทืŸ ื•ืคื”ืขื ื’ืขืŸ ืžืึธื“ืข, ืื•ืŸ ื“ื™ ื˜ืึทื ื“ืขืจื‘ืึธืœื˜ ืฉืึธืคืขืจ ืคืจื™ื™ื– ื“ื™ ืกื™ืกื˜ืขื ืžืืœ ืคึฟืึทืจ ืžืขืจ ื•ื•ื™ 30 ืกืขืงื•ื ื“ืขืก, ืื•ืŸ ืคึฟืึทืจ ืขื˜ืœืขื›ืข ืžื™ื ื•ื˜ ื•ื•ืขืŸ ืจื™ื–ื•ืžื™ื ื’. ื“ืขื ืงืขื ืขืŸ ื–ื™ื™ืŸ ืคืึทืจืคืขืกื˜ื™ืงื˜ ื“ื•ืจืš ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืึทื ืœืึธื•ื“ื™ื ื’ ืคึผืจืึธื‘ืœืขืžืึทื˜ื™ืง ืžืึทื“ื–ืฉื•ืœื–.

ืฉืึทืคึฟืŸ ืึท ืฉืจื™ืคื˜ /lib/systemd/system-sleep/rmmod.sh:

#!/bin/sh
if [ "" == "pre" ]; then
        rmmod thunderbolt
        rmmod apple_ib_tb
elif [ "" == "post" ]; then
        modprobe apple_ib_tb
        modprobe thunderbolt
fi

ืžืึทื›ืŸ ืขืก ืขืงืกืึทืงื™ื•ื˜ืึทื“:

sudo chmod +x /lib/systemd/system-sleep/rmmod.sh

ืึทื– ืก ืึทืœืข ืคึฟืึทืจ ืื™ืฆื˜. ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ื– ืึท ื’ืึธืจ ื•ื•ืขืจืงืึทื‘ืึทืœ ืกื™ืกื˜ืขื, ืžื™ื˜ ื“ื™ ื•ื™ืกื ืขื ืคื•ืŸ ืขื˜ืœืขื›ืข ื ื•ืึทื ืกื™ื– ืžื™ื˜ ื•ืคื”ืขื ื’ืขืŸ / ื ืขืžืขื  ื–ื™ื› ื•ื•ื™ื“ืขืจ. ืงื™ื™ืŸ ืงืจืึทืฉื™ื– ืึธื“ืขืจ ืงืขืจื ืขืœ ืคึผืึทื ื™ืงืก ื–ืขื ืขืŸ ื‘ืืžืขืจืงื˜ ื‘ืขืฉืึทืก ืขื˜ืœืขื›ืข ื˜ืขื’ ืคื•ืŸ ื•ืคึผื˜ื™ืžืข. ืื™ืš ื”ืึธืคึฟืŸ ืึทื– ืื™ืŸ ื“ืขื ืœืขื‘ืŸ ืฆื•ืงื•ื ืคึฟื˜ ื“ืขืจ ืžื—ื‘ืจ ืคื•ืŸ ื“ื™ BCE ืžืึธื“ื•ืœืข ื•ื•ืขื˜ ืขื ื“ื™ืงืŸ ืขืก, ืื•ืŸ ืžื™ืจ ื•ื•ืขืœืŸ ื‘ืึทืงื•ืžืขืŸ ืคื•ืœ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื•ืคื”ืขื ื’ืขืŸ / ื ืขืžืขื  ื–ื™ื› ื•ื•ื™ื“ืขืจ ืื•ืŸ ื’ืขื–ื•ื ื˜.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’