Skip to content

Instantly share code, notes, and snippets.

@hctilg
Last active December 3, 2025 10:31
Show Gist options
  • Select an option

  • Save hctilg/eacda66cbb286f1553768f3fbccb2d0c to your computer and use it in GitHub Desktop.

Select an option

Save hctilg/eacda66cbb286f1553768f3fbccb2d0c to your computer and use it in GitHub Desktop.
آموزش نصب Arch Linux ARM به زبان فارسی بر روی Raspberry Pi 3 B Rev 1.2 (غیرتخخصی-عامیانه)

سلام سلام

اول از همه اینو بگم که سیستم اصلی خود من لینوکسه بنابراین تمام توضیحات و کامند ها هم متناسب با اون خواهد بود.

منابع اولیه این پست این صفحات هستن:

https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-3

https://www.geeksforgeeks.org/linux-unix/install-xfce-desktop-on-arch-linux/

اول از همه خب شما به یک رسپری پای نیاز دارید و یک SDCARD Reader و کارت حافظه که بهتره حدقل 8 گیگ باشه، من خودم از یه کارت حافظه 64 گیگ استفاده میکنم.

مدل رسپری پای من هم Pi 3 B V1.2 هستش.

اگه حوصله ندارید مستقیما از این اسکریپت archarm-installer.sh استفاده کنید:

chmod +x archarm-installer.sh
sudo ./archarm-installer.sh

همه چیز automate شده و فقط کافیه شما دیوایس کارت حافظتون رو انتخاب کنید تا خودش اون رو آماده کنه.

اگه با این روش مموریتون رو بوتیبل کردید، بزنید روی این لینک و بقیه روند رو طی کنید.

اگر هم دوست دارید یاد بگیرید از همینجا بقیشو بخونید...

اول از همه یه دایرکتوری میسازیم به اسم arch-install که تمام فایل های مورد نیازمون رو بریزیم داخلش:

mkdir arch-install
cd arch-install/

با استفاده از ابزار wget میایم تا فایل مورد نیازمون رو دانلود کنیم.

wget -c "http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-armv7-latest.tar.gz"

فلگ -c برای اینکه که دانلود شما ذخیره بشه و اگه وسطش قطع شد به مشکل نخورید.

حالا کارت حافظه خودتون رو به سیستمتون وصل کنید و به کمک ابزار lsblk اسم دیوایستون رو از روی مقدار حافظش پیدا کنید.

مثلا برای من اسمش sdX هستش.

اول از همه میریم با fdisk یه پارتیشن بندی خیلی ساده انجام بدیم:

fdisk /dev/sdX

اول چندتا d بزنید تا هرچی پارتیشن از قبل موجود هست پاک بشه.

بعدش یه n بزنید تا پارتیشن جدید ایجاد بشه، این قراره پارتیشن boot مون باشه.

این شکلی پیش برید و پر کنید، منتهی هرجا [Enter] نوشتم یعنی باید چیزی ننویسید و رد بشید‌:

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): [Enter]

Using default response p.
Partition number (1-4, default 1): [Enter]
First sector (2048-122138623, default 2048): [Enter]
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-122138623, default 122138623): +1G

Created a new partition 1 of type 'Linux' and of size 1 GiB.
Partition #1 contains a vfat signature.

Do you want to remove the signature? [Y]es/[N]o: Y

The signature will be removed by a write command.

Command (m for help): t
Selected partition 1
Hex code or alias (type L to list all): c
Changed type of partition 'Linux' to 'W95 FAT32 (LBA)'.

بعدش هم به همین شکل میریم پارتیشن root مون رو بسازیم و هردو پارتیشن رو ذخیره کنیم و از fdisk خارج بشیم:


Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): [Enter]

Using default response p.
Partition number (2-4, default 2): [Enter]
First sector (2099200-122138623, default 2099200): [Enter]
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2099200-122138623, default 122138623): [Enter]

Created a new partition 2 of type 'Linux' and of size 57.2 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

پس پارتیشن بندیمون به این شکل شد که پارتیشن اول برای بوت هستش و یک گیگ بهش فضا دادیم و از نوع FAT32 هستش و پارتیشن دوم برای روت هستش و باقی فضا رو بهش دادیم و از نوع ext4 خواهد بود.

پارتیشن هارو فرمت میکنیم:

sudo mkfs.vfat /dev/sdX1
sudo mkfs.ext4 /dev/sdX2

اگه سوالی چیزی پرسید Enter بزنید فقط.

و بعد دوتا دایرکتوری boot و root رو میسازیم و ماونت(وصل) شون میکنیم به پارتیشن های خودشون:

mkdir boot root
sudo mount /dev/sdX1 boot
sudo mount /dev/sdX2 root

حالا وقتشه که فایل Arch رو استخراج کنیم روی SD Card مون:

sudo bsdtar -xpf ArchLinuxARM-rpi-armv7-latest.tar.gz -C root

حالا باید فایل های boot رو منتقل کنیم ولی خب نمیتونیم از mv استفاده کنیم چون FAT32 خودش owner و group نداره، پس همه فایل‌ها روی کارت SD با owner شما توی لینوکس خودتون نشون داده می‌شن و این طبیعیه.

میتونیم خیلی ساده تر دستی کپی کنیم و بعد پاک کنیم:

sudo cp -r root/boot/* boot/
sudo rm -rf root/boot/*

باید فایل cmdline.txt برای بوت لودرمون بسازیم:

echo "root=/dev/mmcblk0p2 rw console=serial0,115200 console=tty1 rootwait" | sudo tee boot/cmdline.txt

حالا باید پا SD Card مون رو جدا کنیم و بریم رسپری پای مون رو بوت کنیم...

sync
sudo umount boot root

It's just beginning...

خب حالا رم ریدر رو از سیتم جدا کنید و کارت حافظه رو در بیارید و توی رسپری پای تون بزاریدش رسپری پای رو به یه مانیتور و کیبورد و ماوس وصل کنید و بعد به برق وصل کنید

الان باید بوت شدنش رو ببینید...

اینجا شما با یه لاگین اولیه روبرو هستید.

بصورت پیشفرض یه یوزر وجود داره که یوزرنیم و پسوردش alarm هستش.

وقتی لاگین رو دیدین هم یوزرنیم هم پسورد رو اینو میزنید.

پسورد root هم به طور پیشفرض همین root هستش.

با su وارد روت میشیم:

$ su
pass: root

خب حالا باید رسپری پای رو به اینترنت وصل کنیم

اگه با کابل شبکه میخواهید وصل کنید خب بکنید خودش کانکت میشه

اگه با کابل USB میخواهید از نت گوشیتون وصل بشید هم کافیه با سیم به رسپری پای تون وصلش کنید و USB tethering رو از تنظیمات گوشی روشن کنید اینم خودش کانکت میشه

منتهی اگه میخواهید به wifi وصل یشید باید از کامند wifi-menu استفاده کنید که خب اضلا سخت نیستش، امتحانش کنید خودتون :)

حالا که به نت وصل شدیم وقتشه یه آپدیت اولیه داشته باشیم:

pacman-key --init
pacman-key --populate archlinuxarm
pacman -Syu

پسورد root رو عوض میکنیم:

passwd

بعد اسم سیستم رو عوض میکنیم:

hostnamectl set-hostname YOURHOSTNAME

حالا میریم که یه یوزر جدید برای خودمون بسازیم و براش پسورد بزاریم:

useradd -d /home/YOURUSERNAME -m -G wheel -s /bin/bash YOURUSERNAME
passwd YOURUSERNAME

بعدش یه Ctrl+D میزنیم تا دوباره لاگین کنیم منتهی اینبار با یوزری که تازه ساختیم، بعدش هم با su وارد روت میشیم با پسورد جدیدی که واسش گذاشته بودیم و یوزر alarm رو حذف میکنیم:

userdel alarm

حالا هم بریم sudo اصافه کنیم (چون نداریم):

pacman -S sudo
usermod -aG wheel $(whoami)

بعد ادیتور باز میکنیم:

nano /etc/sudoers

بگردید یه لاینی رو پیدا کنید که اینو نوشته باشه:

#%wheel ALL=(ALL) ALL

و اون # اولش رو پاک کنید حالا یه Ctrl+S و یه Ctrl+X بزنید.

خب حالا دیگه وقتشه محیط گرافیکیمون روی دسکتاپ sway بالا بیاریم:

pacman -S sway swaybg swayidle foot wmenu waybar wofi dunst alacritty terminator
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)"
pacman -S networkmanager network-manager-applet gnome-keyring
systemctl enable NetworkManager
systemctl start NetworkManager
nm-applet

بعد هم یه ریبوت میکنیم:

reboot
#!/usr/bin/env bash
set -e
echo -e "\nAvailable Devices:\n"
lsblk -d -o NAME,SIZE,TYPE,MODEL
echo
read -p "Enter the device name (e.g., sda, sdb): " selected_device
# Validate device input
if [[ -z "$selected_device" ]]; then
echo "Error: No device selected."
exit 1
fi
# Check if device exists
if [[ ! -b "/dev/$selected_device" ]]; then
echo "Error: Device /dev/$selected_device does not exist."
exit 1
fi
# SD card device
SD="/dev/$selected_device"
echo -e "\nSelected Device: $SD\n"
# Temporary mount points
BOOT_MNT=/tmp/arch-install/boot
ROOT_MNT=/tmp/arch-install/root
sudo rm -rf $BOOT_MNT $ROOT_MNT
mkdir -p $BOOT_MNT $ROOT_MNT
echo "1. Unmounting any mounted partitions..."
sudo umount ${SD}? || true
echo "2. Creating partitions..."
sudo parted $SD --script mklabel msdos
# Boot partition: 1GB FAT32
sudo parted $SD --script mkpart primary fat32 1MiB 1025MiB
# Root partition: rest of the space ext4
sudo parted $SD --script mkpart primary ext4 1025MiB 100%
yes | sudo mkfs.vfat -F32 ${SD}1
yes | sudo mkfs.ext4 ${SD}2
echo "3. Mounting partitions..."
sudo mount ${SD}1 $BOOT_MNT
sudo mount ${SD}2 $ROOT_MNT
echo "4. Downloading Arch Linux ARM for Pi 3..."
wget -c "http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-armv7-latest.tar.gz"
echo "5. Extracting Arch Linux ARM to root..."
sudo bsdtar -xpf ArchLinuxARM-rpi-armv7-latest.tar.gz -C $ROOT_MNT
echo "6. Copying boot files..."
sudo cp -r $ROOT_MNT/boot/* $BOOT_MNT/
sudo rm -rf $ROOT_MNT/boot/*
echo "7. Creating cmdline.txt for Pi 3..."
echo "root=/dev/mmcblk0p2 rw console=serial0,115200 console=tty1 rootwait" | sudo tee $BOOT_MNT/cmdline.txt
echo "8. Syncing and unmounting..."
sync
sudo umount $BOOT_MNT $ROOT_MNT
echo "All done! Insert the SD card into your Raspberry Pi 3 and power it on."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment