คำถามติดแท็ก initramfs

"ระบบไฟล์ RAM เริ่มต้น" เป็นตัวต่อของ initrd เป็นระบบไฟล์รูทที่ฝังอยู่ในเคอร์เนลและโหลดในช่วงต้นของกระบวนการบูต

3
วิธีแก้ไขการบูตในพรอมต์ initramfs และ“ mount: ไม่สามารถอ่าน '/ etc / fstab': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว” และ“ ไม่พบ init”?
การติดตั้งระบบใหม่โดยใช้ดิสก์ที่แบ่งพาร์ติชันGPT สำหรับพาร์ติชันเดียว, รูปแบบext4 , extlinux (รุ่น 4.05) เป็น bootloader, Ubuntu Core version 13.10 amd64 เป็น rootfs และ Ubuntu linux-image-3.11.0-18-generic เป็นเคอร์เนล, และ extlinux-update เพื่อสร้างการกำหนดค่า bootloader ผลลัพธ์หลังจากรีบูตเครื่อง (ยังอยู่ในเครื่องเสมือนที่ใช้ KVM) คือพรอมต์ (initramfs) และข้อความเหล่านี้: mount: can't read '/etc/fstab': No such file or directory mount: mounting /dev on /root/dev failed: No such file or directory …

3
initramfs ใช้ / etc / fstab หรือไม่
วิธีที่ฉันเข้าใจมัน initramfs รับผิดชอบการโหลดระบบไฟล์รูท "ของจริง" ตอนนี้มีสองที่ที่เรานิยามรูตนั้น /etc/fstabครั้งแรกที่เรานำรายการใน root=/dev/sda1ประการที่สองเราวางอุปกรณ์บนเคอร์เนลบูตคำสั่งเช่น initramfs อันใดที่ใช้เพื่อพิจารณาว่าระบบไฟล์รูทอยู่ที่ไหน? ถ้ามันใช้พารามิเตอร์เคอร์เนลรากทำไมเรามีรายการใน/etc/fstab? ตัวเลือกที่สอง (อ่าน/etc/fstab) ค่อนข้างไร้เหตุผลเพราะ/etc/fstabไฟล์อยู่ในอุปกรณ์รูทมากที่ initramfs พยายามเมาท์ตั้งแต่แรก สิ่งที่สับสนมาก
20 boot  fstab  initramfs 

1
เมื่อใดที่คุณจะใช้ pivot_root บน switch_root
ฉันต้องการที่จะเข้าใจกระบวนการเริ่มต้นของ Linux ที่ดีขึ้นเพื่อที่จะ netboot ระบบผ่าน ceph มากกว่า nfs ในกระบวนการฉันเจอรูทวิทช์สองรูปแบบ หนึ่งเรียกว่า switch_root และอีกหนึ่งเรียกว่า pivot_root สคริปต์เหล่านี้ถูกเรียกใช้จากระบบไฟล์ในหน่วยความจำ (initramfs) ที่ได้รับผ่าน tftp โดยใช้กระบวนการบูต pxe เมื่อไหร่ที่คุณจะใช้อันอื่น ฉันเคยเห็นทั้งสองใช้ในสคริปต์ init บางส่วนอยู่ในรูท

6
ทำไมฉันต้องมี initramfs
ฉันพบว่าถ้าฉันเลือกjffsหรือsdเป็นระบบไฟล์ (และไม่initramfs) ขนาดเคอร์เนลจะเล็กมาก (1.4 MB เมื่อเทียบกับinitramfsที่ 3.4MB) หมายความว่าinitramfsต้องใช้พื้นที่มากพอสมควร ดังนั้นถ้าฉันสามารถฉันจะลบมันอย่างสมบูรณ์และจะมีเคอร์เนลขนาดเล็กมากซึ่งเป็นสิ่งที่ฉันต้องการ คำถามพื้นฐานที่ปรากฏในใจของฉันคือ: ทำไมฉันต้องinitramfs? เคอร์เนล Linux ไม่สามารถบูตได้หากไม่มีระบบไฟล์เริ่มต้นใช่ไหม แอปพลิเคชั่นสุดท้ายของฉันจะทำการคำนวณและสื่อสารเท่านั้น - ไม่มีพื้นที่เก็บข้อมูลเลย ดังนั้นระบบปฏิบัติการที่ไม่มีระบบไฟล์จึงเหมาะสม - อย่างน้อยสำหรับแอปพลิเคชันของฉัน

