این یک فرآیند پیشرفته است که ما برای کاربران جدید لینوکس توصیه نمیکنیم.
سیستم عامل کروم از اجرای کد دلخواه درون ماشینهای مجازی پشتیبانی میکند. این مستندات سطح پایین در مورد این پشتیبانی است؛ برای مشاهده کاربرپسندتر، به سوالات متداول مراجعه کنید.
پیشنیازها
- مطمئن شوید که دستگاه ChromeOS شما از لینوکس روی ChromeOS پشتیبانی میکند
- مطمئن شوید که از ChromeOS نسخه ۷۲ (M72+) یا بالاتر (منتشر شده در فوریه ۲۰۱۹) استفاده میکنید.
- در صورت نیاز، بهروزرسانی سیستم را شروع کنید و دستگاه را مجدداً راهاندازی کنید.
- این باید در کانال پایدار کار کند.
- لازم نیست آن را در حالت توسعهدهنده قرار دهید.
- فعال کردن کانتینر لینوکس
ویژگیهای زمان اجرا
هنگام اجرای کانتینر لینوکس خود، باید انتظار داشته باشید که ویژگیهای زیر کار کنند:
- اتصالات شبکه خروجی (IPv4).
- گرافیک بدون شتاب.
- گرافیک شتابیافته (از طریق OpenGL).
- برنامههای وِیلند (ترجیحاً از طریق شرکت Sommelier ).
- برنامههای X (سازگاری از طریق Sommelier و XWayland ).
- خروجی صدا در M74+ و ضبط/میکروفون آزمایشی در تصاویر R79+.
ویژگیهای از دست رفته
ما در حال کار بر روی بسط و توسعهی بسیاری از اهداف سهلالوصول هستیم. چند مثال واضح عبارتند از:
- رمزگشایی سختافزار ویدیویی.
- IME ها .
در حالی که موارد بیشتری در حال بررسی هستند، تیم ChromeOS رویکردی سنجیده برای ارائه ویژگیهای جدید اتخاذ میکند تا اطمینان حاصل شود که امنیت کلی سیستم به خطر نمیافتد. برای اطلاعات دقیقتر که اکثر مباحث مربوط به توسعه لینوکس در ChromeOS را پوشش میدهد، به سوالات متداول Crostini مراجعه کنید.
امنیت
اگرچه اجرای کد دلخواه معمولاً یک خطر امنیتی است، تیم ChromeOS معتقد است که مدل زمان اجرای به کار رفته توسط لینوکس در کانتینر ChromeOS به اندازه کافی این خطر امنیتی را کاهش داده و مهار میکند. ماشین مجازی (VM) مرز امنیتی است و هر چیزی که درون آن قرار دارد، غیرقابل اعتماد تلقی میشود. تصویر مهمان فعلی ماشین مجازی نیز یک هسته سختشده سفارشی را برای بهبود بیشتر امنیت کانتینرها اجرا میکند، اما این یک ویژگی خوب محسوب میشود تا اینکه برای تضمین امنیت کلی سیستم به آن تکیه شود.
در این مدل، بقیه سیستم ChromeOS باید از کد دلخواه (مخرب یا تصادفی) که درون کانتینرهای داخل ماشین مجازی اجرا میشود، محافظت شود.
تنها ارتباط با دنیای خارج از طریق crosvm است و هر کانال با فرآیندهای جداگانهای (که هر کدام به شدت در محیط امن (sandbox) قرار دارند) ارتباط برقرار میکند.
دادههای کاربر در کانتینر
با تغییر به سمت سرویسهای ابری، تفکر امنیتی فعلی این واقعیت را برجسته میکند که به دست آوردن اطلاعات حساب کاربری (مثلاً رمزهای عبور گوگل/فیسبوک شما ) یک مسیر حمله سودآورتر از حمله به رایانه رومیزی یا لپتاپ شما است. آنها اشتباه نمیکنند. راهحل فعلی ماشین مجازی/کانتینر ChromeOS در حال حاضر در این زمینه پیشرفتی نداشته است. به عبارت ساده، هر چیزی که در حال حاضر وارد کانتینر شود، مسئولیت آن بر عهده کاربر است. بنابراین، اگر یک کانتینر ناامن یا آسیبپذیر را اجرا کنید و سپس رمزهای عبور خود را در کانتینر تایپ کنید، حتی در حالی که بقیه سیستم ChromeOS امن باقی میماند، میتوانند به سرقت بروند.
پایداری فرآیند
فرآیندهای موجود در ماشینهای مجازی و کانتینرها پس از خروج از سیستم (logout) دوام نمیآورند (زیرا در حافظه رمزگذاری شده کاربر قرار دارند) و به طور خودکار از بین میروند. آنها همچنین به طور خودکار هنگام ورود به سیستم (برای جلوگیری از حملات مداوم) شروع به کار نمیکنند، و همچنین نمیتوانند به طور خودکار در هنگام بوت شدن (بدون جلسه ورود) اجرا شوند، زیرا در دسترس نخواهند بود (زیرا در حافظه رمزگذاری شده کاربر قرار دارند).
کد قابل اجرا و قابل نوشتن
تصویر دیسک ماشین مجازی Termina مانند سایر اجزای کروم در پارتیشن قابل نوشتن با وضعیت دانلود میشود. برای اطمینان از عدم تغییر محتوا، از dm-verity استفاده میشود. این همچنین به این معنی است که فقط تصاویری که توسط گوگل امضا شدهاند میتوانند بارگیری شوند و تصویر همیشه فقط خواندنی است.
حملات سختافزاری
آسیبپذیریهای Meltdown/Spectre پیامدهایی برای استفاده ایمن از ماشینهای مجازی دارند. ما اصلاحات و اقدامات کاهشی را اعمال کردهایم تا مطمئن شویم که ماشینهای مجازی نمیتوانند به سیستم میزبان یا سایر ماشینهای مجازی حمله کنند. برای جزئیات بیشتر به صفحه ویکی سیستم عامل Chromium در مورد وضعیت آسیبپذیریهای Meltdown و Spectre برای دستگاههای ChromeOS مراجعه کنید.
چرخههای حیات
پس از فعال کردن کانتینر لینوکس (که نصب تمام اجزای لازم دیگر مانند Termina را بر عهده دارد)، سیستم آماده استفاده است.
اگرچه ممکن است این اجزا نصب شده باشند، اما هیچ چیز بلافاصله شروع به اجرا نمیکند. وقتی از سیستم خارج میشوید، همه چیز خاموش و از کار میافتد و وقتی وارد سیستم میشوید، هیچ چیز به طور خودکار مجدداً راهاندازی نمیشود.
وقتی برنامه ترمینال یا هر برنامه لینوکس دیگری را که کانتینر را شروع میکند اجرا میکنید و کانتینر والد آن هنوز اجرا نشده است، ماشین مجازی Termina به طور خودکار شروع به کار میکند و کانتینر پیشفرض لینوکس در ChromeOS (که با نام Crostini نیز شناخته میشود) در آن شروع به کار میکند. این به شما امکان میدهد از طریق SSH یا SFTP (از طریق برنامه Files) به کانتینر متصل شوید.
وقتی همه برنامههای قابل مشاهده را میبندید، ماشین مجازی/کانتینرها خاموش نمیشوند. در صورت تمایل، میتوانید آنها را به صورت دستی متوقف و راهاندازی کنید ، و همچنین کانتینرهای بیشتری نسبت به کانتینر پیشفرض ایجاد کنید.
ماندگاری دادهها
تمام ماشینهای مجازی و کانتینرهای ایجاد شده و دادههای درون آن کانتینرها، در طول جلسات کاربر (خروج/ورود) باقی خواهند ماند. آنها در همان فضای ذخیرهسازی رمزگذاری شده برای هر کاربر، مانند بقیه دادههای مرورگر، نگهداری میشوند.
اگر یک ماشین مجازی یا کانتینر به طور نامناسبی متوقف یا از کار بیفتد (مثلاً قطع برق)، ممکن است دادهها از بین بروند و مانند هر چیز دیگری در سیستم نیاز به بازیابی داشته باشند.
پشتیبانی دستگاه
اگرچه هدف این است که لینوکس روی ChromeOS با همه Chromebookها کار کند، اما هسته و ویژگیهای سختافزاری مورد نیاز، مکانهایی را که میتوان آن را مستقر کرد، محدود میکند. این تیم بر امنیت و پایداری سیستم تمرکز کرده و در عین حال، ویژگیهایی را که منطقی به نظر میرسند، پشتیبانگیری میکند. این حوزه، حوزهای است که همچنان در حال تلاش است.
اکنون پشتیبانی میشود
برای مشاهده فهرست دستگاههایی که در حال حاضر پشتیبانی میشوند، لطفاً به سیستمهای ChromeOS که از لینوکس پشتیبانی میکنند مراجعه کنید.
الزامات سختافزاری
اگرچه در حال حاضر حداقل مقدار رم، فضای ذخیرهسازی یا سرعت پردازنده مورد نیاز برای اجرای لینوکس روی کانتینر ChromeOS وجود ندارد، اما هرچه از هر کدام بیشتر داشته باشید، سیستم عملکرد بهتری خواهد داشت.
با این اوصاف، شما به پردازندهای نیاز خواهید داشت که از مجازیسازی سختافزاری پشتیبانی کند. در پلتفرمهای x86، این قابلیت نامهای زیادی دارد. اینتل آن را VT-x و VMX مینامد. AMD آن را AMD-V و SVM مینامد.
سیستمهای BayTrail
کرومبوکهایی که از BayTrail اینتل استفاده میکنند، VT-x را شامل نمیشوند. در حالی که این پردازنده معمولاً شامل VMX است، نوع موجود در کرومبوکها این ویژگی را ندارد و بنابراین، متأسفانه، هرگز پشتیبانی نخواهد شد.
میتوانید با جستجوی BayTrail در فهرست دستگاههای عمومی ما در زیر ستون Platform ، بررسی کنید که آیا برد مورد نظر پشتیبانی میشود یا خیر.
هستههای قدیمی
هیچ برنامهای برای پشتیبانی از لینوکس ۳.۱۴ یا قدیمیتر وجود ندارد. این پشتیبانیها نیازمند بکپورت ویژگیهای جدید هستند که گسترده و اغلب تهاجمی هستند. برای مثال:
میتوانید با جستجوی فهرست دستگاههای عمومی ما برای شماره نسخههای کمتر از ۳.۱۴ در زیر ستون Kernel ، بررسی کنید که آیا یک برد پشتیبانی میشود یا خیر.
پردازندههای ARM 32 بیتی
راهاندازی ماشینهای مجازی تحت پردازندههای ARM 32 بیتی دشوار، غیراستاندارد و نیازمند هماهنگی با میانافزار است. متأسفانه، میانافزار ChromeOS تمایلی به پیکربندی افزونهها ندارد. به همین دلیل، این سیستمها پشتیبانی نمیشوند.
میتوانید با جستجوی عبارت arm در فهرست دستگاههای عمومی ما در زیر ستون Kernel ABI ، ببینید که آیا یک برد پشتیبانی میشود یا خیر.