انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید




نویسنده موضوع: لاگین مستقیم کاربر به ماشین مجازی (حل شد)  (دفعات بازدید: 1283 بار)

0 کاربر و 2 مهمان درحال مشاهده موضوع.

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 780
  • جنسیت : پسر
  • Debian + Mate
با سلام و احترام به خدمت تمامی سروران ،

آیا راهی وجود دارد که برای یک کاربر چنین تعریف شود که در هنگام لاگین کردن  مستقیماً به محیط توزیع موردنظر  که در virt-manager نصب شده است بصورت full screen وارد شود؟
« آخرین ویرایش: 20 امرداد 1400، 06:04 ق‌ظ توسط norouzi90 »

آفلاین مرتضی . م

  • High Hero Member
  • *
  • ارسال: 1116
پاسخ : لاگین مستقیم کاربر به ماشین مجازی
« پاسخ #1 : 12 امرداد 1400، 09:07 ب‌ظ »
حالا full screen رو نمیدونم ولی برو auto login رو فعال کن دیگه!

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 780
  • جنسیت : پسر
  • Debian + Mate
پاسخ : لاگین مستقیم کاربر به ماشین مجازی
« پاسخ #2 : 12 امرداد 1400، 10:17 ب‌ظ »
من الان لینوکس مینت را به عنوان تنها توزیع اصلی خودم بر روی سیستمم دارم.
حالا فرض کنید بغیر از من فرد دیگری از اعضا خانواده از مانجارو خوشش آمده است .
یک کاری را که من می‌توانم انجام دهم این است که سیستمم را دوال بوت نمایم.
و هر دو توزیع مینت و مانجارو را بعنوان توزیع اصلی بر روی سیستمم داشته باشم.
ولی من از دوال بوت خوشم نمی آید.
یک راه دیگری که به ذهنم می‌رسد این است که مانجارو را در virt-manager نصب کنم و  کاری کنم که آن کاربر هنگامی که به لینوکس مینت به حساب کاربری خودش لاگین می کند، اصلاً ریخت و قیافه لینوکس مینت را نبیند ( هر چند که وارد آن محیط شده است) ، بصورت مستقیم وارد مانجارو  نصب شده در ماشین مجازی بشود.
فکر می‌کنم این عمل بوسیله  ویرایش systemd و cron و …. می‌تواند انجام بگیرد. ولی متأسفانه سوادم در آن حد نیست .

آفلاین مرتضی . م

  • High Hero Member
  • *
  • ارسال: 1116
پاسخ : لاگین مستقیم کاربر به ماشین مجازی
« پاسخ #3 : 12 امرداد 1400، 11:44 ب‌ظ »
توی lightdm میشه guest session گذاشت
اگر نمیخواید میتونید یه user دیگه بگذارید تا هرموقع مهمانی کسی اومد به اون کاربر login کنه
به نظرم استفاده از ماشین مجازی برای این کار هدر رفتن منابعه!

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 780
  • جنسیت : پسر
  • Debian + Mate
پاسخ : لاگین مستقیم کاربر به ماشین مجازی
« پاسخ #4 : 13 امرداد 1400، 01:57 ق‌ظ »
توی lightdm میشه guest session گذاشت
اگر نمیخواید میتونید یه user دیگه بگذارید تا هرموقع مهمانی کسی اومد به اون کاربر login کنه
به نظرم استفاده از ماشین مجازی برای این کار هدر رفتن منابعه!

با سپاس فراوان از بابت راهنمایی و پیشنهادتان.
ولی دوست دارم برای کسب آگاهی بیشتر روی این موضوع کار کنم، ولی خوشبختانه یا متأسفانه بدون کمک شما و سایر دوستان این امر برایم غیرممکن می باشد.( شاید بگویید برو مطالعه کن ولی فهم و حلاجی قضایا یک چیز دیگریست)
سؤالاتی که از این به بعد می‌پرسم کلاً در راستای حل این مسله می باشد،گام به گام می‌روم جلو،  و امیدوارم که راهنماییم بفرمایید.
تا جایی که من می‌دانم در محیط متنی یا همان کامند لاین ما فقط با دستورات کار داریم. در محیط گرافیکی مثلاً می‌خواهیم برنامه فایرفاکس را اجرا کنیم، می‌توانیم برویم در ترمینال دستور
firefox

