बूट करने योग्य USB बनाने के लिए स्क्रिप्ट


1

मैं एम्बेडेड सिस्टम के लिए बूट करने योग्य USB डिस्क बनाने के लिए Ubuntu 14.04.5 LTS पर निम्नलिखित बैश स्क्रिप्ट का उपयोग कर रहा हूं, जिसमें काम किया गया है:

# Partition disk.
/usr/bin/sudo /bin/umount /dev/sdc1 /dev/sdc2
/usr/bin/sudo /sbin/parted -s -- /dev/sdc mklabel msdos
/usr/bin/sudo /sbin/parted -s -- /dev/sdc mkpart primary 2048s 5244928s
/usr/bin/sudo /sbin/parted -s -- /dev/sdc set 1 boot on
/usr/bin/sudo /sbin/parted -s -- /dev/sdc mkpart primary 5246976s -977920s
/usr/bin/sudo /sbin/parted -s -- /dev/sdc quit
/usr/bin/sudo /sbin/partprobe /dev/sdc
/usr/bin/sudo /bin/umount /dev/sdc1 /dev/sdc2
/usr/bin/sudo /sbin/mkfs.ext4 -L rootfs /dev/sdc1
/usr/bin/sudo /sbin/mkfs.ext4 -L var /dev/sdc2
/usr/bin/sudo /sbin/partprobe /dev/sdc
/bin/sync

# Copy filesystem.
/usr/bin/udisksctl mount -b /dev/sdc1
/usr/bin/sudo /bin/cp -a ${ROOTFS_DIR}/. ${ROOTFS_MOUNTPOINT}
/usr/bin/udisksctl mount -b /dev/sdc2
/usr/bin/sudo /bin/cp -a ${VAR_DIR}/. ${VAR_MOUNTPOINT}
/bin/sync

# Upload bootloader.
/usr/bin/udisksctl mount -b /dev/sdc1
/usr/bin/sudo /usr/sbin/grub-install --no-floppy --directory=${ROOTFS_MOUNTPOINT}/usr/lib/grub/i386-pc --locale-directory=${ROOTFS_MOUNTPOINT}/usr/share/locale --boot-directory=${ROOTFS_MOUNTPOINT}/boot /dev/sdc
/bin/sync
/usr/bin/sudo /usr/bin/eject /dev/sdc

fdiskउत्पन्न USB डिस्क के लिए आउटपुट है:

Disk /dev/sdc: 14.9 GiB, 16022241280 bytes, 31293440 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x22953b4d

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sdc1  *       2048  5244928  5242881  2.5G 83 Linux
/dev/sdc2       5246976 30315520 25068545   12G 83 Linux

हाल ही में, मैंने उबंटू 18.04 पर स्विच किया, लेकिन अब, grubलिनक्स कर्नेल और इनट्राम्राम्स को लोड करता है, हालांकि बाद में बूटिंग निम्न आउटपुट के साथ विफल हो जाती है, और यह आपातकालीन शेल में गिर जाता है:

mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
missing codepage or helper program, or other error

आपातकालीन खोल में, blkidआदेश विभाजन के रूप में उम्मीद है, जिसमें UUIDs मिलान दिखाता है /boot/grub/grub.cfgऔर /etc/fstab:

/dev/sdb1: LABEL="rootfs" UUID="5556accb-3244-47d0-8042-aaad74dd3950" TYPE="ext4" PARTUUID="22953b4d-01"
/dev/sdb2: LABEL="var" UUID="6ee3b764-77dB-481d-9564-fbfabb590933" TYPE="ext4" PARTUUID="22953b4d-02"

चूँकि मैंने उबंटू 18.04 में पहले से ही कुछ अन्य समस्याओं का अनुभव किया है, जैसे कि अलग-अलग व्यवहार losetup, के लिए अलग-अलग आउटपुट स्वरूप fdisk, आदि। क्या मुझे स्क्रिप्ट में mkfs.ext4या grub-installकमांड के लिए और कमांड विकल्प प्रदान करने चाहिए ? grub-installकमांड संस्करण के साथ उबंटू से है 2.02-2ubuntu8.13, लेकिन इसके विकल्प एम्बेडेड फाइल सिस्टम से निर्देशिकाओं का उपयोग करते हैं जिसमें ग्रब है 2.02.beta2-4, इसलिए, क्या इसके कारण कुछ विसंगतियां हो सकती हैं?

जवाबों:


0

यह पता चला mkfs.ext4कि यह कारण था, क्योंकि उबंटू mountसिस्टम पर एर की तुलना में उबंटू 18.04 पर कमांड नया है, जिससे बूट के दौरान निम्न त्रुटि होती है:

EXT4-fs (mmcblk1p2): couldn't mount RDWR because of unsupported optional features (400)

इस थ्रेड और इस जानकारी के आधार पर , मैंने metadata_csumफाइलसिस्टम बनाते समय निम्नलिखित विकल्प के साथ फीचर को अक्षम कर दिया , और सिस्टम सामान्य रूप से बूट हो गया:

/usr/bin/sudo /sbin/mkfs.ext4 -O ^metadata_csum -L 'rootfs' /dev/sdc1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.