4
เมานต์ระบบไฟล์รูทจาก initramfs
มันเป็นสถานการณ์ทั่วไป ไม่ว่าจะด้วยเหตุผลใดก็ตาม initramfs (OpenSUSE ในกรณีที่มีความสำคัญ) ไม่สามารถค้นหาระบบไฟล์รูทได้ ฉันรู้ดีว่าอุปกรณ์ใดบ้างที่ต้องติดตั้ง คำถามของฉัน: ขั้นตอนที่ถูกต้องในการเมาท์ระบบไฟล์รูทคืออะไรและดำเนินการตามลำดับการบู๊ตต่อไป? สันนิษฐานว่าเป็นจุดรวมของคอนโซลกู้ภัย และถึงกระนั้นก็ไม่มีใครทำเอกสารว่าคุณทำสิ่งนี้จริง ๆ เห็นได้ชัดว่าฉันสามารถติดตั้งระบบไฟล์รูทได้ที่ไหนซักแห่ง แต่ฉันจะสร้างรากของทรีของระบบไฟล์ได้อย่างไร และตอนนี้ฉันจะทำขั้นตอนการบู๊ตปกติต่อไปหรือไม่? (ฉันคิดว่าเพียงแค่ออกจากเปลือกจะทำ ... แต่มันไม่ได้) สิ่งที่คุณต้องได้รับการติดตั้งก่อนที่คุณจะดำเนินการต่อและคุณจะทำอย่างไรต่อไป?

1
อะไรคือสิ่งที่เทียบเท่ากับ mkinitcpio.conf บนเดเบียน?
ฉันต้องการตรวจสอบว่า hooks ที่ใช้ในการสร้างinitrd.imgถูกต้องใน debian ของฉัน แต่ฉันล้มเหลวในการค้นหา/etc/mkinitcpio.confไฟล์เช่นเดียวกับใน Archlinux สิ่งที่เทียบเท่าของไฟล์นี้ใน debian และฉันจะสร้าง initrd.img อย่างไรเมื่อฉัน ' แก้ไขไฟล์แล้วเหรอ?
15 initramfs  initrd 

3
เคอร์เนลทั้งหมดถูกโหลดเข้าสู่หน่วยความจำขณะบูตหรือไม่
ฉันอ่านIBM doc ที่เป็นที่นิยม (ฉันเห็นว่ามีการอ้างอิงค่อนข้างบ่อยบนเว็บ) อธิบายการทำงานของดิสก์ RAM เริ่มต้น ฉันตีกำแพงในการกำหนดแนวคิดว่ามันทำงานอย่างไร ในเอกสารมันบอกว่า ตัวโหลดบูตเช่น GRUB ระบุเคอร์เนลที่จะโหลดและคัดลอกอิมเมจเคอร์เนลนี้และ initrd ที่เกี่ยวข้องใด ๆ ลงในหน่วยความจำ ฉันสับสนแล้ว: มันคัดลอกเคอร์เนลทั้งหมดไปยังหน่วยความจำหรือเพียงแค่ส่วนหนึ่งของมันได้หรือไม่ หากเคอร์เนลทั้งหมดอยู่ในหน่วยความจำแล้วทำไมเราถึงต้องใช้ RAM ดิสก์เริ่มต้นด้วยซ้ำ ฉันคิดว่าจุดประสงค์ของการเริ่มต้นเพื่อให้สามารถมีเคอร์เนลอิมเมจขนาดเล็กทั่วไปและ initrd จะติดตั้งโมดูลที่ถูกต้องก่อนที่จะโหลดอิมเมจเคอร์เนล แต่ถ้าเคอร์เนลทั้งหมดอยู่ในหน่วยความจำแล้วทำไมเราถึงต้องเริ่มต้น? นั่นยังทำให้เกิดสิ่งอื่นที่ทำให้ฉันสับสน - โมดูลที่โหลดลงในเคอร์เนลตั้งอยู่ที่ไหน โมดูลเคอร์เนลทั้งหมดถูกเก็บไว้ภายใน initrd หรือไม่?

3
ทำไม initramfs จึงเมาท์ระบบไฟล์รูทเป็นแบบอ่านอย่างเดียว
อะไรคือสาเหตุที่ระบบไฟล์รูทติดตั้งroใน initramfs (และใน initrd) ตัวอย่างเช่นคู่มือGentoo initramfsเมาท์ระบบไฟล์รูทด้วย: mount -o ro /dev/sda1 /mnt/root ทำไมไม่ต่อไปนี้ mount -o rw /dev/sda1 /mnt/root ฉันเห็นว่ามีเหตุผลที่ดี (และอาจเกี่ยวข้องกับswitchroot) แต่ดูเหมือนจะไม่ได้รับการบันทึกไว้ที่ใดเลย

3
เหตุใดจึงต้องใช้ cpio สำหรับ initramfs
ฉันทำ initramfs ของตัวเองต่อไปนี้วิกิพีเดีย Gentoo แทนที่จะเป็นที่คุ้นเคยtarและgzipหน้าจะบอกให้ผมใช้และcpio Wikipediaบอกว่ามันถูกใช้โดย initramfs ของเคอร์เนล 2.6 แต่ไม่ได้อธิบายว่าทำไมgzipcpio นี่เป็นเพียงการประชุมหรือcpioดีกว่าสำหรับผู้เริ่มต้นหรือไม่ ฉันยังสามารถใช้tarและได้gzipหรือไม่?

2
ความแตกต่างในการดำเนินการของ init กับแบบฝังตัวกับแบบเริ่มต้นภายนอก?
ฉันกำลังสร้างระบบลีนุกซ์ที่น้อยมากซึ่งเพิ่งประกอบไปด้วยเคอร์เนล (v4.1-rc5) และ initramfs ที่บรรจุด้วย busybox (v1.23.2) มันใช้งานได้ดีส่วนใหญ่ แต่ฉันสังเกตเห็นความแตกต่างในพฤติกรรมของการดำเนินการคำสั่งใน / init ไม่ว่าฉันจะใช้ initramfs ฝังตัวกับภายนอก สคริปต์ / init คือ: #!/bin/sh dmesg -n 1 mount -t devtmpfs none /dev mount -t sysfs none /sys mount -t proc none /proc echo "Welcome" while true do setsid cttyhack /bin/sh done จากนั้นฉันจะตั้งค่าตัวเลือก CONFIG_INITRAMFS_SOURCE ในเคอร์เนล. config …
10 linux  kernel  boot  initramfs 

1
ฉันจะบังคับให้เคอร์เนล Ubuntu ล้มเหลวในการติดตั้ง / และวางลงในเชลล์ช่วยเหลือ initramfs ได้อย่างไร
ฉันกำลังพยายามปรับแต่งสภาพแวดล้อมการช่วยเหลือของ initramfs และต้องการบังคับให้เคอร์เนลล้มเหลวในการติดตั้ง/และวางลงใน(initramfs)เชลล์กู้ภัยซึ่งตรงข้ามกับโหมดผู้ใช้คนเดียว ฉันจะทำสิ่งนั้นได้อย่างไร หมายเหตุ: ฉันรู้วิธีการขอinitramfs-toolsให้ทำตามขั้นตอนการปรับแต่ง แต่ฉันต้องสามารถตรวจสอบผลลัพธ์ได้

1
วิธีการรวบรวมอาร์เรย์ RAID ที่เจาะจงโดยไม่ใช้ /etc/mdadm.conf
เป็นไปได้หรือไม่ที่จะรวบรวมอาร์เรย์ RAID ที่เฉพาะเจาะจงโดยใช้mdadmและฟังก์ชันการสแกนของมัน แต่ไม่จำเป็นต้องใช้ไฟล์การกำหนดค่า พื้นหลัง: ฉันใช้ initramfs ที่กำหนดเองเพื่อตั้งค่าระบบของฉัน (dm-crypt และอื่น ๆ ) ทุกอย่างเสร็จสิ้นและกำหนดค่าภายในสคริปต์เริ่มต้นและนั่นคือวิธีที่ฉันต้องการเก็บไว้นั่นคือไม่มีไฟล์กำหนดค่าเพิ่มเติม เป้าหมายของฉัน: ภายในสคริปต์เริ่มต้นฉันต้องการรวบรวมอาร์เรย์ RAID หนึ่งชุดโดยใช้บรรทัดคำสั่งเท่านั้น อาเรย์จะถูกระบุผ่าน UUID ชื่ออุปกรณ์ md จะได้รับและสมาชิกอาเรย์ควรได้รับการสแกน (ตั้งแต่เช่นแท่ง USB ที่เชื่อมต่อหรืออุปกรณ์ที่ล้มเหลวจะทำให้ชื่อ / dev / sdX สับสน) อุปกรณ์อื่นและอาร์เรย์ RAID ที่มีศักยภาพทั้งหมดจะถูกละเว้นเนื่องจากในระหว่างการบูตจะมีเพียงหนึ่งอาร์เรย์ที่เป็นที่สนใจ (มีระบบไฟล์รูท) อ่าน man page ของ mdadm อย่างละเอียดและทำการทดสอบหลายครั้งฉันพบสิ่งนี้: mdadm --assemble --uuid <uuid> /dev/md0 ดูเหมือนว่าจะใช้งานได้ แต่เป็นวิธีที่ถูกต้องหรือไม่ จากหน้า man: หากมีการระบุอุปกรณ์หนึ่งรายการอย่างแม่นยำ …
9 raid  mdadm  initramfs 

7
การดำเนินการไฮเบอร์เนตต่อล้มเหลวบนเคอร์เนล linux 4.9.0, Debian 9
ฉันเพิ่งอัพเกรดเคอร์เนลจาก 3.16.4 (Debian jessie) เป็น 4.9.0 (ยืด Debian) ทุกอย่างเรียบร้อยจนกระทั่งฉันพยายาม "ไฮเบอร์เนต" (พักดิสก์) เมื่อฉันใช้ตัวเลือกไฮเบอร์เนตใน LXDE มันจะปรากฏขึ้นเพื่อไฮเบอร์เนต ฉันได้ยินเสียงการหมุนแกนของดิสก์และการเขียนข้อมูล แต่ปัญหาจะปรากฏขึ้นเมื่อกลับมาทำงานจากโหมดไฮเบอร์เนต เคอร์เนลกู้คืนรูปภาพจากการสลับสำเร็จแล้วจากนั้นหยุดการทำงานและรีบูตโดยที่การทำงานทั้งหมดหายไป ฉันไม่สามารถหาคำตอบได้ทุกที่บนอินเทอร์เน็ต ผู้คนกำลังแก้ไขข้อผิดพลาดบางอย่างโดยไม่ตั้งค่า /etc/initramfs-tools/conf.d/resume หรือตั้งค่าพารามิเตอร์ของเคอร์เนลหรือมีรายการผิดใน / etc / fstab ฉันมีสิ่งเหล่านี้ถูกต้อง แก้ไข UUID ใน /etc/initramfs-tools/conf.d/resume แก้ไข fstab และไม่ได้ตั้งค่าตัวตรวจสอบเคอร์เนลต่อ ฉันย้ายพาร์ทิชัน swap นอกพาร์ทิชันเสริมเป็นหลัก UUID ได้รับการบันทึกและนำไปใช้กับการแลกเปลี่ยนใหม่ ระบบเข้าถึง "กู้คืนรูปภาพ 100%" จากนั้น "ระงับคอนโซล" จากนั้นจะปิดและบู๊ตตามปกติโดยที่งานทั้งหมดหายไป พยายามทำความสะอาดติดตั้ง แต่ไม่มีโชค เกิดขึ้นเฉพาะใน i386 (32- บิต …

3
GRUB สร้างความสับสนให้กับเมล็ด / initramfs ของการติดตั้ง Ubuntu และ Arch Linux
ฉันมีเครื่องที่เคยใช้ดูอัลบูท Ubuntu (16.04 ปัจจุบัน) และ Windows 7 โดยมี GRUB ของ Ubuntu เป็นบูตโหลดเดอร์ ตอนนี้ฉันเพิ่งเพิ่ม Arch Linux เป็นระบบปฏิบัติการตัวที่สามตามคำแนะนำการติดตั้งอย่างเป็นทางการ ฉันไม่ได้ติดตั้ง GRUB จาก Arch เพราะฉันต้องการใช้ตัวควบคุมโดย Ubuntu คำแนะนำมีคำสั่งmkinitcpio -p linuxที่อาจสร้างไฟล์บูตบางอย่างที่ฉันวิ่งตามที่อธิบายไว้ ตอนนี้เมื่อฉันพยายามบูต Ubuntu จาก GRUB ผ่านรายการเริ่มต้นฉันได้รับข้อผิดพลาดอันไม่พึงประสงค์ (ขออภัยสำหรับภาพหน้าจอ): ในฐานะที่เป็นเอาท์พุทของการuname -aแสดงมันพยายามที่จะบูต Arch kernel แต่/dev/sda6เป็นพาร์ทิชันรูท Ubuntu ฉันต้องไปที่Advanced options for Ubuntuและเลือกหนึ่งในUbuntu, with Linux 4.4.0-*รายการเพื่อให้สามารถโหลด Ubuntu ฉันไม่พบรายการที่จะโหลด Arch อย่างถูกต้อง การเรียกใช้sudo update-grubจาก …

2
แยก initramfs ในตัว
ฉันมีเคอร์เนลที่ฝังหนึ่ง initramfs ฉันต้องการแยกมัน ฉันได้ผลลัพธ์x86 boot sectorเมื่อฉันทำfile bzImage ฉันมีไฟล์ System.map สำหรับเคอร์เนลอิมเมจนี้ มีวิธีใดที่จะดึงอิมเมจ initramfs ที่ฝังอยู่ในเคอร์เนลนี้โดยใช้หรือไม่ใช้ไฟล์System.map ? สตริงที่น่าสนใจที่พบในไฟล์System mapคือ: (ในกรณีที่มันช่วย) 57312:c17fd8cc T __initramfs_start 57316:c19d7b90 T __initramfs_size

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.