কমান্ড লাইন থেকে OsIndication efi পরিবর্তনশীল কীভাবে লিখবেন / সম্পাদনা করবেন / আপডেট করবেন?


9

আল্ট্রা ফাস্ট বুট ব্যবহার করার সময় ইউইএফআই ফার্মওয়্যার সেটআপ ইউটিলিটি প্রবেশের প্রয়োজনে (পিওএসটি চলাকালীন কীবোর্ড ড্রাইভারগুলি লোড করা হয় না), আমি "ওএস সূচকগুলি" এফি ভেরিয়েবলটি লিখতে চাই। আমার ওএস হ'ল উবুন্টু 14.04 কার্নেল 3.13.0-35-জেনেরিক।

OsIndications ভেরিয়েবল একটি UINT64 বিটমাস্ক প্রদান করে returns

OsIndicationsSupported ভেরিয়েবল একটি UINT64 বিটমাস্ক প্রদান করে returns

EFI_OS_INDICATIONS_BOOT_TO_FW_UIবিট যদি ফার্মওয়্যার সমর্থন ওএস অনুরোধ একটি ফার্মওয়্যার ইউজার ইন্টারফেস এ বন্ধ করার ফার্মওয়্যার দ্বারা OsIndicationsSupported পরিবর্তনশীল মধ্যে নির্ধারণ করা যাবে। EFI_OS_INDICATIONS_BOOT_TO_FW_UIবিট OsIndications পরিবর্তনশীল মধ্যে ওএস দ্বারা সেট করা যেতে পারে, যদি ফার্মওয়্যার জন্য অপারেটিং সিস্টেম ইচ্ছা পরবর্তী বুট একটি ফার্মওয়্যার ইউজার ইন্টারফেস এ থামাতে।

EFI_OS_INDICATIONS_BOOT_TO_FW_UI= 0x0000000000000001- ইউইএফআই স্পেসের পৃষ্ঠা 312 2.3.1 সি

আমার ফার্মওয়্যারটিতে পরবর্তী বুটে ফার্মওয়্যার সেটআপ ইউটিলিটি প্রবেশ করার ক্ষমতা রয়েছে:

$ hexdump /sys/firmware/efi/vars/OsIndicationsSupported-8be4df61-93ca-11d2-aa0d-00e098032b8c/data
0000000 0001 0000 0000 0000
0000008

আমি /sys/firmware/efi/efivarsব্যবহার করে একটি নতুন ভেরিয়েবল তৈরি করতে পারি

$ printf\x07\x00\x00\x00\x00" > myvar-12345678-1234-1234-1234-123456789abc

যাইহোক, efi লেখার জন্য OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8cসব ধরণের ফলাফল পরিবর্তন write error: Invalid argument:

নতুন efivarfs ব্যবহার করে

# printf "x00\x00\x00\x01" > /sys/firmware/efi/efivars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c
-bash: printf: write error: Invalid argument

# printf "x00\x00\x00\x01" > /sys/firmware/efi/efivars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c
-bash: printf: write error: Invalid argument

# printf "\x01" > /sys/firmware/efi/efivars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c
-bash: printf: write error: Invalid argument

# cat enter-uefi-fw > /sys/firmware/efi/efivars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c
cat: write error: Invalid argument

পুরানো 1024 বাইট সর্বাধিক সিসফস-ইফিভারগুলি ব্যবহার করে

# cat enter-uefi-fw > /sys/firmware/efi/vars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var
cat: write error: Input/output error

# cat enter-uefi-fw > /sys/firmware/efi/vars/new_var
cat: write error: Invalid argument

# echo 'enter-uefi-fw' > /sys/firmware/efi/vars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var
-bash: echo: write error: Invalid argument

# printf "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" > /sys/firmware/efi/vars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var
-bash: printf: write error: Invalid argument

সঠিকভাবে কাজ করার জন্য ইউইএফআই ভেরিয়েবল সমর্থনের প্রয়োজনীয়তাগুলি পরীক্ষা করে

  1. EFI রানটাইম পরিষেবাদি সহায়তা কার্নেলের
    $ cat /boot/config-$(uname -r) | grep CONFIG_EFI=yরিটার্নে উপস্থিত থাকতে হবেCONFIG_EFI=y
  2. কার্নেল প্রসেসরের বেতেনস / খিলান এবং ইএফআই প্রসেসরের বেটেনস / খিলানটি মিলবে
    ?
  3. কার্নেলটি EFI মোডে বুট করা উচিত
    ফার্মওয়্যার সেটআপ ইউটিলিটি / বিআইওএসে সিএসএম অক্ষম করা আছে
  4. কার্নেলের EFI রানটাইম পরিষেবাদিগুলি কার্নেল cmdline এর মাধ্যমে অক্ষম করা উচিত নয়, যেমন নোফি কার্নেল প্যারামিটার ব্যবহার করা উচিত নয়।
    cat /proc/cmdline | grep EFIকিছুই না
  5. efivarfs ফাইল সিস্টেমটি / sys / ফার্মওয়্যার / efi / efivars
    mount | grep efivarsরিটার্নে মাউন্ট করা উচিতnone on /sys/firmware/efi/efivars type efivarfs (rw)
  6. efivar -lকোনও ত্রুটি ছাড়াই EFI ভেরিয়েবলগুলি তালিকাভুক্ত করা উচিত
    কমান্ডটি 82 লাইন এবং কোন ত্রুটি তালিকাভুক্ত করে।
  7. / Sys / ফার্মওয়্যার / efi / efivars / dump- * ফাইলের অস্তিত্বের জন্য পরীক্ষা করুন।
    কোনও ডাম্প ফাইল নেই exist

মতে https://ask.fedoraproject.org/en/question/8264/after-installing-fedora-i-cant-open-biosefi-setup/?answer=16402#post-id-16402cat enter-uefi-fw > /sys/firmware/efi/vars/new_var কমান্ড Fedora- র মধ্যে কাজ করা উচিত 17।

প্রথমে OsIndication মুছে ফেলার উন্নতি হয় না

# rm -rv /sys/firmware/efi/efivars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c
removed '/sys/firmware/efi/efivars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c'
# ls -l enter-uefi-fw
-rw-r--r-- 1 root root 2084 Aug 25 20:23 enter-uefi-fw
# cat enter-uefi-fw > /sys/firmware/efi/vars/new_var
cat: write error: Invalid argument

কমান্ড-লাইন থেকে আমি কীভাবে উবুন্টু 14.04 (বিশ্বস্ত) তে ইতিমধ্যে বিদ্যমান ওসিআইডিকেশনগুলি ইফি ভেরিয়েবল আপডেট করব?

উত্তর:


1

অসংখ্য ফার্মওয়্যার বাগের উপস্থিতির কারণে যেখানে নন-স্ট্যান্ডার্ড ইউইএফআই ভেরিয়েবলগুলি অপসারণের ফলে সিস্টেম ফার্মওয়্যারটি পোষ্টে ব্যর্থ হতে পারে, ইফিয়ার্ফস ফাইলগুলি যা সুপরিচিত মানযুক্ত ভেরিয়েবলগুলি অপরিবর্তনীয় ফাইল হিসাবে তৈরি করা হয়।

https://www.kernel.org/doc/Documentation/filesystems/efivarfs.txt

এটি lsattr এবং chattr কমান্ডের সাহায্যে যাচাই ও পরিবর্তন করা যেতে পারে ।

উদাহরণ স্বরূপ:

