হাইবারনেট করুন এবং একটি অদলবদল ফাইল থেকে পুনরায় শুরু করুন


23

আমি অদলবদল বিভাজন ব্যবহার না করে একটি অদলবদল ফাইল ব্যবহার করার জন্য একটি নোটবুকে একটি নতুন উবুন্টু ইনস্টলেশনটি কনফিগার করেছি।

ডিফল্টরূপে, একটি swap ফাইল ব্যবহার করে হাইবারনেট করতে উবুন্টু পেতে তাই আমি চেষ্টা সম্ভব নয় এই টিউটোরিয়াল , কিন্তু এটা নির্দিষ্ট grub1 এবং উবান্টু এখন ব্যবহার grub2

কেউ কীভাবে এটি করতে জানেন?

উত্তর:


21

ইউএসউইউএসপি ব্যবহার করে অদলবদলের ফাইলের সাথে হাইবারনেট করুন

যদিও ফাইল অদলবদলে হাইবারনেট করা সম্ভব এবং এটি সম্ভবত কার্নেল প্যারামিটার সেট করে সিস্টেমড হাইবারনেট নিয়ে কাজ করে। যাইহোক, আমি এটি পুনরায় আরম্ভ করতে পেলাম না তাই পরিবর্তে ইউএসউসপ (ইউজারস্পেস সফটওয়্যার সাসপেন্ড) ব্যবহার করে স্যুইচ করা হয়েছে । আমি উবুন্টু 17.04 / 17.10 এ ব্যবহৃত পদক্ষেপগুলি এখানে দিচ্ছি।

সোয়াপ ফাইল তৈরি করুন

একটি ফর্ম্যাট 4GiB অদলবদল তৈরি করার কমান্ডগুলি মাউন্ট করা এবং এতে যুক্ত করা /etc/fstab:

sudo fallocate -l 4g /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab

অদলবদলের পার্টিশন যাচাই করুন

sudo findmnt -no SOURCE,UUID -T /swapfile
> /dev/sda1 11cc33ee-1234-abcd-1234-ddeeff112233

ইনস্টল করুন ইউজারস্পেস সফটওয়্যার সাসপেন্ড (ইউএসএসপি)

sudo apt install uswsusp

ইউএসএসপকে কনফিগার করুন

তৈরি /etc/uswsusp.confএবং পুনরায় তৈরি করতে initramfs:

sudo dpkg-reconfigure -pmedium uswsusp
  • Yes' বৈধ অদলবদল ছাড়াই চালিয়ে যেতে চান ? ' (উইজার্ড এখনও অদলবদল সেট করে না))
  • নির্বাচন করুন পার্টিশন যে সোয়াপ ফাইল থাকা, থেকে বিস্তারিত প্রতিনির্দেশ findmntউপরে। ( নোট: না swap 'র ফাইল নিজেই )

দ্রষ্টব্য: ম্যানুয়ালি করা যেকোন পরিবর্তনগুলির জন্য এই কমান্ডটি পরে পুনরায় তৈরি করা /etc/uswsusp.confপ্রয়োজন initramfs:

sudo update-initramfs -u

ইউএসউইউস্প হাইবারনেট পরীক্ষা করুন

sudo s2disk

snapshotহাইবারনেট এবং পুনরায় শুরুতে পর্দায় বার্তা থাকতে হবে ।

সিস্টেমড হাইবারনেট সহ এস 2 ডিস্ক ব্যবহার করুন

ডিফল্টরূপে সিস্টেমেড এটি নিজস্ব হাইবারনেট কমান্ড ব্যবহার করবে সুতরাং এগুলি ওভাররাইড করে ইউএসউপ কমান্ডগুলির সাথে তাদের প্রতিস্থাপন করুন systemd-hibernate.service:

sudo systemctl edit systemd-hibernate.service

টেক্সট এডিটরে খোলে যা নীচের পাঠ্যটি ফাঁকা করে দেয় (ফাঁকা এক্সেসস্টার্ট প্রয়োজনীয়)। তারপরে সংরক্ষণ করুন এবং প্রস্থান করুন:

[Service]
ExecStart=
ExecStart=/usr/sbin/s2disk 
ExecStartPost=/bin/run-parts -a post /lib/systemd/system-sleep

এটি /etc/systemd/system/systemd-hibernate.service.d/override.confওভাররাইড বিশদ সহ ফাইল তৈরি করবে ।

পরীক্ষিত সিস্টেম হাইবারনেট:

systemctl hibernate 

দ্রষ্টব্য: সিস্টেমডটি override.confতৈরি হয়েছে, লোড হয়েছে এবং কোনও ত্রুটি নেই তা পরীক্ষা করতে , চালনা করুন:

systemctl status systemd-hibernate.service

তথ্যসূত্র:


এই নির্দেশাবলী কার্যকর বলে মনে হচ্ছে তবে সিস্টেমড হাইবারনেশন আমার পক্ষে কাজ করছে না। আপনি এটি নিজের পরীক্ষা করেছেন? এটি ExceStart=run-parts -a post /lib/systemd/system-sleepহওয়া উচিতExceStartPost=run-parts -a post /lib/systemd/system-sleep
জোয়াকান আরমেন্দা

এটি পরীক্ষিত এবং কাজ করা হয়েছিল তবে সম্ভবত এটির যোগ করার প্রয়োজন। আমি আমার উত্তর আপডেট করেছি।
কাস

এটি একেবারে ঠিক দেখাচ্ছে না। enableবিকল্প systemctl symlinks থেকে /etc/systemd/system/থেকে /lib/systemd/system/। আপনার কখনই সরাসরি অনুলিপি করা উচিত নয়/etc/systemd/system/
অস্পেক্স

1
আমি এই কাজটি করতে পরিচালনা করিনি 😞। আমি সোয়াপফায়াল সেট আপ করেছি, ইউএসএসপকে ইনস্টল ও কনফিগার করেছি, তবে ডিসপ্লে বন্ধ করার চেয়ে sudo s2diskলগগুলি Saving snapshot~ 5 মিনিটের জন্য স্থির থাকে এবং তারপরে এটি কম্পিউটারটি বন্ধ করে দেয়। তবে আমি এটি চালু করার পরে, এটি সাধারণত বুট হয় যেমন কোনও হাইবারনেশন হয়নি।
m93a

1
আমি মনে করি এই লাইনটি sudo findmnt -no SOURCE,UUID -T /mnt/4GiB.swapপরিবর্তন করা উচিতsudo findmnt -no SOURCE,UUID -T /swapfile
user1915011

12

এটি আমি উবুন্টু 18.04 এর সাথে কাজ করার জন্য কী করেছি।

  • /swapfileআপনার র‌্যামের আকার কমপক্ষে তৈরি করুন

    sudo swapoff /swapfile
    sudo dd if=/dev/zero of=/swapfile bs=$(cat /proc/meminfo | grep MemTotal | grep -oh '[0-9]*') count=1024 conv=notrun
    sudo mkswap /swapfile
    sudo swapon /swapfile
    
  • আপনার উপস্থিত পার্টিশনের ইউইউডি নোট করুন /swapfile:

    $ sudo findmnt -no SOURCE,UUID -T /swapfile
    /dev/nvme0n1p5 20562a02-cfa6-42e0-bb9f-5e936ea763d0
    
  • সোয়াপ uswsuspফাইলটি সঠিকভাবে ব্যবহার করতে প্যাকেজটি পুনরায় কনফিগার করুন :

    sudo dpkg-reconfigure -pmedium uswsusp
    # Answer "Yes" to continue without swap space
    # Select "/dev/disk/by-uuid/20562a02-cfa6-42e0-bb9f-5e936ea763d0" replace the UUID with the result from the previous findmnt command
    # Encrypt: "No"
    
  • সিস্টেমডি হাইবারনেট পরিষেবাটি ব্যবহার করে সম্পাদনা করুন sudo systemctl edit systemd-hibernate.serviceএবং এটি নিম্নলিখিত বিষয়বস্তু দিয়ে পূরণ করুন:

    [Service]
    ExecStart=
    ExecStartPre=-/bin/run-parts -v -a pre /lib/systemd/system-sleep
    ExecStart=/usr/sbin/s2disk
    ExecStartPost=-/bin/run-parts -v --reverse -a post /lib/systemd/system-sleep
    
  • আপনার পুনঃসূচনা অফসেট নোট করুন /swapfile:

    $ sudo swap-offset /swapfile
    resume offset = 34818
    
  • /etc/default/grubনিম্নলিখিত লাইনটি সম্পাদনা ও সংশোধন করে সোয়াপফায়াল থেকে পুনরায় সূচনা করতে গ্রাবকে কনফিগার করুন :

    GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=20562a02-cfa6-42e0-bb9f-5e936ea763d0 resume_offset=34818 quiet splash"
    
  • গ্রাব আপডেট করুন:

    sudo update-grub
    
  • নিম্নলিখিত তৈরি করুন /etc/initramfs-tools/conf.d/resume:

    RESUME=UUID=20562a02-cfa6-42e0-bb9e-5e936ea763d0 resume_offset=34816
    # Resume from /swapfile
    
  • Initramfs আপডেট করুন:

    sudo update-initramfs -u -k all
    

এখন আপনি হাইবারনেট করতে পারেন sudo systemctl hibernate

যে কেউ এই স্ক্রিপ্টগুলি তৈরি করতে পারে:

    sudo tee /usr/local/bin/gotosleep <<EOF
    dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
    sleep 2
    sudo /usr/sbin/s2both
    EOF
    sudo chmod +x /usr/local/bin/gotosleep
    sudo tee /usr/local/bin/gotohibernation <<EOF
    dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
    sleep 2
    sudo systemctl hibernate
    EOF
    sudo chmod +x /usr/local/bin/gotohibernation

তাই আপনি ঘুমাতে gotosleepবা সাথে হাইবারনেট করতে পারেন gotohibernation

আপনি নির্বাহ করতে সক্ষম হতে হবে sudo s2both, sudo s2ramএবং sudo systemctl hibernateকাজ আগের স্ক্রিপ্টের জন্য আপনার পাসওয়ার্ড লিখুন না করেও।

আপনি উদাহরণস্বরূপ একটি powerdevগোষ্ঠী তৈরি করে এটি করতে পারেন, এতে আপনার বর্তমান ব্যবহারকারীর যুক্ত করুন এবং নিম্নলিখিত sudoers কনফিগারেশন (এটি সম্পাদনা করুন sudo visudo -f /etc/sudoers.d/powerdev) দ্বারা:

     %powerdev ALL=NOPASSWD: /usr/sbin/s2both, /usr/sbin/s2ram, /bin/systemctl hibernate

ডকুমেন্টেশন ব্যবহৃত:


এই জন্য আপনাকে ধন্যবাদ! আমি অনেকগুলি পদ্ধতি চেষ্টা করেছি, তবে কেবলমাত্র আপনার জন্য আমার উবুন্টু 18.04 এ কাজ করে :)
জিরিশালভ

