N1-install icon indicating copy to clipboard operation
N1-install copied to clipboard

Install Archlinux on Phicomm N1

??????

????????????????????????, ??????????????????uboot?????????. ????????? master ????????????, ?????????????????????????????????.

????????????

??????????????????????????? N1 ?????????

  1. ????????????
  2. ??????
  3. ?????? userspace
  4. ?????? kernel
  5. ?????? u-boot
  6. ????????????
  7. ????????? mmc

????????????

  1. 1??? N1, ?????? armbian ?????? ??????????????? aarch64 linux ??????, ???????????? N1?????????.
  2. 4GB ????????? U???
  3. ??????

??????

??????????????????????????????U???, ??????????????????????????????????????? mmc.

  1. ?????? U??? ?????????

    sudo lsblk -f /dev/sd[a-z]
    
  2. ??? parted ??????

    ????????????????????? U?????? /dev/sda(????????????), ???U???????????? mbr ?????????, ??????2??????, ???????????? FAT32 ??????, ????????? 256MB, ???????????? linux ??????, ?????????????????????.

    sudo parted -s -a optimal /dev/sda mklabel msdos mkpart primary fat32 0% 256MiB mkpart primary ext4 256MiB 100%
    
  3. ???????????????

    ?????????1???????????? FAT32, ?????? ARCHBOOT ; ?????????2???????????? EXT4 ?????? ARCHROOT.

    sudo mkfs.vfat -F 32 -n ARCHBOOT /dev/sda1
    sudo mkfs.ext4 -L ARCHROOT /dev/sda2
    
  4. ????????????

    ??? sda2 ????????? /mnt, ??? sda1 ????????? /mnt/boot

    sudo mount /dev/sda2 /mnt
    sudo mkdir -p /mnt/boot
    sudo mount /dev/sda1 /mnt/boot
    

?????? userspace

userspace ??????????????????????????????????????????, archlinuxarm ?????????

cd ~ && curl -L -O http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz
sudo bsdtar -xpvf ArchLinuxARM-aarch64-latest.tar.gz -C /mnt # ??????, ???????????????, ????????????????????????.
rm -f ArchLinuxARM-aarch64-latest.tar.gz # ????????????

chroot ??? userspace

# ????????? DNS
sudo unlink /mnt/etc/resolv.conf
cat /etc/resolv.conf | sudo tee /mnt/etc/resolv.conf
# chroot
cd /mnt
sudo mount -t proc /proc proc
sudo mount --make-rslave --rbind /sys sys
sudo mount --make-rslave --rbind /dev dev
sudo mount --make-rslave --rbind /run run
cd /
sudo chroot /mnt /bin/bash
source /etc/profile
export PS1="(chroot) $PS1" # ????????????, ???????????? chroot ?????? 

# ???????????????????????? chroot ??????, ?????????????????? chroot?????????

???????????? userspace

echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen
echo 'en_GB.UTF-8 UTF-8' >> /etc/locale.gen
locale-gen
localectl list-locales # ?????? locale-gen ????????? locales
localectl set-locale LANG=en_US.UTF-8 LC_TIME=en_GB.UTF-8 # ?????????????????????, ?????????????????????(????????????24????????????)

passwd root # ????????? root ??????, ??????????????????
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config # ??????ssh????????????root??????, ??????????????????, ???????????? N1 ???,????????????,?????? ssh key ??????
userdel -rf alarm # ??????????????????, ????????? root

??????????????????

systemctl enable systemd-networkd.service # ??????????????????????????????, ????????????
systemctl disable systemd-resolved.service # ??????????????????, ???????????????????????? /etc/resolv.conf
cat /etc/systemd/network/eth.network # ??????????????????, ????????? dhcp

?????? kernel

ping -c 3 www.163.com # ???????????? OK 

pacman-key --init # ?????? pacman ?????????????????? key
pacman-key --populate archlinuxarm # ?????? pacman ?????????????????? key
pacman -Syu # ??????????????????

pacman -Q | grep linux-aarch64 # ?????????????????????????????? kernel
pacman -Rcsun linux-aarch64 # ??????????????? kernel
pacman -Rcsun linux-aarch64-headers # ??????????????? headers, ??????????????????. 

??????????????????:
https://github.com/cattyhouse/pkgbuild-linux-phicomm-n1

pacman -U *.pkg.tar.zst # ??????
sync

???????????? u-boot

N1 ??????????????? u-boot, ???????????????????????? TEXT_OFFSET ???????????????, ???????????????????????????????????????, ???????????????????????? u-boot, ????????????????????????, ??????????????? boot ??????, N1 ????????????????????? u-boot, ?????????????????? u-boot

???????????? ????????? : N1 ?????? u-boot -> ???????????? U??? -> ?????? boot ????????? s905_autoscript -> ???????????? s905_autoscript ????????????????????? u-boot, ????????? u-boot.ext

???????????? ????????? : ?????? u-boot.ext ??????????????????????????? : bootcmd -> distro_bootcmd -> boot_targets -> bootcmd_usb0 -> usb_boot -> scan_dev_for_boot_part -> scan_dev_for_boot -> scan_dev_for_extlinux -> boot_extlinux, ??????????????? extlinux.conf

???????????? ????????? : ?????? extlinux.conf ?????????, ?????? root ?????? -> ?????? zImage ??? uInitrd ??????????????? kernel ???????????? ????????????. ??????, ?????????????????? linux ??????.

??????????????? chroot ??????

  1. ????????????

    ping -c 3 www.163.com # ???????????? OK
    pacman -S --needed --noconfirm git
    cd /tmp && git clone --depth 1 https://github.com/cattyhouse/new-uboot-for-N1
    cd new-uboot-for-N1
    cp -fr * /boot/
    
  2. ?????? extlinux.conf

    root_uuid=$(lsblk -n -o UUID /dev/sda2)
    sed -i "s/root_uuid/${root_uuid}/" /boot/extlinux/extlinux.conf
    # ??????????????????????????????
    grep ${root_uuid} /boot/extlinux/extlinux.conf
    
  3. ?????? fstab

    root_uuid=$(lsblk -n -o UUID /dev/sda2)
    boot_uuid=$(lsblk -n -o UUID /dev/sda1)
    echo "UUID=${root_uuid} / ext4 rw,relatime 0 1" > /etc/fstab
    echo "UUID=${boot_uuid} /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2" >> /etc/fstab
    cat /etc/fstab # ????????????
    

????????????

??????

exit # ?????? chroot ??????
cd / # ?????????????????????????????? /mnt
sudo umount -vfR /mnt # target is busy ?????????????????????
sudo reboot # ????????????.

??????

# ?????????????????? N1 ??? ip, ?????? ssh ??????
ssh root@n1_ip # ??????????????????
# ?????????????????????????????????, ????????????.

# TODO

????????? MMC

rsync ?????????????????? 100% ??????

# TODO