را تایپ کرده و اینتر را بزنیم تا پنجره این مرورگر در محیط دسکتاب باز بشود. کار دیگری هم که می‌شود کرد این است که برویم بر روی آیکن این برنامه دابل کلیک کنیم:
۱- آیا دستوراتی که به پوسته یا کرنل در این دو حالت فرستاده می‌شود یکی است؟
۲- در محیط گرافیکی برای هر عملکرد، در پشت پرده، دستور یا دستوراتی اجرا  می شود. آیا راهی وجود دارد که متن این دستورات را ببینیم؟ببینیم در هر لحظه چه دستوراتی به پوسته فرستاده می شود؟

آفلاین مرتضی . م

  • High Hero Member
  • *
  • ارسال: 1116
پاسخ : لاگین مستقیم کاربر به ماشین مجازی
« پاسخ #5 : 13 امرداد 1400، 05:52 ق‌ظ »
۱- آیا دستوراتی که به پوسته یا کرنل در این دو حالت فرستاده می‌شود یکی است؟
۲- در محیط گرافیکی برای هر عملکرد، در پشت پرده، دستور یا دستوراتی اجرا  می شود. آیا راهی وجود دارد که متن این دستورات را ببینیم؟ببینیم در هر لحظه چه دستوراتی به پوسته فرستاده می شود؟
۱. تقریبا یکیه شاید موقع کلیک روی آیکن برنامه بیاد فایرفاکس رو به یه سری سوییچ و... اجرا کنه ولی در کل یکیه
۲. کارکردش این نیست ولی میتونید با دستور htop یه چیزایی دستگیرتون بشه به غیر از اون با alacarte میتونید ببینید که هر برنامه وقتی روی آیکنش کلیک میشه چه دستوری رو میفرسته و اگه بخواید تغییرش بدید.

** دستوری به پوسته فرستاده نمیشه! درواقع شما به پوسته دستور میدید

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 780
  • جنسیت : پسر
  • Debian + Mate
پاسخ : لاگین مستقیم کاربر به ماشین مجازی
« پاسخ #6 : 13 امرداد 1400، 04:42 ب‌ظ »
ممنون از برنامه مفیدی که معرفی فرمودید.(alacarte )
۱-
الان می‌دانم برای Launch شدن یک برنامه در محیط GPU  بایستی چه دستوری  را در ترمینال  بکار ببرم.( رجوع می‌کنم به قسمت Command  آن برنامه در پنجره Launcher Properties )
مثلاً برای اجرای برنامه Virtual Machine Manager در ترمینال تایپ می کنم:
virt-manager
۲-
این برنامه برای ورود در خود برنامه رمز عبور می‌خواهد که با استفاده از sudo   این مشکل هم حل می شود.
sudo virt-manager
۳-
 برای اینکه بتوانیم با پنجره ها کار کنیم بایستی دو تا بسته بنام های xdotool و wmctrl
را نصب کنیم:
sudo apt-get install xdotool wmctrl
۴-
برای کار با پنجره ها ما نیاز داریم که <window_id>  پنجره مورد نظر را بدانیم، از این دستور استفاده می کنیم:
wmctrl -l
که id تمام پنجره های فعال را به ما نشان می دهد.
ولی متأسفانه id پنجره ها یک مقدار ثابتی نیست و متغیر می‌باشد و با هر خاموش و روشن کردن سیستم عوض می شود.

الف) آیا راهی وجود دارد که در دستور بالایی عوض اینکه id تمام پنجره ها را بما به عنوان خروجی ارسال کند، تنها id پنجره ( manjaro on QEMU/KVM )بعنوان خروجی بما بدهد.
ب)یا بایستی دستوری نوشته شود که id پنجره ( manjaro on QEMU/KVM ) را بعنوان یک متغیر تعریف شود و از آن استفاده کنم.که در این حالت فکر کنم بایستی کمی برنامه نویسی یا اسکریپت نویسی یاد بگیرم.بنظرتان دقیقاً چه چیزی بکارم می‌آید ، دنبال آن باشم: پایتون، اسکریپت نویسی پوسته و...
پ)یا اینکه راه دیگری به ذهنتان می رسد؟!