এটি প্রায় আমাকে হাইবারনেশনের চেষ্টা করার মতো বোধ করে তোলে - আমার ডিস্কগুলিতে মাঝে মধ্যে দুর্নীতির সমস্যা ছিল যা স্পষ্টতই হাইবারনেশন প্রক্রিয়ার সাথে সম্পর্কিত ছিল। আপনি কি এরকম কিছু সম্মুখীন হয়েছেন?
চার্লস সবুজ

আপনাকে ধন্যবাদ, অ্যান্টনি! আমি হাইবারনেট হয়ে কাজ করার জন্য অনেক কিছুই চেষ্টা করেছি। আপনার চূড়ান্ত সমাধান যা করেছিল। মনে হচ্ছে খুব আমাকে অদ্ভুত যে এই পর্যন্ত সঠিকভাবে সোজা দূরে সেট করা নেই। :(
মাইক উইলিয়ামসন

এই গাইডের জন্য ধন্যবাদ। পদক্ষেপগুলি অনুসরণ করার পরে $ sudo systemctl হাইবারনেট ব্যবহার করে হাইবারনেট করার চেষ্টা করার পরে, আমার ল্যাপটপ হাইবারনেট করার চেষ্টা করার পরে কয়েক সেকেন্ড পরে জেগে। / var / log / syslog অনেক ত্রুটি দেখায়, তবে এগুলি সবচেয়ে প্রাসঙ্গিক বলে মনে হচ্ছে: - আউটপুট eDP-1 এর জন্য পাওয়ার সেভিং মোড সেট করতে ব্যর্থ হয়েছে: অনুমতি প্রত্যাখ্যান করা হয়েছে ... - অবজেক্ট। Gjs_AppIndicatorIconActor__1 (0x561c60a4d150), ইতিমধ্যে চূড়ান্ত করা হয়েছে। এটিতে কোনও সম্পত্তি সেট করা অসম্ভব। ... - এস 2 ডিস্ক: রেজ্যুম ডিভাইসটি ব্যবহার করতে পারেনি (অদলবদল করে দেখুন)। কারণ: এ জাতীয় কোনও ডিভাইস নেই - systemd-hibernate.service: মূল প্রক্রিয়াটি প্রস্থান হয়েছে, কোড = বেরিয়েছে, ...
জেলানী নেলসন

1
এটি আমার জন্য কাজ করা একমাত্র সমাধান। শুধু এই উত্তরটি upvote করতে সাইন ইন। ধন্যবাদ।
দিপেট্রিনি

8

আমি টিউটোরিয়ালে একটি দ্রুত পঠন করেছি এবং আমি যদি সঠিকভাবে বুঝতে পারি তবে আপনাকে resumeলিনাক্স কমান্ড লাইনে অপশনগুলি নির্দিষ্ট করতে হবে । গ্রুব 2 সহ সত্যিই সহজ, এবং আপনার পরিবর্তনগুলি সর্বদা সংরক্ষণ করা হবে। আপনাকে /etc/default/grubফাইলটি সম্পাদনা করতে হবে, বিশেষত এই লাইনটি:

GRUB_CMDLINE_LINUX="resume=... resume_offset=..."

এর পরে, sudo update-grubপরিবর্তনগুলি কার্যকর হওয়ার জন্য চালান ।

পরিবর্তনগুলি আপনার GRUB_CMDLINE_LINUXঅন্যান্য লিনাক্স ইনস্টলেশনগুলিকে প্রভাবিত করবে না (কারণ /etc/grub.d/30_os-proberএই পরিবর্তনশীলটি ব্যবহার করে না)।

আপনার যে সমস্যাটি হচ্ছে সে সম্পর্কে: সোয়াপ ফাইলের পার্টিশনটি কি এনক্রিপ্ট করা আছে? যদি তা হয়, হাইবারনেশন কাজ করবে না। যদি তা না হয় তবে এর ফলাফল আউটপুট filefrag -v /swapfileসহায়ক হতে পারে।


ধন্যবাদ! আমি চেষ্টা করব. তবে আমি মনে করি এটি এই লাইনটি সহ সমস্ত লিনাক্স এন্ট্রিগুলি কনফিগার করে।
tfmoraes

ভুলে যাবেন না: পরিবর্তনের পরে /etc/default/grubআপনার চালানো দরকার update-grub
জানু

@tfmoraes: আপনি কেন এটি সমস্ত লিনাক্স এন্ট্রিগুলিতে যুক্ত করতে চান না?
জানু

@ জনসি: কারণ আমার অন্যান্য লিনাক্স বিতরণ ইনস্টল থাকতে পারে।
tfmoraes

1
@ didi_X8 যে মন্তব্যটি 8 বছর আগে লেখা হয়েছিল। এটা সম্ভব যে তখন থেকেই পরিস্থিতি বদলেছে। ভাগ করে নেওয়ার জন্য ধন্যবাদ.
Andrea Corbellini
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.