Бастапқы рамдиск - Initial ramdisk - Wikipedia

Есептеу техникасында (атап айтқанда) Linux есептеу), initrd (бастапқы рамдиск ) бұл уақытша түбірді жүктеу схемасы файлдық жүйе ішіне жады бөлігі ретінде қолданылуы мүмкін Linux іске қосу процесі. initrd және initramfs бұған қол жеткізудің екі түрлі әдісін қараңыз. Екеуі де әдеттегіден бұрын дайындық жасау үшін қолданылады тамыр файлдық жүйе болуы мүмкін орнатылған.

Негіздеме

Көптеген Linux таратылымдары жалғыз, жалпыға ортақ Linux ядросы сурет - дистрибьюторды әр түрлі жабдықта жүктеу үшін арнайы жасайтын сурет. The құрылғы драйверлері бұл үшін жалпы ядро ​​кескіні ретінде енгізілген жүктелетін ядро ​​модульдері өйткені көптеген драйверлерді бір ядроға статикалық түрде жинау ядро ​​кескінін әлдеқайда үлкен етеді, мүмкін жады шектеулі компьютерлерде жүктеу үшін тым үлкен. Бұл жүктеу кезінде түбірлік файлдық жүйені орнатуға қажетті модульдерді табу және жүктеу мәселесін туғызады немесе бұл үшін түбірлік файлдық жүйенің қай жерде не екенін анықтайды.[1]

Мәселелерді одан әрі қиындату үшін root файлдық жүйесі бағдарламалық жасақтамада болуы мүмкін RAID көлем, LVM, NFS (дискісіз жұмыс станцияларында) немесе шифрланған бөлімде. Мұның бәрі монтаждау үшін арнайы дайындықты қажет етеді.[2]

Тағы бір қиындық - бұл ядроны қолдау күту, жадының барлық мазмұнының кескінін а-ға тастау арқылы компьютерді дискіге тоқтатады ауыстыру бөлімі немесе кәдімгі файлды өшіріп тастаңыз. Келесі жүктеу кезінде бұл кескінді жадқа қайта жүктеу үшін оны қол жетімді ету керек.

Ядроларда көптеген ерекше жағдайларды өңдеуді қатаң кодтауды болдырмау үшін уақытша түбірлік файлдық жүйемен бастапқы жүктеу кезеңі - қазір дубляждалған ерте пайдаланушы кеңістігі - қолданылады. Бұл түбірлік файлдық жүйеде аппараттық құралдарды анықтайтын, модульді жүктейтін және құрылғының ашылуын жүзеге асыратын пайдаланушы кеңістігінің анықтаушылары болуы мүмкін, бұл түпнұсқа файлдық жүйені орнатуға мүмкіндік береді.[2]

Іске асыру

Бұл бастапқы файлдық жүйенің кескіні (ядро кескінімен бірге) Linux қол жетімді жерде сақталуы керек жүктеуші немесе компьютердің жүктелетін микробағдарламасы. Бұл түбірлік файлдық жүйенің өзі болуы мүмкін, а жүктеу кескіні бойынша оптикалық диск, жергілікті дискідегі шағын бөлім (a жүктеу бөлімі, әдетте пайдалану ext2 немесе FAT файлдық жүйелер), немесе а TFTP сервер (жүктей алатын жүйелерде Ethernet ).

Жүктеуші ядро ​​мен бастапқы түбірлік файлдық жүйенің кескінін жадқа жүктейді, содан кейін суреттің жад адресін жіберіп, ядроны іске қосады. Жүктеу кезегінің соңында ядро ​​алғашқы бірнеше блоктар кескінінің пішімін анықтауға тырысады, бұл initrd немесе initramfs схемасына әкелуі мүмкін.

Ішінде initrd схемасы, кескін арнайы түрде қол жетімді болатын файлдық жүйе кескіні болуы мүмкін (қалауы бойынша қысылған) блокты құрылғы (/ dev / ram) содан кейін бастапқы түбірлік файл жүйесі ретінде орнатылады.[3] Бұл файлдық жүйенің драйвері ядроға статикалық түрде жинақталуы керек. Көптеген дистрибутивтер бастапқыда қысылған түрде қолданылған ext2 файлдық жүйенің кескіндері, ал басқалары (соның ішінде Дебиан 3.1) қолданылған құрсақ жады шектеулі жүйелерде жүктеу үшін, өйткені карфрам кескінін декомпрессияға қосымша орын қажет етпей-ақ орнында орнатуға болады. Бастапқы түбірлік файлдық жүйе құрылғаннан кейін ядро ​​орындалады / linuxrc оның алғашқы процесі ретінде;[4] ол шыққан кезде ядро ​​нақты түбірлік файлдық жүйе орнатылған деп санайды және орындайды / sbin / init қалыпты пайдаланушы кеңістігін жүктеу процесін бастау үшін.[3]

Ішінде initramfs схемасы (Linux ядро ​​2.6.13 бастап қол жетімді), кескін a болуы мүмкін cpio мұрағат (қалауы бойынша қысылған). Мұрағат ядро ​​арқылы а-ның арнайы данасына шығарылады tmpfs бұл бастапқы түбірлік файлдық жүйеге айналады. Бұл схеманың артықшылығы аралық файлдық жүйені немесе ядроға жинақталған драйверлерді блоктауды қажет етпейді.[5] Кейбір жүйелер дракут жасау үшін пакет initramfs сурет.[6] Initramfs схемасында ядро ​​орындайды /ішінде оның аяқталуы күтілмеген алғашқы процесі ретінде.[5] Кейбір қосымшалар үшін инитрамфалар каспер пайдалана отырып жазылатын ортаны құруға арналған утилита кәсіподақтар қабаттасу а табандылық қабаты тек оқуға арналған түбірлік файл жүйесінің кескіні арқылы. Мысалы, қосымша деректерді a-да сақтауға болады USB флэш-жады, сығылған кезде SquashFS тек оқуға арналған кескін тірі CD түбірлік файлдық жүйе ретінде жұмыс істейді.[7][8]

Оған қандай алгоритмдер статикалық түрде құрастырылғанына байланысты ядро ​​initrd / initramfs кескіндерін қысып алады gzip, bzip2, LZMA, XZ, LZO, және LZ4.[9]

Тауға дайындық

Сияқты кейбір Linux таратылымдары Дебиан сияқты кейбір белгілі бір компьютерді жүктеу үшін қажеттінің бәрін қамтитын бейімделген алғашқы сурет жасайды АТА, SCSI және файлдық жүйе ядро модульдері. Әдетте олар түбірлік файлдық жүйенің орны мен түрін ендіреді.

Басқа Linux дистрибутивтері (мысалы Федора және Ubuntu ) неғұрлым жалпылама бейнені жасау. Олар тек түбірлік файлдық жүйенің құрылғы атауынан басталады (немесе оның) UUID ) және жүктеу кезінде қалған барлық нәрсені табуы керек. Бұл жағдайда бағдарламалық жасақтама түбірлік файлдық жүйені орнату үшін күрделі каскадты тапсырмаларды орындауы керек:

  • Жүктеу процесі тәуелді болатын кез-келген аппараттық драйверлер жүктелуі керек. Жалпы келісім - жалпы сақтау құрылғыларына арналған ядро ​​модульдерін initrd-ге орап, содан кейін a шақыру ыстық розетка компьютер анықталған жабдыққа сәйкес келетін модульдерді тартуға арналған агент.
  • Жүктеуді көрсететін жүйелерде экрандағы экран, бейне жабдықты инициализациялау керек және пайдаланушы кеңістігінің көмекшісі жүктеу процесінде дисплейге анимацияларды бояуды бастайды.
  • Егер түбірлік файлдық жүйе NFS-те болса, онда ол біріншілікті шақыруы керек желілік интерфейс, шақыру DHCP DHCP лизингін ала алатын клиент, NFS үлесінің атауын және NFS серверінің мекен-жайын лизингтен шығарып, NFS үлесін орната алады.
  • Егер түбірлік файлдық жүйе RAID бағдарламалық жасақтамасында болса, RAID көлемі қандай құрылғыларда болатынын білуге ​​мүмкіндік жоқ; стандарт MD утилиталары барлық қол жетімді блоктық құрылғыларды сканерлеп, қажеттілерін желіге қосу үшін шақыру керек.
  • Егер түбірлік файл жүйесі a-да пайда болса логикалық көлем, LVM утилиталарын іздеу және іске қосу үшін шақыру керек көлем тобы оны қамтиды.
  • Егер түбірлік файл жүйесі шифрланған блоктық құрылғыда болса, бағдарламалық жасақтама пайдаланушыға парольді теруге және / немесе аппараттық токенді (мысалы, смарт-карта немесе USB қауіпсіздігі донгл ), содан кейін шифрды шешу мақсатын құрыңыз құрылғы картасы.

Кейбір таратылымдарда оқиғаға негізделген сияқты ыстық тығынның агенті удев, бұл қосалқы бағдарламаларды шақырады, өйткені белгілі бір ережелерге сәйкес келетін аппараттық құрылғылар, дискілік бөлімдер және сақтау көлемі. Бұл ашылуды параллель жүргізуге және түбірлік файлдық жүйеге көшу үшін LVM, RAID немесе шифрлаудың ерікті ұяларына біртіндеп өтуге мүмкіндік береді.

Түбірлік файлдық жүйе көрінетін кезде, орнатылған түбірлік файлдық жүйеде жұмыс істей алмайтын кез-келген техникалық тапсырмалар орындалады, түбірлік файлдық жүйе тек оқуға орнатылады және жұмысын жалғастыруы керек кез-келген процестер (мысалы, экранның көмекшісі және команда ФИФО ) жаңадан орнатылған түбірлік файлдық жүйеге қосылады.

Соңғы түбірлік файл жүйесін жай ғана орнату мүмкін емес /, өйткені бұл бастапқы түбірлік файл жүйесіндегі сценарийлер мен құралдарды кез келген соңғы тазалауға қол жетімсіз етеді:

  • Алғашқы уақытта жаңа тамыр уақытша бекіту нүктесінде орнатылады және бірге орнына бұрылады pivot_root (8) (осы мақсат үшін арнайы енгізілген). Бұл бастапқы түбірлік файлды бекіту нүктесінде қалдырады (мысалы / initrd) егер бұл кезде бастапқы жүктеу сценарийлері өшірілсе, жадты босату үшін initrd.
  • Initramfs-та бастапқы түбірлік файл жүйесін бұруға болмайды.[10] Оның орнына, ол жай ғана босатылады және түпкі файлдық жүйе жоғарғы жағына орнатылады.

Бастапқы түбірлік файлдық жүйелердің көпшілігі жүзеге асырады / linuxrc немесе /ішінде қабықша сценарийі ретінде және осылайша минималды қабықты қосады (әдетте / bin / ash ) кейбір маңызды пайдаланушы кеңістігімен бірге (әдетте BusyBox құралдар жиынтығы). Кеңістікті әрі қарай үнемдеу үшін қабық, утилиталар және оларды қолдайтын кітапханалар кеңістікті оңтайландырумен қосылады (мысалы: gcc «-Os» жалаушасы) және қарсы байланысқан klibc, минималды нұсқасы C кітапханасы осы мақсат үшін арнайы жазылған.[11]

Басқа мақсаттар

Linux дистрибутивтеріне арналған қондырғылар әдетте initramfs-тен жұмыс істейді, өйткені олар тұрақты жад орнатылмай тұрып, орнатушы интерфейсін және қолдау құралдарын орналастыруы керек.

Tiny Core Linux[12] және Linux күшігі[13][тексеру сәтсіз аяқталды ] толығымен initrd-ден жұмыс істей алады.

Басқа операциялық жүйелердегі ұқсастықтар

