برق و الکترونیک *دانلود پروژه رایگان
2.29K subscribers
785 photos
96 videos
352 files
662 links
بسمه تعالی
دانلود پروژه و پی سی بی رایگان
Download Telegram
## 🧠 آموزش کاربردی binwalk در پروژه T113-S3

📌 موضوع: بررسی محتوای فایل‌های ایمیج در پروژه‌های لینوکسی با چیپ Allwinner T113-S3
🛠 ابزار کلیدی: binwalk
🎯 هدف: فهمیدن اینکه داخل فایل‌های .img مثل boot.img یا tina_t113-mq_r_uart3.img دقیقاً چی هست و چرا سیستم ممکنه بوت نشه

---

### 🔍 binwalk چیه؟

binwalk یه ابزار قدرتمند برای آنالیز فایل‌های باینریه. مخصوصاً وقتی با ایمیج‌های سیستم‌عامل، بوت‌لودر، یا فایل‌سیستم‌های فشرده سروکار داریم. باهاش می‌تونیم بفهمیم:

- آیا کرنل (zImage) داخل ایمیج هست؟
- آیا فایل‌سیستم مثل SquashFS, UBIFS, یا YAFFS وجود داره؟
- آیا ramdisk یا initrd داخل boot.img هست یا نه؟
- آیا ایمیج ناقصه یا با تنظیمات برد ناسازگاره؟

---

### ⚙️ نصب binwalk

sudo apt update
sudo apt install binwalk


---

### 🧪 مثال واقعی از پروژه T113-S3

فرض کن یه فایل boot.img ساختی و می‌خوای ببینی آیا کرنل و ramdisk داخلش هست یا نه:

binwalk -e boot.img


📥 خروجی نمونه:

0x0       Android bootimg, kernel size: 4247424 bytes
0x824 Linux kernel ARM boot executable zImage
0x460C gzip compressed data


یعنی کرنل داخلشه
ولی اگه ramdisk فقط چند بایت باشه، یعنی rootfs نداره → سیستم بعد از OP-TEE گیر می‌کنه

---

یا مثلاً می‌خوای ببینی داخل ایمیج نهایی tina_t113-mq_r_uart3.img چه فایل‌سیستمی هست:

binwalk -e tina_t113-mq_r_uart3.img


📥 خروجی نمونه:

0x7A3400  Squashfs filesystem, version 4.0


❗️ ولی اگه توی env.txt نوشته باشی `rootfstype=ubifs`، این mismatch باعث می‌شه کرنل نتونه rootfs رو mount کنه → بوت ناقص

---

### 💡 نکته حرفه‌ای

با binwalk می‌تونی قبل از فلش کردن ایمیج مطمئن بشی که:

- فایل‌ها کاملن
- نوع فایل‌سیستم با تنظیمات env.cfg هماهنگه
- کرنل و dtb داخل boot.img هستن
- و هیچ چیز حیاتی مثل sboot یا ramdisk جا نیفتاده

---

### 🎯 نتیجه‌گیری

در پروژه‌های embedded مثل T113-S3، binwalk یه ابزار حیاتی برای دیباگ بوته. اگه سیستم بعد از OP-TEE گیر می‌کنه یا کرنل بالا نمیاد، اولین چیزی که باید چک کنی همین binwalkه.

بزن binwalk رو نصب کن، ایمیج رو باز کن، و ببین واقعاً چی داخلشه—قبل از اینکه وقتت رو با فلش‌های تکراری تلف کنی 😎
🎓 تفاوت nand_root در لینوکس‌های نهفته مثل Tina Linux

اگه با بردهایی مثل T113-S3 کار می‌کنی، احتمالاً توی فایل env یا bootargs دیدی که بعضی‌ها نوشتن:

nand_root=/dev/ubiblock0_5


و بعضی‌ها هم:

nand_root=ubi0_5


🤔 خب فرق این دو تا چیه؟ کدومش رو باید استفاده کنیم؟

---

🔹 ubiblock0_5
این یه دیوایس بلوک‌محور هست که از volume شماره ۵ در UBI ساخته شده.
📦 مناسب برای فایل‌سیستم‌های فقط خواندنی مثل squashfs یا cramfs
وقتی rootfs از نوع squashfs باشه، باید از این استفاده کنی

---

🔹 ubi0_5
این فقط یه volume منطقی در سیستم UBI هست
📝 مناسب برای فایل‌سیستم‌های قابل نوشتن مثل ubifs
وقتی می‌خوای rootfs قابل نوشتن باشه، باید از این استفاده بشه

---

📌 پس انتخاب درست بستگی به نوع فایل‌سیستم rootfs داره:

- اگه rootfstype=squashfs باشه → بنویس nand_root=/dev/ubiblock0_5
- اگه rootfstype=ubifs باشه → بنویس nand_root=ubi0_5

---

💡 نکته حرفه‌ای:
برای دیدن نوع فایل‌سیستم فعلی، توی ترمینال برد بزن:

cat /proc/cmdline


و دنبال rootfstype= بگرد
🧠 آموزش ذخیره‌سازی تنظیمات در برد T113-S3 با استفاده از UDISK

اگه با بردهای نهفته مثل T113-S3 کار می‌کنی و سیستم‌عاملت با Tina Linux راه‌اندازی شده، حتماً برات پیش اومده که بخوای تنظیمات برنامه‌ات رو یه جایی ذخیره کنی که بعد از ریست شدن برد هم باقی بمونه. چون فایل‌سیستم rootfs معمولاً از نوع squashfs هست و فقط خواندنیه، نمی‌تونی تنظیمات رو اونجا بنویسی. ولی یه راه حرفه‌ای و مطمئن وجود داره: استفاده از پارتیشن UDISK

---

📦 UDISK چیه و چرا مناسب ذخیره‌سازیه؟

در فایل پارتیشن‌بندی sys_partition_nor.fex معمولاً یه پارتیشن به نام UDISK تعریف می‌شه که روی فلش NAND سوار می‌شه و با فایل‌سیستم ubifs به صورت خواندن/نوشتن mount می‌شه. مسیرش معمولاً اینه:

/mnt/UDISK


و توی ترمینال برد می‌تونی با این دستور ببینی که mount شده یا نه:

mount | grep UDISK


اگه خروجی چیزی مثل این بود، یعنی آماده‌ی استفاده‌ست:

/dev/ubi0_8 on /mnt/UDISK type ubifs (rw,...)


---

📝 ساخت فایل تنظیمات تک‌خطی

برای ساخت یه فایل ساده که یه مقدار تنظیمات داخلش باشه، این دستور رو بزن:

mkdir -p /mnt/UDISK/configs
echo "mode=debug" > /mnt/UDISK/configs/myapp.conf


این فایل داخل مسیر /mnt/UDISK/configs ساخته می‌شه و بعد از ریست شدن برد هم باقی می‌مونه

برای دیدن محتواش:

cat /mnt/UDISK/configs/myapp.conf


---

📄 ساخت فایل تنظیمات چندخطی

اگه بخوای چند خط تنظیمات داخل فایل بذاری، چند روش مختلف داری. اینجا چندتا از راحت‌ترین‌هاش رو می‌گم:

🔹 روش اول: استفاده از echo با >>

echo "wifi_ssid=BraveNet" >> /mnt/UDISK/configs/myapp.conf
echo "wifi_pass=12345678" >> /mnt/UDISK/configs/myapp.conf
echo "mode=production" >> /mnt/UDISK/configs/myapp.conf


🔹 روش دوم: استفاده از heredoc

cat <<EOF > /mnt/UDISK/configs/myapp.conf
wifi_ssid=BraveNet
wifi_pass=12345678
mode=production
EOF


🔹 روش سوم: استفاده از vi یا nano (اگر نصب باشه)

vi /mnt/UDISK/configs/myapp.conf


بعد از باز شدن ویرایشگر، متن رو بنویس و با ESC و :wq ذخیره کن

---

🔁 تست بعد از ریست برد

بعد از ریست شدن کامل برد، دوباره وارد ترمینال بشو و بزن:

cat /mnt/UDISK/configs/myapp.conf


اگه محتوا باقی مونده بود، یعنی تنظیماتت به‌درستی ذخیره شدن و قابل استفاده هستن

---

🔐 نکته امنیتی

اگه تنظیماتت شامل رمز یا اطلاعات حساس هستن، بهتره دسترسی فایل رو محدود کنی:

chmod 600 /mnt/UDISK/configs/myapp.conf


---

🎯 جمع‌بندی کاربردی

پارتیشن UDISK بهترین جا برای ذخیره‌سازی تنظیمات، لاگ‌ها، و داده‌های دائمی در بردهای T113-S3 هست. با چند دستور ساده می‌تونی فایل بسازی، محتوا بنویسی، و بعد از هر بوت دوباره بخونی. این روش کاملاً پایدار و امنه و توی پروژه‌های صنعتی هم استفاده می‌شه
🔐 آموزش سطح دسترسی فایل‌ها در برد T113-S3 با لینوکس Tina

وقتی با بردهای نهفته مثل T113-S3 کار می‌کنی، خیلی مهمه بدونی چطور فایل‌هایی مثل تنظیمات یا لاگ‌ها رو طوری بسازی که فقط برنامه‌ات بتونه بخونه یا تغییر بده. مخصوصاً وقتی از پارتیشن UDISK استفاده می‌کنی که قابل نوشتن و پایدار هست، باید حواست به امنیت فایل‌ها باشه

لینوکس برای کنترل دسترسی به فایل‌ها از سیستم permission استفاده می‌کنه. هر فایل سه سطح دسترسی داره: مالک فایل، گروه فایل، و سایر کاربران. هرکدوم از این‌ها می‌تونن اجازه‌ی خواندن، نوشتن یا اجرا داشته باشن

مثلاً وقتی اینو می‌بینی:

-rw-r--r--


یعنی مالک فایل می‌تونه بخونه و بنویسه، گروه فقط می‌تونه بخونه، و سایر کاربران هم فقط می‌تونن بخونن

برای تغییر این سطح دسترسی از دستور chmod استفاده می‌شه. مثلاً:

chmod 600 /mnt/UDISK/configs/myapp.conf


این دستور یعنی فقط مالک فایل می‌تونه بخونه و بنویسه، و هیچ‌کس دیگه‌ای نمی‌تونه فایل رو ببینه یا تغییر بده

عدد 600 یعنی:

مالک: خواندن و نوشتن
گروه: هیچ دسترسی
سایر کاربران: هیچ دسترسی

اگه فایل تنظیماتت شامل رمز وای‌فای یا اطلاعات حساس باشه، این سطح دسترسی خیلی مهمه چون جلوی دسترسی ناخواسته رو می‌گیره

برای دیدن سطح دسترسی فعلی فایل، اینو بزن:

ls -l /mnt/UDISK/configs/myapp.conf


خروجی باید چیزی مثل این باشه:

-rw------- 1 root root 78 Sep 8 10:59 myapp.conf


یعنی فقط کاربر root می‌تونه فایل رو بخونه و بنویسه

اگه برنامه‌ات با کاربر دیگه‌ای اجرا می‌شه، باید مالک فایل رو تغییر بدی. مثلاً:

chown myuser:myuser /mnt/UDISK/configs/myapp.conf
chmod 640 /mnt/UDISK/configs/myapp.conf


با این تنظیمات، کاربر myuser می‌تونه فایل رو بخونه، ولی بقیه نمی‌تونن

این روش‌ها باعث می‌شن فایل‌های تنظیماتت هم امن باشن، هم پایدار، و هم فقط توسط برنامه‌ات قابل استفاده باشن
final squashfs.rar
15.5 KB
فایلهای با تنظیمات خاص برای بوت لینوکس از روی نند فلش برای روت فایل سیستم در حالت فقط خواندنی squashfs برای t113-s3 در لینوکسی تینا تست شده و کاملا جواب میدهد منتها تنظیمات خاص مثل ترمینال و دیوایس تری را خودتان چک کنید که با برد شما هماهنگ باشد مناسب نند فلش W25N01GVZEIG
tina_t113-mq_r_uart3_nand.img
34.8 MB
ایمیج تولید شده برای ریختن روی نند فلش W25N01GVZEIG با تنظیمات squashfs برای روت فایل سیستم (کاملا تست شده )
برق و الکترونیک *دانلود پروژه رایگان
https://youtu.be/foMl1BnoK0Y?si=lmJ_uGJqWcn57ksi
هوش مصنوعی علی بابا برای برنامه نویسی هم خیلی عالی جواب میدهد حتما استفاده کنید👍