۵-
اگر id  پنجره مورد نظرمان را بدانیم ، در مرحله بعد بایستی که پنجره را به حالت fullscreen در بیاوریم، که متأسفانه در اینترنت گشتم ولی چیزی دستگیرم نشد.
( مثلاً برای ماگزیمم کردن می‌شود از این دستور استفاده کرد:
xdotool windowsize <window_id> 100% 100%ولی برای fullscreen کردن نتوانستم کد مناسبش را پیدا کنم)


آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19702
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : لاگین مستقیم کاربر به ماشین مجازی
« پاسخ #7 : 13 امرداد 1400، 05:10 ب‌ظ »
۱. برنامهٔ گرافیکی رو با sudo اجرا نکن
۲. از devilspie2 برای کار با پنجره‌ها و شرط گذاشتن براشون استفاده کن
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5125
  • جنسیت : پسر
پاسخ : لاگین مستقیم کاربر به ماشین مجازی
« پاسخ #8 : 13 امرداد 1400، 05:34 ب‌ظ »
برای virt-manager برای اینکه لازم نباشه با sudo اجراش کنید، باید کاربر توی گروه‌های libvirt و libvirt-qemu باشه.
اینجوری کاربر خودتون رو به اون گروه‌ها اضافه کنید. (اشتباه تایپی ویرایش شد. دستور اشتباهی chmod به usermod تغییر کرد.)
sudo usermod -aG libvirt USERNAME
sudo usermod -aG libvirt-qemu USERNAME
به‌جای USERNAME کاربری رو بزارید که می‌خواهید توی اون گروه‌ها باشه. بعد برای اینکه این تغییرات جواب بدن، یه‌بار از اون کاربر خارج بشید و دوباره وارد بشید. یا اینکه دستور زیر رو بزنید.
newgrp
برای باز کردن ماشین مجازیِ داخل virt-manager، می‌تونید از این دستور استفاده کنید
virt-manager --connect qemu:///system --show-domain-console NAMEبه‌جای NAME باید اسم ماشین‌مجازی رو بزارید. البته نمی‌دونم اگه اسم ماشین‌مجازی شامل فاصله هم باشه باز هم کار می‌کنه یا نه‌. شاید در اونصورت لازم باشه اسم رو بین "" قرار بدید.
این دستور برای وقتی هست که از qemu/kvm داره برای مجازی‌سازی استفاده میشه. اگه از xen یا چیزی دیگه استفاده شده باشه، باید جلوی connect-- چیز دیگه‌ای بنویسید.
پنجره رو هم فکر کنم اگه باز کنید و بعد برید توی حالت full screen و بعد ببندیدش، دیگه توی همون حالت full screen باز میشه. مگه اینکه خودتون اندازه پنجره رو تغییر بدید و بعد ببندیدش.

یه‌کاری هم باید بکنید تا ماشین‌مجازی، موقع روشن شدن سیستم اصلی روشن بشه. فکر کنم توی همون تنظیمات مربوط به ماشین‌مجازی توی خود virt-manager چنین چیزی وجود داشته باشه. ولی احتمالا اینکار باعث میشه که مدت بوت شدن سیستم بیشتر بشه.

برای فیلتر خروجی wmctrl -l می‌تونید از grep استفاده کنید. اینجوری که خروجی wmctrl رو با استفاده از پایپ می‌فرستید به grep. یعنی اینطوری
wmctrl -l | grep "something in text"
اگه هم می‌خواهید، به حروف بزرگ و کوچیک حساس نباشه، از سوئیچ i- همراه grep استفاده کنید.

فکر کنم راه‌حل اینه که دستور زیر رو بزارید توی یه اسکریپت و بعد کاری کنید که موقع لاگین به اون کاربر، اسکریپت زیر اجرا بشه و virt-manager نمایان بشه. و همینطور کاری کنید که اون ماشین‌مجازی، موقع روشن شدن سیستم اصلی، روشن بشه.
virt-manager --connect qemu:///system --show-domain-console NAME
اما به نظرم این راه زیاد مناسبی نیست.اگه dual boot کنید فکر کنم بهتره. عملکرد بهتری هم از اون توزیع می‌گیرید.
اگه چنتا لینوکس رو dual boot می‌کنید، به نظرم بهتره که دایرکتوری /boot/grub/ یه bind mountpoint به دایرکتوری /boot/efi/grub/ باشه. اینجوری تنظیمات روی esp ذخیره میشه و بین همه‌ی توزیع‌ها هم یکسان میشه. (به شرطی که esp روی /boot/efi/ سوار شده باشه. توی توزیع‌های مبتنی بر دبیان که اینجوریه ولی توی توزیع‌های مبتنی بر آرچ، ممکنه esp رو /efi/ سوار بشه که در اونصورت باید bind mountpoint روی /efi/grub/ تنظیم بشه)

البته باید توی فایل fstab روی همه‌ی توزیع‌ها تنظیم کنید تا /boot/efi/grub/ (یا /efi/grub/) به صورت bind روی /boot/grub/ سوار بشه تا درست کار کنه. اگه درباره این سوال دارید، توی یه موصوع دیگه بپرسید.
« آخرین ویرایش: 14 امرداد 1400، 12:18 ق‌ظ توسط Dragon- »
میدونید که زکات علم نشر آن است

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 780
  • جنسیت : پسر
  • Debian + Mate
پاسخ : لاگین مستقیم کاربر به ماشین مجازی
« پاسخ #9 : 13 امرداد 1400، 08:08 ب‌ظ »
با سپاس مجدد از همه دوستان محترم.

۱-
نمی‌دانم چرا این دو تا دستوری که گذاشته بودید کار نکردند. شاید یک جایی من اشتباه کرده ام.
sudo usermode -aG libvirt USERNAME
sudo chmod -aG libvirt-qemu USERNAME
( نام کاربر مودنظر در عکسی که پایین گذاشته ام، a می باشد.)

۲-
virt-manager --connect qemu:///system --show-domain-console NAMEدستور فوق العاده ای بود،ممنون. ولی حیف که قدرت باز کردن و اجرای ماشین مجازی موردنظر را از حالت خاموش ندارد.

۳-
نقل‌قول
پنجره رو هم فکر کنم اگه باز کنید و بعد برید توی حالت full screen و بعد ببندیدش، دیگه توی همون حالت full screen باز میشه. مگه اینکه خودتون اندازه پنجره رو تغییر بدید و بعد ببندیدش.
نه، متأسفانه با restart ماشین مجازی ، از حالت full screen خارج می شود.

۴-
نقل‌قول
یه‌کاری هم باید بکنید تا ماشین‌مجازی، موقع روشن شدن سیستم اصلی روشن بشه. فکر کنم توی همون تنظیمات مربوط به ماشین‌مجازی توی خود virt-manager چنین چیزی وجود داشته باشه
متأسفانه گشتم، ولی چیزی ندیدم.

۵-
نقل‌قول
و همینطور کاری کنید که اون ماشین‌مجازی، موقع روشن شدن سیستم اصلی، روشن بشه.
این موضوع خفه ام کرده، مغزم هم هنگ کرده!!!

۶-
نقل‌قول
اما به نظرم این راه زیاد مناسبی نیست.اگه dual boot کنید فکر کنم بهتره.
دستت درد نکنه ولی نمی‌خواهم سیستمم را دو زنه کنم!!

آفلاین Issac

  • Hero Member
  • *
  • ارسال: 890
  • جنسیت : پسر
    • Mastodon