Windows Vista бастап,[14] Windows жүктеу а WIM файл пішімі ресми жарияланған дискінің кескін файлы;[15] ол ZIP форматына өте ұқсас, тек қатты сілтемелерді қолдайды, бөліп-бөліп қысуды қолданады және қайталанатын бөліктерді қолдайды. Бұл жағдайда алдымен бүкіл WIM жедел жадқа жүктеледі, содан кейін ядро ​​инициализациясы болады. Одан кейін, жүктелген WIM тағайындалған диск әрпімен SystemRoot ретінде қол жетімді. Windows инсталляторы оны BOOT.WIM-ден жүктеу үшін пайдаланады, содан кейін орнатылатын Windows файлдарының жинағы ретінде INSTALL.WIM пайдаланады.

Сондай-ақ, Windows алдын ала орнату ортасы (Windows PE) кейбір антивирустық және резервтік / апаттық жағдайларды қалпына келтіру бағдарламалық жасақтамасының бөлек жүктелу нұсқалары үшін негіз бола отырып, бірдей қолданады.

Сондай-ақ Windows-ты әрқашан физикалық дискіге орналастырылған WIM немесе VHD файлынан жүктейтін етіп орнатуға болады. Алайда, бұл өте сирек қолданылады, өйткені Windows жүктеушісі .sys файлдарын жүктеу уақытының ядролық модульдеріне жүктеуге қабілетті, бұл Linux жүйесінде initrd қажет.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ Альмесбергер, Вернер (2000), «Жүктеу Linux: тарихы мен болашағы», Оттава Linux симпозиумының материалдары, мұрағатталған түпнұсқа 24 шілде 2008 ж
  2. ^ а б Лэндли, Роб (2005 ж. 15 наурыз), ЖЖҚ дискілерінің жаңа моделі initramfs-пен таныстыру
  3. ^ а б Альмесбергер, Вернер; Лермен, Ханс (2000). «Бастапқы RAM дискіні пайдалану (initrd)». Архивтелген түпнұсқа 2015 жылғы 2 сәуірде. Алынған 14 наурыз 2015.
  4. ^ «linux / do_mount_initrd.c at 4f671fe2f9523a1ea206f63fe60a7c7b3a56d5c7 · torvalds / linux · GitHub». GitHub.
  5. ^ а б Landley, Rob (17 қазан 2005). «ramfs, rootfs және initramfs Docs, 2 алыңыз». Linux ядросының бастапқы ағашы.
  6. ^ Питерсен, Ричард Леланд (2010). Fedora 13: Әкімшілік, желі, қауіпсіздік. Аламеда, Калифорния: серфингтік тасбақа баспасы. б. 76. ISBN  978-1-936280-02-5. Dracut оперативті жадыдағы файлдық жүйені жылдам күйге келтіру үшін GRUB ядросының командалық жолында тізімделген ядролық параметрлерді қолданады, бұл икемділікті қамтамасыз етеді және жедел жадының жүйелік кодын азайтады.
  7. ^ «Ubuntu Manpage: casper - initramfs құралдарын тірі жүйелерді жүктеуге арналған ілмек». manpages.ubuntu.com.
  8. ^ Шон Пауэрс. «Каспер, мейірімді (және табанды) елес». Linux журналы. 2012 жыл.
  9. ^ Кюнгсик Ли (30 мамыр 2013). «LZ4 қысу және жүктеу уақытын жақсарту» (PDF). events.linuxfoundation.org. б. 18. Алынған 29 мамыр 2015.
  10. ^ Fish, Richard (6 шілде 2005). «pivit_root initramfs-та ағашта дөңгелек сілтеме тудырады». Linux Kernel Bug Tracker. Алынған 28 ақпан 2009.
  11. ^ Гарзик, Джефф (2002 ж. 2 қараша). «initramfs біріктіру, N 1 бөлімі». Linux ядросының тарату тізімі.
  12. ^ «Tiny Core Linux - тұжырымдамалар». ibiblio.org.
  13. ^ Барри Каулер. «Күшік Linux туралы хабарлама». ibiblio.org.
  14. ^ «Windows кескін файлының пішімі (WIM)». microsoft.com. Microsoft.
  15. ^ «Windows кескін файлының форматын (WIM) Microsoft-тың ресми жүктеу орталығынан жүктеп алыңыз». Microsoft.com. Microsoft.

Сыртқы сілтемелер