ramdisk เริ่มต้น (initrd) โดยปกติจะเป็นปล้นลงรุ่นของระบบแฟ้มรากที่มีเพียงสิ่งที่จำเป็นในการติดตั้งระบบแฟ้มรากเกิดขึ้นจริงและปิดมือบูตกับมัน
มี initrd อยู่ในระบบที่ทันสมัยบูตเดอร์ไม่สามารถฉลาดพอที่จะหาระบบไฟล์รูทได้อย่างน่าเชื่อถือ มีความเป็นไปได้มากเกินไปสำหรับโปรแกรมขนาดเล็กเช่นบูตโหลดเดอร์ พิจารณารูทของ NFS, การ์ด RAID ที่ไม่เป็นมาตรฐานและอื่น ๆ บูตโหลดเดอร์จะต้องทำงานโดยใช้เฉพาะไบออสรวมถึงรหัสที่สามารถอัดเข้าไปในบูตเซกเตอร์ได้
ตัวเริ่มต้นจะถูกเก็บไว้ที่ไหนสักแห่งที่บูตโหลดเดอร์สามารถหาได้และมันก็เล็กพอที่จะเพิ่มพื้นที่ว่างเล็กน้อยที่มันไม่ได้รบกวนใคร (ในระบบฝังตัวขนาดเล็กมักจะไม่มีรูท "ของจริง" เพียงแค่ initrd)
initrd นั้นมีค่า: เนื้อหานั้นจะต้องได้รับการเก็บรักษาไว้ภายใต้เงื่อนไขทั้งหมดเพราะถ้า initrd แตกระบบจะไม่สามารถบู๊ต ทางเลือกหนึ่งในการออกแบบที่นักออกแบบสร้างขึ้นเพื่อให้แน่ใจว่านี่คือการทำให้บูตโหลดเดอร์โหลดแบบอ่านได้อย่างเดียว มีหลักการอื่น ๆ ที่มีต่อการทำงานนี้มากเกินไปเช่นว่าในกรณีของระบบขนาดเล็กที่ไม่มี "ของจริง" รากคุณยังคงติดแยกต่างหาก/tmp
, /var/cache
และเช่นสำหรับการจัดเก็บสิ่งที่ การเปลี่ยน initrd นั้นทำได้ไม่บ่อยนักและควรทำอย่างระมัดระวัง
เดินทางกลับไปกรณีปกติที่มีเป็นระบบแฟ้มรากที่แท้จริงมันเป็นครั้งแรกแบบอ่านอย่างเดียวเพราะ initrd เป็น มันจะถูกเก็บไว้เป็นแบบอ่านอย่างเดียวนานเท่าที่จะทำได้ด้วยเหตุผลเดียวกัน การเขียนไปยังรูทจริงที่ต้องทำใด ๆ จะถูกนำออกจนกว่าระบบจะบูตโดยการตั้งค่าหรืออย่างน้อยก็จนกว่าจะถึงช่วงปลายกระบวนการบู๊ตเมื่อการตั้งค่านั้นไม่พอใจ
สิ่งที่สำคัญที่สุดที่เกิดขึ้นระหว่างขั้นตอนการอ่านอย่างเดียวคือระบบไฟล์รูทจะถูกตรวจสอบเพื่อดูว่ามันถูกถอดออกแล้วหรือไม่ นั่นเป็นสิ่งที่บูตโหลดเดอร์สามารถทำได้แทนที่จะปล่อยให้มันเป็น initrd แต่จะเกิดอะไรขึ้นถ้าระบบไฟล์รูทไม่ได้ถูกถอดออกอย่างหมดจด? จากนั้นจะต้องโทรfsck
เพื่อตรวจสอบและอาจแก้ไขได้ ดังนั้นจะinitrd
ได้ที่ไหนfsck
ถ้ารับผิดชอบขั้นตอนนี้แทนที่จะรอจนกว่าจะส่งไปที่รูท "ของจริง" คุณอาจจะบอกว่าคุณต้องคัดลอกfsck
ลงในinitrd
เมื่อมีการสร้างมัน แต่ตอนนี้มันมีขนาดใหญ่ และด้านบนของที่ซึ่ง fsck
คุณจะคัดลอก? ระบบ Linux ใช้ระบบไฟล์ที่แตกต่างกันอย่างสม่ำเสมอ คุณคัดลอกเฉพาะที่จำเป็นสำหรับรูทจริงในเวลาที่initrd
ถูกสร้างขึ้น? คุณขยายขนาดinitrd
ด้วยการคัดลอกfsck.foo
โปรแกรมที่มีอยู่ทั้งหมดหรือไม่ในกรณีที่ระบบไฟล์รูทถูกย้ายไปยังระบบไฟล์ประเภทอื่นในภายหลังและบางคนลืมที่จะสร้าง initrd ใหม่?
สถาปนิกระบบบูต Linux เลือกที่จะไม่สร้างภาระให้กับปัญหาเหล่านี้อย่างชาญฉลาด พวกเขามอบหมายการตรวจสอบระบบไฟล์รูทจริงให้กับระบบไฟล์รูทจริงเนื่องจากอยู่ในตำแหน่งที่ดีกว่าการทำเช่นนั้น
เมื่อกระบวนการบู๊ตดำเนินไปไกลพอที่จะทำเช่นนั้นได้แล้ว initrd จะถูกสับเปลี่ยนจากภายใต้รูทจริงด้วยpivot_root(8)
และระบบไฟล์จะถูกประกอบใหม่ในโหมดอ่าน - เขียน