پاسخ : لاگین مستقیم کاربر به ماشین مجازی
« پاسخ #10 : 13 امرداد 1400، 10:43 ب‌ظ »
نمیشه فقط دسکتاپ مانجارو رو نصب کنی و وفتی اون کاربر خاص میخواد از سیسستم استفاده کنه دسکتاپ خودشو تغییر بده؟ اصلا دسکتاپ پیشفرض مانجارو چیه؟

اون کاری که شما میخواید انجام بدید برای یه کاربر مبتدی مثل من یا شما بدرد نمیخوره. و کاربرهای حرفه‌ای هم شاید فقط برای آزمایش اینکارارو انجام بدن.

نصب یه دسکتاب تهش دوخط دستور تو ترمینال نیاز داره ولی کاری که شما میخواین انجام بدین حداقل چند روز باید راهنماهای سایتهای مختلف رو بخونید، و چند ماه هم باید مشکلاتش رو برطرف کنید.
این پست رو فرستادم که تعداد ارسال‌هام زیاد بشه.

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5125
  • جنسیت : پسر
پاسخ : لاگین مستقیم کاربر به ماشین مجازی
« پاسخ #11 : 14 امرداد 1400، 12:17 ق‌ظ »
اون دستورات یکم اشتباه تایپی داشتند. ;D
اون e آخر توی usermode رو پاک کنید. chmod رو هم اشتباه نوشتم. منظورم usermod بوده.
میدونید که زکات علم نشر آن است

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 780
  • جنسیت : پسر
  • Debian + Mate
پاسخ : لاگین مستقیم کاربر به ماشین مجازی
« پاسخ #12 : 14 امرداد 1400، 06:51 ق‌ظ »
نمیشه فقط دسکتاپ مانجارو رو نصب کنی و وفتی اون کاربر خاص میخواد از سیسستم استفاده کنه دسکتاپ خودشو تغییر بده؟ اصلا دسکتاپ پیشفرض مانجارو چیه؟

اون کاری که شما میخواید انجام بدید برای یه کاربر مبتدی مثل من یا شما بدرد نمیخوره. و کاربرهای حرفه‌ای هم شاید فقط برای آزمایش اینکارارو انجام بدن.

نصب یه دسکتاب تهش دوخط دستور تو ترمینال نیاز داره ولی کاری که شما میخواین انجام بدین حداقل چند روز باید راهنماهای سایتهای مختلف رو بخونید، و چند ماه هم باید مشکلاتش رو برطرف کنید.
شما و سایر دوستان درست می فرمایید.
ولی این مسایل برایم انگیزه می دهد و روحیه ام را زنده نگه می دارد.


در ترمینال با دستور:
wmctrl -l | grep "manjaro on QEMU/KVM"
خروجی زیر را بمن می دهد:
0x052000ea  0 sun manjaro on QEMU/KVM
چه دستوری را می‌توانم بکار ببرم که تنها ده کارکتر اول را بعنوان خروجی بمن بدهد؟


آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5125
  • جنسیت : پسر
پاسخ : لاگین مستقیم کاربر به ماشین مجازی
« پاسخ #13 : 14 امرداد 1400، 12:55 ب‌ظ »
می‌تونید از awk که یه زبان برای پردازش متن هست استفاده کنید. باز هم خروجی رو با پایپ بفرستید به دستور awk. اینجوری
wmctrl -l | grep "manjaro on QEMU/KVM" | awk '{print $1}'
چیزی که جلوی awk نوشته شده میگه که اولین قسمت از متن رو نمایش بده. به طور پیش‌فرض، فاصله به عنوان جداکننده به حساب میاد. پس اگه به‌جای 1$ می‌نوشتید 2$ عدد 0 نمایش داده می‌شد و اگه 3$ بود، sun نمایش داده می‌شد.

البته فکر کنم با دستور cut هم بتونید اینکار رو انجام بدید. شاید با grep هم بشه.
« آخرین ویرایش: 15 امرداد 1400، 05:59 ب‌ظ توسط Dragon- »
میدونید که زکات علم نشر آن است

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19702
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : لاگین مستقیم کاربر به ماشین مجازی
« پاسخ #14 : 14 امرداد 1400، 01:18 ب‌ظ »
به نظرم cut راحت‌تره.
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن