یکی از عناصر ضروری هنگام کار بر روی پروژه های لینوکس جاسازی شده، دسترسی به دستگاه خود از طریق رابط کنسول سریال است. برای این کار، رایانه ای که روی آن یک سیستم تعبیه شده را توسعه می دهید باید یک پورت سریال داشته باشد. با این حال، امروزه تعداد کمی از رایانه ها دارای پورت سریال هستند و به همین دلیل است که ما به جای آن از مبدل های USB به سریال استفاده می کنیم.
یکی از عناصر ضروری هنگام کار بر روی پروژه های لینوکس جاسازی شده، دسترسی به دستگاه خود از طریق رابط کنسول سریال است. برای این کار، رایانه ای که روی آن یک سیستم تعبیه شده را توسعه می دهید باید یک پورت سریال داشته باشد. با این حال، امروزه تعداد کمی از رایانه ها دارای پورت سریال هستند و به همین دلیل است که ما به جای آن از مبدل های USB به سریال استفاده می کنیم.
در پایان، درک دقیقی از اینکه کنسولهای سریال چیست و چگونه روی لینوکس کار میکنند، خواهید داشت.
راه اندازی تبدیل USB به سریال
تقریباً هر مبدل سریال USB که در بازار پیدا کنید به طور خودکار توسط لینوکس شناسایی می شود. هر مبدل USB را به رایانه خود وصل کنید و از دستور dmesg برای پیدا کردن نام فایل دستگاه استفاده کنید.
dmesg
در مثال بالا، VirtualBox را در بخش سازنده می بینید، زیرا هاست یک توزیع لینوکس است که روی VirtualBox اجرا می شود. در اینجا، نام سازنده بسته به مبدلی که استفاده می کنید تغییر می کند. همچنین می توانید ببینید که مبدل سریالی که استفاده می کنید با نامی مانند ttyUSB0 به سیستم متصل شده است.
می توانید از مبدل سریالی که توسط سیستم شما شناسایی می شود از طریق فایل دستگاه /dev/ttyUSB0 استفاده کنید. بسته به توزیعی که استفاده می کنید، فایل دستگاه به طور خودکار در پوشه /dev ایجاد می شود و انواع اصلی، فرعی و دستگاه را نشان می دهد. برای مبدل های سریال USB، طرح نامگذاری معمولاً ttyUSB0، ttyUSB1 و ttyUSBX برای هر ترجمه همزمان است.
اگر مبدل سریال USB را زمانی که یک برنامه در حال استفاده است، جدا کرده و دوباره وارد کنید، سیستم شماره جدیدی را برای دستگاه صادر می کند.
مجوز دسترسی در دستگاه های سریال
امتیازات دسترسی پیش فرض فایل های دستگاه مبدل USB نصب شده معمولاً به شرح زیر است:
ls -l /dev/ttyUSB0
# Output
crw-rw---- 1 root dialout 188, 46 Jul 17 15:34 /dev/ttyUSB0
با بررسی خروجی بالا، می توانید بگویید:
- حرف c در ابتدای خط نشان می دهد که این دستگاه مبتنی بر کاراکتر است
- مالک فایل کاربر ریشه است و کاربر دارای امتیاز خواندن و نوشتن است
- مالک گروه فایل، گروه dialout است و کاربرانی که در این گروه قرار دارند، مجوز خواندن و نوشتن نیز دارند
- بقیه کاربران هیچ گونه حق خواندن و نوشتن روی فایل ندارند
اگر در حال حاضر به عنوان یک کاربر معمولی وارد شده اید که عضو گروه شماره گیری نیست، نمی توانید مبدل سریال USB را بخوانید و بنویسید. برای حل این مشکل، یا باید کاربر فعلی را عضو گروه dialout کنید یا فایل های قانون udev را در سیستم خود ویرایش کنید.
برای راحتی می توانید از اولین تکنیک استفاده کنید. برای شروع، از دستور id برای تعیین اینکه کاربر شما متعلق به کدام گروه است استفاده کنید:
id
کاربر خود را با استفاده از دستور adduser یا usermod به گروه اضافه کنید:
# For Fedora
sudo usermod -aG dialout USERNAME
# For Debian
sudo adduser USERNAME dialout
# For Arch
sudo usermod -a -G uucp USERNAME
مراحل عضویت در گروه اکنون کامل شده است. با این حال، سیستم اطلاعات عضویت گروه را در اولین مرحله ورود به سیستم در جلسات گرافیکی بررسی می کند و سپس آن را در اختیار تمام فرآیندهای در حال اجرا قرار می دهد.
در نتیجه، باید از جلسه گرافیکی فعلی خارج شوید و سپس دوباره وارد شوید یا دستگاه خود را مجددا راه اندازی کنید تا تغییرات اعمال شوند. پس از اتمام این عملیات، به دستگاه مبدل سریال دسترسی خواندن/نوشتن خواهید داشت.
نحوه اتصال به کنسول های سریال در لینوکس
هنگامی که نیاز به دسترسی به رایانه یا کنسول شبکه دارید، می توانید به برنامه های کنسول سریال مراجعه کنید. معمولاً برای انجام این کار به دسترسی از طریق SSH نیاز دارید. اما از نظر نرم افزاری و سخت افزاری در برخی موارد تنها با استفاده از پورت های سریال امکان دسترسی به کنسول نیز وجود دارد.
این نوع نمونهها را اغلب در رایانههای قدیمیتر خواهید یافت. در زیر تعدادی از بهترین برنامه های کنسول سریال که برای شما کار می کنند آورده شده است.
با استفاده از Minicom
میتوانید Minicom را که یک برنامه قدیمی اما هنوز کار میکند، روی سیستم خود نصب کنید:
# On Fedora, CentOS, and RHEL
sudo yum install minicom
# On Debian and Ubuntu
sudo apt-get install minicom
# On Arch Linux
sudo snap install minicom
هنگامی که برنامه را برای اولین بار راه اندازی می کنید، به طور پیش فرض سعی می کند یک فایل دستگاه مانند /dev/modem را باز کند. زمانی که نتواند فایل را پیدا کند خاتمه می یابد. برای غلبه بر این مشکل، می توانید مستقیماً صفحه تنظیمات برنامه را با پارامتر -s شروع کنید:
minicom -s
می توانید نام دستگاه را با فشار دادن کلید A و سرعت پورت سریال را با فشار دادن کلید E تنظیم کنید. سپس وقتی با Exit خارج می شوید، می توانید از پورت سریال مربوطه استفاده کنید.
در حالی که در صفحه اصلی برنامه هستید، می توانید با Ctrl + A + O به صفحه پیکربندی بازگردید، با Ctrl + A + X از برنامه خارج شوید، حالت بسته بندی خط را با Ctrl + A + W فعال کنید و برای سایر میانبرها با Ctrl + A + Z.
با استفاده از GTKTerm
Minicom معمولا توسط کاربران پیشرفته لینوکس استفاده می شود و بنابراین برای مبتدیان توصیه نمی شود. تازه واردان لینوکس می توانند GTKTerm، شبیه ساز ترمینال سریال گرافیکی برای لینوکس را نصب کنند. با استفاده از دستورات زیر می توانید برنامه را روی سیستم خود نصب کنید:
# On Fedora, CentOS, and RHEL
sudo dnf -y install gtkterm
# On Debian and Ubuntu
sudo apt-get install gtkterm
# On Arch Linux
yay -S gtkterm
هنگامی که برنامه را راه اندازی می کنید، باید نام دستگاه و پارامترهای سرعت را از طریق منوی پیکربندی > پورت به صورت زیر تنظیم کنید:
تنظیمات را به عنوان پیش فرض ذخیره کنید تا استفاده بعدی آسان شود.
با استفاده از صفحه نمایش
اگر با صفحه نمایش برای مدیریت چند ترمینال آشنا هستید، می دانید که می توانید از آن برای دسترسی به پورت سریال نیز استفاده کنید. در اینجا دستورات نصب آن وجود دارد:
# On Fedora, CentOS, and RHEL
sudo dnf -y install screen
# On Debian, Ubuntu, and Linux Mint
sudo apt-get -y install screen
# Use Snap for other distributions
sudo snap install screen --classic
پس از نصب، می توانید دستوری مانند این را برای اتصال به کنسول سریال اجرا کنید:
screen /dev/ttyUSB0 115500
اکنون می توانید یک اتصال پورت سریال در لینوکس ایجاد کنید
دسترسی به سیستم لینوکس با استفاده از پورت سریال یک ویژگی بسیار مفید است، به خصوص زمانی که نمی خواهید یک مانیتور را به SBC (Session Border Controller) وصل کنید.
از آنجایی که مجوز کنسول سریال در زمان کامپایل در هسته لینوکس تعبیه شده است، شما باید حداقل درک اولیه ای از هسته لینوکس و عملکرد آن داشته باشید.