mke2fs -d
ছাড়া কম রানযোগ্য উদাহরণ sudo
mke2fs
e2fsprogs প্যাকেজ অংশ। বিখ্যাত লিনাক্স কার্নেল ফাইল সিস্টেম বিকাশকারী থিওডোর টি'ও ২018 সালের মতো গুগল এ লিখিত রয়েছে এবং উৎস আপস্ট্রিম kernel.org এর আওতায় রয়েছে: https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs অতএব, যে সংগ্রহস্থলটি ext ফাইল সিস্টেম ক্রিয়াকলাপগুলির একটি রেফারেন্স ইউজারল্যান্ড বাস্তবায়ন হিসাবে বিবেচিত হতে পারে:
#!/usr/bin/env bash
set -eu
root_dir=root
img_file=img.ext2
# Create a test directory to convert to ext2.
mkdir -p "$root_dir"
echo asdf > "${root_dir}/qwer"
# Create a 32M ext2 without sudo.
# If 32M is not enough for the contents of the directory,
# it will fail.
rm -f "$img_file"
mke2fs \
-L '' \
-N 0 \
-O ^64bit \
-d "$root_dir" \
-m 5 \
-r 1 \
-t ext2 \
"$img_file" \
32M \
;
# Test the ext2 by mounting it with sudo.
# sudo is only used for testing.
mountpoint=mnt
mkdir -p "$mountpoint"
sudo mount "$img_file" "$mountpoint"
sudo ls -l "$mountpoint"
sudo cmp "${mountpoint}/qwer" "${root_dir}/qwer"
sudo umount "$mountpoint"
GitHub আপস্ট্রিম ।
কী বিকল্প -d
, যা চিত্রের জন্য কোন ডিরেক্টরি ব্যবহার করে তা নির্বাচন করে, এবং এটি v1.43 এর মধ্যে তুলনামূলকভাবে নতুন সংযোজন 0d4deba22e2aa95ad958b44972dc933fd0ebbc59
তাই এটি বক্সের বাইরে উবুন্টু 18.04 এ কাজ করে, যার e2fsprogs 1.44.1-1 আছে, কিন্তু উবুন্টু 16.04 নয়, যা 1.4২.13।
যাইহোক, আমরা Buildroot এর মতই এবং উবুন্টু 16.04 এ সহজেই উৎস থেকে এটি কম্পাইল করতে পারি:
git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
cd e2fsprogs
git checkout v1.44.4
./configure
make -j`nproc`
./misc/mke2fs -h
যদি mke2fs
সঙ্গে ব্যর্থ হয়:
__populate_fs: Operation not supported while setting xattrs for "qwer"
mke2fs: Operation not supported while populating file system
যখন বিকল্প যোগ করুন:
-E no_copy_xattrs
উদাহরণস্বরূপ এটি যখন রুট ডিরেক্টরি NFS বা হয় tmpfs
পরিবর্তে ফাইল সিস্টেম হিসাবে এক্সএক্সএক্স প্রসারিত বৈশিষ্ট্য আছে বলে মনে হচ্ছে না ।
mke2fs
প্রায়ই symlinked হয় mkfs.extX
, এবং man mke2fs
বলে যে যদি আপনি যেমন symlink সঙ্গে কল ব্যবহার করুন -t
বোঝানো হয়।
কিভাবে আমি এটি খুঁজে বের করেছি এবং ভবিষ্যতে কোন সমস্যা সমাধান করব? Buildroot sudo ছাড়া ext2 ইমেজ জেনারেটর এখানে দেখানো হিসাবে , তাই আমি শুধু সঙ্গে বিল্ড দৌড়ে V=1
এবং ইমেজ প্রজন্মের অংশ থেকে কমান্ড বের করে যা শেষ পর্যন্ত শেষ হয়। ভাল পুরাতন কপি পেস্ট আমাকে ব্যর্থ হয়েছে।
TODO: নিম্নলিখিত সমস্যার সমাধান কিভাবে বর্ণনা করে:
- ইমেজ sudo মালিকানাধীন ফাইল তৈরি করুন। Buildroot এটা করে।
- স্বয়ংক্রিয়ভাবে প্রয়োজনীয় প্রয়োজনীয় আকার গণনা। সঙ্গে প্রাথমিক অনুমান
du
ফাইলের আকার জন্য এবং find . | wc
ডিরেক্টরি গঠন জন্য, মিনিম যে 32 এমবি (ছোট ব্যর্থ হয়), কমান্ড কাজ না হওয়া পর্যন্ত দ্বিগুণ, সম্ভবত একটি খুব শালীন পদ্ধতির। Buildroot এটি করতে ব্যবহৃত, কিন্তু কিছু কারণে বন্ধ, কিন্তু নিজেদের বাস্তবায়ন সহজ।
- সহজে পার্টিশন থেকে সব ফাইল নিষ্কাশন:
এক ইমেজ ফাইল একাধিক পার্টিশন
এটা দেখ: https://stackoverflow.com/questions/10949169/how-to-create-a-multi-partition-sd-image-without-root-privileges/52850819#52850819