root@hi12:/tmp/test# hexdump -C out 
00000000  07 00 00 00 10 00 00 00                           |........|
00000008
root@hi12:/tmp/test# cp out /sys/firmware/efi/efivars/BootSelectVariable-944fb13b-773f-4cbb-9c6f-326cebde4c23 
cp: cannot create regular file '/sys/firmware/efi/efivars/BootSelectVariable-944fb13b-773f-4cbb-9c6f-326cebde4c23': Operation not permitted
root@hi12:/tmp/test# lsattr  /sys/firmware/efi/efivars/BootSelectVariable-944fb13b-773f-4cbb-9c6f-326cebde4c23 
----i-------------- /sys/firmware/efi/efivars/BootSelectVariable-944fb13b-773f-4cbb-9c6f-326cebde4c23
root@hi12:/tmp/test# chattr -i /sys/firmware/efi/efivars/BootSelectVariable-944fb13b-773f-4cbb-9c6f-326cebde4c23 
root@hi12:/tmp/test# lsattr  /sys/firmware/efi/efivars/BootSelectVariable-944fb13b-773f-4cbb-9c6f-326cebde4c23 
------------------- /sys/firmware/efi/efivars/BootSelectVariable-944fb13b-773f-4cbb-9c6f-326cebde4c23
root@hi12:/tmp/test# cp out /sys/firmware/efi/efivars/BootSelectVariable-944fb13b-773f-4cbb-9c6f-326cebde4c23 
root@hi12:/tmp/test# chattr +i /sys/firmware/efi/efivars/BootSelectVariable-944fb13b-773f-4cbb-9c6f-326cebde4c23 
root@hi12:/tmp/test# lsattr  /sys/firmware/efi/efivars/BootSelectVariable-944fb13b-773f-4cbb-9c6f-326cebde4c23 
----i-------------- /sys/firmware/efi/efivars/BootSelectVariable-944fb13b-773f-4cbb-9c6f-326cebde4c23
root@hi12:/tmp/test# 

1

এখানে প্রাসঙ্গিক -৪-বিট মাস্কটি হ'ল:

  #define EFI_OS_INDICATIONS_BOOT_TO_FW_UI 0x0000000000000001

এটি ব্যবহার করে সামান্য এন্ডিয়ান (ইন্টেল) ফর্ম্যাট স্ট্রিং হিসাবে উত্পাদিত হতে পারে:

  str='\x01\x00\x00\x00\x00\x00\x00\x00'; printf "$str"

printf "$str"উপরের আউটপুটটি efivarfs ভেরিয়েবল ফাইলের ডেটা সামগ্রীগুলিতে যেতে হবে $var, যেখানে

  var='/sys/firmware/efi/efivars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c'

তবে, প্রতিটি ফাইল 4-বাইট শিরোনাম/sys/firmware/efi/efivars দিয়ে শুরু হয় এবং তারপরে তার ডেটা সামগ্রীগুলি অনুসরণ করে। অতএব, efivarfs ভেরিয়েবল ফাইলটিতে এটি লেখার আগে আমাদের আউটপুটটি 4-বাইট শিরোনামের সাথে উপসর্গ করা উচিত । সঙ্গে এবং উপরোক্ত হিসাবে এই কাজ করা যেতে পারে, যেমন, ব্যবহার করছে:printf "$str"$var$str$var

  { head -c 4 "$var"; printf "$str"; } > "$var"

0

এর echoপরিবর্তে ব্যবহার করার চেষ্টা করুন cat

# echo 'enter-uefi-fw' > /sys/firmware/efi/vars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var

কার্নেল 3.13.0-35-জেনেরিক এবং 3.17.0-031700rc7-জেনেরিক আউটপুট:-bash: echo: write error: Invalid argument
প্রো ব্যাকআপ

জিনিষ আপনি চেষ্টা করছে তার তালিকা এ আরো সাবধানে খুঁজছি, আপনি চেষ্টা করেছেন: printf "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" > /sys/firmware/efi/vars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var ? প্রিন্টফ '\ x' এর শীর্ষস্থানীয় '\' নোট করুন যা আপনি বাদ দিয়েছেন, এই সত্যটি যে আমরা পুরো মানটি পূরণ করছি এবং পথের শেষে কাঁচা_ভারটি।
টুকরো টুকরো

# printf "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" > /sys/firmware/efi/vars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_varফলাফল-bash: printf: write error: Invalid argument
প্রো ব্যাকআপ

কমান্ডটি চালানোর আগে আপনি কি pjones.fedorapeople.org/enter-uefi-fw ডাউনলোড করেছেনcat ?
টুকরো টুকরো

হ্যাঁ, আমি enter-uefi-fw ডেটা ফাইল ডাউনলোড করেছি এবং সেই ফাইলটি আমার বর্তমান কার্যনির্বাহী ডিরেক্টরিতে রয়েছে: # ls -l enter-uefi-fwপ্রত্যাবর্তন -rw-r--r-- 1 root root 2084 Aug 25 20:23 enter-uefi-fw
প্রো ব্যাকআপ 21
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.