.TH SG_SAT_IDENTIFY "8" "January 2020" "sg3_utils\-1.45" SG3_UTILS .SH "نام (NAME)" sg_sat_identify \- ارسال دستور ATA IDENTIFY DEVICE از طریق لایه ترجمه SCSI به ATA (SAT) .SH "خلاصه دستور (SYNOPSIS)" .B sg_sat_identify [\fI\-\-ck_cond\fR] [\fI\-\-extend\fR] [\fI\-\-help\fR] [\fI\-\-hex\fR] [\fI\-\-ident\fR] [\fI\-\-len=CLEN\fR] [\fI\-\-packet\fR] [\fI\-\-raw\fR] [\fI\-\-readonly\fR] [\fI\-\-verbose\fR] [\fI\-\-version\fR] \fIDEVICE\fR .SH "توضیحات (DESCRIPTION)" این ابزار یکی از دستورات ATA IDENTIFY DEVICE یا ATA IDENTIFY PACKET DEVICE را به .I DEVICE ارسال کرده و پاسخ دریافتی را نمایش می‌دهد. دستگاه‌هایی که به این دستورات پاسخ می‌دهند به ترتیب دیسک‌های ATA و دستگاه‌های ATAPI هستند. این دستورات به جای ارسال مستقیم به دستگاه، از طریق یک بستر انتقال SCSI ارسال می‌شوند که فرض می‌شود دارای یک لایه ترجمه SCSI به ATA با نام اختصاری SATL (SCSI to ATA Translation Layer) است. لایه SATL ممکن است در یک درایور سیستم‌عامل، در سفت‌افزار (فریم‌ور) آداپتور گذرگاه میزبان یا در یک محفظه بیرونی قرار داشته باشد. .PP استاندارد SAT (استاندارد SAT ANSI INCITS 431\-2007، پیش‌نویس پیشین: sat\-r09.pdf در www.t10.org) دو دستور SCSI با عنوان «ATA PASS\-THROUGH» را تعریف می‌کند: یکی با استفاده از یک cdb شانزده بایتی و دیگری با یک cdb دوازده بایتی. این ابزار به طور پیش‌فرض از حالت cdb شانزده بایتی استفاده می‌کند. بازنگری ۵ از SAT\-4 دستور SCSI با عنوان «ATA PASS\-THROUGH(32)» را اضافه کرد. همچنین SAT\-2 و SAT\-3 اکنون استاندارد هستند: SAT\-2 ANSI INCITS 465\-2010 و SAT\-3 ANSI INCITS 517\-2015. پروژه SAT\-4 نزدیک به مرحله استانداردسازی است و جدیدترین پیش‌نویس آن sat4r06.pdf می‌باشد. .SH "گزینه‌ها (OPTIONS)" آرگومان‌های گزینه‌های طولانی برای گزینه‌های کوتاه نیز اجباری هستند. .TP \fB\-c\fR, \fB\-\-ck_cond\fR بیت CK_COND را در cdb دستور SCSI با عنوان ATA PASS\-THROUGH تنظیم می‌کند. تنظیم پیش‌فرض، غیرفعال (یعنی 0) است. در صورت تنظیم بودن، SATL باید صرف‌نظر از اینکه دستور موفق بوده یا با شکست مواجه شده است، یک بافر حسگر (sense buffer) شامل توصیف‌گر نتیجه ATA برگرداند. در صورت غیرفعال بودن، SATL تنها در صورتی باید یک بافر حسگر شامل توصیف‌گر نتیجه ATA برگرداند که دستور ناموفق بوده باشد. .TP \fB\-e\fR, \fB\-\-extend\fR بیت EXTEND را در cdb دستور SCSI با عنوان ATA PASS\-THROUGH تنظیم می‌کند. مقدار پیش‌فرض، غیرفعال (یعنی 0) است. در صورت تنظیم شدن، یک دستور ۴۸ بیتی LBA به دستگاه ارسال می‌شود. این گزینه در صورت استفاده از .I \-\-len=12 هیچ تاثیری ندارد. .TP \fB\-h\fR, \fB\-\-help\fR پیام راهنمای استفاده که خلاصه‌ای از گزینه‌های خط فرمان است را نمایش داده و خارج می‌شود. در صورت مشخص شدن .IR DEVICE ، آن را نادیده می‌گیرد. .TP \fB\-H\fR, \fB\-\-hex\fR پاسخ دستور ATA IDENTIFY (PACKET) DEVICE را در قالب هگزادسیمال نمایش می‌دهد. رفتار پیش‌فرض (یعنی بدون هیچ گزینه «\-H») نمایش پاسخ در قالب هگز و گروه‌بندی‌شده در کلمات ۱۶ بیتی است (که روش مورد ترجیح استاندارد ATA است). اگر یک‌بار مشخص شود، پاسخ به صورت بایت‌های هگز اسکی خروجی داده می‌شود (که روش مورد ترجیح استاندارد SCSI است). اگر دو بار مشخص شود (یعنی «\-HH»)، خروجی در قالب هگز و گروه‌بندی‌شده در کلمات ۱۶ بیتی است؛ همانند حالت پیش‌فرض اما بدون سرآیند (header). اگر سه بار مشخص شود (یعنی «\-HHH»)، خروجی در قالب هگز و گروه‌بندی‌شده در کلمات ۱۶ بیتی و در قالبی است که برای پردازش توسط «hdparm \-\-Istdin» قابل قبول است. گزینه «\-HHHH» صرفاً بایت‌های داده هگزادسیمال را که با فاصله جدا شده‌اند، با تعداد ۱۶ بایت در هر سطر نمایش می‌دهد. .TP \fB\-i\fR, \fB\-\-ident\fR شناسه جهانی دستگاه (World Wide Name یا WWN) را خروجی می‌دهد. این مقدار باید یک عدد ۶۴ بیتی NAA\-5 باشد. این مقدار به صورت هگز با پیشوند «0x» نمایش داده می‌شود. اگر در دسترس نباشد، مقدار «0x0000000000000000» نمایش داده خواهد شد. معادل این مقدار برای یک دیسک SCSI (یعنی نام واحد منطقی آن) را می‌توان با دستور «sg_vpd \-ii» پیدا کرد. .TP \fB\-l\fR, \fB\-\-len\fR=CLEN شناسه CLEN طول cdb دستور SCSI مورد استفاده برای ATA PASS\-THROUGH است. مقدار CLEN می‌تواند 12، 16 یا 32 باشد. مقدار پیش‌فرض 16 است. اندازه‌های بزرگ‌تر cdb برای آدرس‌دهی ۴۸ بیتی LBA دستگاه‌های ATA مورد نیاز است. ثبات‌های Auxiliary و ICC در ATA تنها با نوع cdb سی و دو بایتی منتقل می‌شوند. .TP \fB\-p\fR, \fB\-\-packet\fR دستور ATA IDENTIFY PACKET DEVICE را (از طریق SATL) ارسال می‌کند. رفتار پیش‌فرض، ارسال دستور ATA IDENTIFY DEVICE است. توجه داشته باشید که مشخصات ATAPI توسط کمیته T13 (یعنی رابط PACKET) اکنون منسوخ شده است. .TP \fB\-r\fR, \fB\-\-raw\fR پاسخ دستور ATA IDENTIFY (PACKET) DEVICE را به صورت باینری نمایش می‌دهد. هنگام استفاده از این گزینه، خروجی باید به یک فایل یا ابزار دیگر لوله‌کشی (pipe) شود. داده‌های باینری به خروجی استاندارد (stdout) و خطاها به خروجی استاندارد خطا (stderr) فرستاده می‌شوند. .TP \fB\-R\fR, \fB\-\-readonly\fR دستگاه .I DEVICE را به صورت فقط‌خواندنی باز می‌کند (برای مثال در یونیکس با پرچم O_RDONLY). رفتار پیش‌فرض، باز کردن آن به صورت خواندن\-نوشتن است. .TP \fB\-v\fR, \fB\-\-verbose\fR سطح جزئیات خروجی را افزایش می‌دهد. .TP \fB\-V\fR, \fB\-\-version\fR رشته نسخه برنامه را چاپ می‌کند. .SH "نکات (NOTES)" از آنجا که پاسخ به دستور IDENTIFY (PACKET) DEVICE برای استفاده صحیح از یک دستگاه ATA(PI) بسیار حیاتی است (و معمولاً نخستین دستور ارسال‌شده است)، یک SATL باید یک صفحه VPD حاوی اطلاعات ATA فراهم کند که دارای اطلاعات مشابهی است. .PP کد عملیاتی (opcode) دستور SCSI ATA PASS\-THROUGH (12) مقدار 0xa1 است که با دستور BLANK در مجموعه MMC مورد استفاده توسط رایترهای cd/dvd تداخل دارد. بنابراین یک SATL در مواجهه با یک دستگاه ATAPI که از MMC استفاده می‌کند (یعنی دارای نوع دستگاه جانبی ۵ است)، احتمالاً باید با آپ‌کد 0xa1 به عنوان دستور BLANK رفتار کرده و آن را به درایو cd/dvd منتقل کند. کد عملیاتی دستور ATA PASS\-THROUGH (16) یعنی (0x85) با هیچ دستوری تداخل ندارد، بنابراین انتخاب بهتری است. .PP پیش از نسخه 2.6.29 هسته لینوکس، ذخیره‌سازهای انبوه USB داده‌های حسگر (sense data) را به ۱۸ بایت محدود می‌کردند که باعث می‌شد گزینه .B \-\-ck_cond نتایج عجیب (بریده‌شده) به بار آورد. .SH "مثال‌ها (EXAMPLES)" این مثال‌ها از نام‌های دستگاه در لینوکس و ابزاری در لینوکس به نام hdparm استفاده می‌کنند. برای مشاهده نام‌های مناسب دستگاه در سایر سیستم‌عامل‌های پشتیبانی‌شده به صفحه راهنمای .BR sg3_utils (8) مراجعه کنید. .PP در این مثال /dev/sdb یک دیسک ۲.۵ اینچی SATA است که از طریق یک دانگل USB (کانکتور نوع C) که پروتکل UAS (SCSI پیوست‌شده به USB، همچنین معروف به UASP) را پیاده‌سازی می‌کند متصل شده است. پروتکل UAS بهبود چشمگیری نسبت به کلاس حافظه انبوه USB است. .PP .nf # sg_sat_identify /dev/sdb Response for IDENTIFY DEVICE ATA command: 00 0c5a 3fff c837 0010 0000 0000 003f 0000 .Z ?. .7 .. .. .. .? .. .... .fi .PP خروجی هگزادسیمال اسکی (با متن اسکی ساده در سمت راست) به یک سطر خلاصه شده است (یعنی ۱۶ بایت اول (یا ۸ کلمه)). اکنون برای رمزگشایی بخشی از این پاسخ شناسایی ATA، ابتدا sg_inq می‌تواند چند رشته را رمزگشایی کند: .PP .nf # sg_sat_identify \-HHHH /dev/sdb | sg_inq \-\-ata \-I \- ATA device: model, serial number and firmware revision: ST9500420AS 5VJCE6R7 0002SDM1 .fi .PP برای دریافت جزئیات بیشتر، ابزار hdparm انتخاب مناسبی است: .PP .nf # sg_sat_identify \-HHH /dev/sdb | hdparm \-\-Istdin ATA device, with non\-removable media Model Number: ST9500420AS Serial Number: 5VJCE6R7 Firmware Revision: 0002SDM1 Transport: Serial Standards: .... .fi .PP در این حالت حدود ۸۰ سطر دیگر از جزئیات توسط hdparm رمزگشایی می‌شود. به تفاوت در تعداد گزینه‌های «H» توجه فرمایید: سه مورد، خروجی هگز بدون حاشیه را مرتب‌شده در کلمات (یعنی ۱۶ بیت برای هر کلمه و با ترتیب little endian) نمایش می‌دهند، در حالی که چهار مورد گزینه «H» خروجی هگز را بر حسب بایت (یعنی ۸ بیت برای هر بایت) تولید می‌کنند. .SH "وضعیت خروج (EXIT STATUS)" وضعیت خروج sg_sat_identify در صورت موفقیت 0 است. در غیر این صورت به صفحه راهنمای .BR sg3_utils (8) مراجعه کنید. .SH "نویسنده (AUTHOR)" نوشته شده توسط Douglas Gilbert. .SH "گزارش باگ‌ها (REPORTING BUGS)" گزارش باگ‌ها را به ارسال کنید. .SH "حق نشر (COPYRIGHT)" حق نشر \(co 2006\-2020 Douglas Gilbert .br این نرم‌افزار تحت مجوز BSD\-2\-Clause توزیع شده است. هیچ ضمانتی وجود ندارد؛ حتی برای قابلیت تجاری یا تناسب با یک هدف خاص. .SH "همچنین ببینید (SEE ALSO)" .B sg_vpd(sg3_utils), sg_inq(sg3_utils), sdparm(sdparm), hdparm(hdparm)