็†ฑ้–€ๅˆ†้กž
 ่ผ‰ๅ…ฅไธญ…
็›ฎ้Œ„

๐Ÿง Linux ้–‹ๆฉŸๆต็จ‹ๅฎŒๆ•ด่งฃๆž:BIOS / UEFI、GRUB、Kernel、initramfs ๅˆฐ systemd ็š„ๅ…จ็”Ÿๅ‘ฝ้€ฑๆœŸ

    ๐Ÿง Linux ้–‹ๆฉŸๆต็จ‹ๅฎŒๆ•ด่งฃๆž

    ๅคšๆ•ธไบบๅญธ Linux,ๆ˜ฏๅพž「systemctl restart ่ƒฝ็”จๅฐฑๅฅฝ」้–‹ๅง‹็š„。 ไฝ†็•ถไฝ ็œŸ็š„้‡ๅˆฐ้€™ไบ›็‹€ๆณๆ™‚:

    • ๆฉŸๅ™จ้–‹ๆฉŸๅกไฝ,็œ‹ไธๅˆฐ้Œฏ่ชค
    • ๆœๅ‹™ๅถ็ˆพ่ตทไธไพ†,ไฝ†้‡้–‹ๅˆๅฅฝไบ†
    • ้‡้–‹ๆฉŸ่ฆ็ญ‰ๅๅนพๅˆ†้˜
    • ๆœ€ๅพŒๅช่ƒฝ้ ๅฟซ็…งๆˆ–ๅ‚™ไปฝๆ•‘ๅ›ž

    ๅ…ถๅฏฆๅ•้กŒๅธธๅธธไธๅœจ「ๆŸไธ€ๅ€‹ๆŒ‡ไปค」,่€Œๆ˜ฏๅœจ「้–‹ๆฉŸๆต็จ‹็š„ๅ“ชไธ€ๆฎตๅกไฝ」。 ๅช่ฆไฝ ๆŠŠๆ•ดๆข็”Ÿๅ‘ฝ้€ฑๆœŸไธฒ่ตทไพ†,้™ค้Œฏๆœƒ่ฎŠๅพ—้žๅธธๆœ‰ๆ–นๅ‘。


    ๐Ÿ”Œ ไธ€、้›ปๆบไธ€ๆŒ‰ไธ‹:BIOS / UEFI ๅœจๅšไป€้บผ?

    ไฝ ๆŒ‰ไธ‹้›ปๆบ้ตๅพŒ,Linux ้‚„ๆฒ’ๅ‡บๅ ด。็ฌฌไธ€ๅ€‹ๅทฅไฝœ็š„ๆ˜ฏ BIOS ๆˆ– UEFI。 ๅฎƒๆœƒๅ…ˆๆŠŠ็กฌ้ซ”็’ฐๅขƒๆ•ด็†ๅฅฝ,ๅ†ๆŠŠๆŽงๅˆถๆฌŠไบค็ตฆไธ‹ไธ€้šŽๆฎต。

    • ๅˆๅง‹ๅŒ– CPU、่จ˜ๆ†ถ้ซ”、ไธปๆฉŸๆฟๆ™ถ็‰‡、ๅ„ฒๅญ˜ๆŽงๅˆถๅ™จ
    • ๆŽƒๆๅฏ้–‹ๆฉŸ่ฃ็ฝฎ(NVMe / SSD / SATA / USB)
    • ไพ้–‹ๆฉŸ้ †ๅบ้ธๆ“‡็›ฎๆจ™(Boot Order)

    ๅฆ‚ๆžœไฝ ้‡ๅˆฐ「้€ฃ GRUB ้ƒฝ้€ฒไธๅŽป」ๆˆ–「็•ซ้ขๅœๅœจไธปๆฉŸๆฟ Logo ๅพˆไน…」, ้€šๅธธๅ•้กŒ้‚„ๅœ็•™ๅœจ้€™ไธ€ๅฑค:็กฌ้ซ”、้ŸŒ้ซ”่จญๅฎš、ๆˆ–้–‹ๆฉŸ่ฃ็ฝฎๆœฌ่บซ。


    ๐Ÿšฆ ไบŒ、GRUB:้‚ฃๅ€‹้ธๅ–ฎๅ…ถๅฏฆๆ˜ฏ「ๆฌ้‹ๅทฅ」

    ๅพˆๅคšไบบไปฅ็‚บ GRUB ๅฐฑๆ˜ฏไธ€ๅ€‹้–‹ๆฉŸ้ธๅ–ฎ,ไฝ†ๅฎƒ็œŸๆญฃ็š„ๅทฅไฝœๆ˜ฏ: ๆŠŠ Linux Kernel ่ˆ‡ initramfs ่ผ‰ๅ…ฅๅˆฐ่จ˜ๆ†ถ้ซ”,ไธฆๆŠŠๅƒๆ•ธไบค็ตฆ Kernel。

    linux /vmlinuz-6.x.x root=/dev/mapper/vg-root ro quiet
    initrd /initramfs-6.x.x.img

    ๅธธ่ฆ‹ๆœƒๅกๅœจ้€™ไธ€ๆฎต็š„็—‡็‹€:

    • ้€ฒๅ…ฅ rescue mode
    • Kernel panic(ๆ‰พไธๅˆฐ root filesystem)
    • ้กฏ็คบๆ‰พไธๅˆฐ็ฃ็ขŸ / LVM / RAID

    ้€™ๆ™‚ๅ€™ไฝ ่ฆๆ‡ท็–‘็š„ไธๆ˜ฏ systemd,่€Œๆ˜ฏ「root= ๅƒๆ•ธ、็ฃ็ขŸ UUID、ๆˆ– initramfs ๅ…งๅฎน」。


    ๐Ÿง  ไธ‰、Kernel:Linux ็œŸๆญฃ้–‹ๅง‹ไธŠๅทฅ

    Kernel ๆŽฅๆ‰‹ๅพŒ,ๆœƒ้–‹ๅง‹ๅšไธ€ๅ †「ๅพˆๆ—ฉๆœŸไฝ†ๅพˆ้—œ้ต」็š„ไบ‹ๆƒ…:

    • ๅˆๅง‹ๅŒ–็กฌ้ซ”้ฉ…ๅ‹•(ๅฐคๅ…ถๆ˜ฏ็ฃ็ขŸ่ˆ‡ๆช”ๆกˆ็ณป็ตฑ)
    • ๅปบ็ซ‹่จ˜ๆ†ถ้ซ”็ฎก็†่ˆ‡็จ‹ๅบๆจกๅž‹
    • ๆŽ›่ผ‰ๆšซๆ™‚ๆ€ง็š„ rootfs(ๆŽฅ่‘—้€šๅธธๆœƒไบค็ตฆ initramfs)

    ่ฆๅ›ž้ ญ็œ‹ Kernel ๆ—ฉๆœŸๅˆฐๅบ•ๅšไบ†ไป€้บผ,ๆœ€ๅธธ็”จ็š„ๅ…ฅๅฃๅฐฑๆ˜ฏ:

    dmesg | less

    ๅฆ‚ๆžœไฝ ๆ˜ฏ่ฆ็œ‹「้€™ๆฌก้–‹ๆฉŸ」็š„ๅฎŒๆ•ด็ด€้Œ„,ๅพŒ้ข systemd ้šŽๆฎตไนŸๆœƒๆŠŠ Kernel log ไธ€่ตทๆ”ถ้€ฒ journal。


    ๐Ÿงฐ ๅ››、initramfs:้–‹ๆฉŸๆต็จ‹ๆœ€ๅธธ่ขซไฝŽไผฐ็š„้—œ้ต

    initramfs ๅฏไปฅๆŠŠๅฎƒๆƒณๆˆ「่‡จๆ™‚็š„่ฟทไฝ  Linux」: ๅฎƒ็š„ไปปๅ‹™ๆ˜ฏๅ…ˆๆŠŠ็œŸๆญฃ็š„็ณป็ตฑ็’ฐๅขƒๆบ–ๅ‚™ๅฅฝ,็„ถๅพŒๅˆ‡ๆ›ๅˆฐๆญฃๅผ็š„ root filesystem。

    ๅฎƒ้€šๅธธๆœƒ่ฒ ่ฒฌ:

    • ่ผ‰ๅ…ฅๅฟ…่ฆๆจก็ต„(็ฃ็ขŸ、ๆช”ๆกˆ็ณป็ตฑ、็ถฒๅก็ญ‰)
    • ็ต„ RAID、ๅ•Ÿ็”จ LVM、่งฃ้Ž–ๅŠ ๅฏ†็ฃ็ขŸ(ๅฆ‚ๆžœๆœ‰)
    • ๆ‰พๅˆฐ็œŸๆญฃ็š„ /(rootfs),ๅ†ๅˆ‡ๆ›้ŽๅŽป

    ๅช่ฆไฝ ็”จๅˆฐ LVM / RAID / ๅŠ ๅฏ†,initramfs ๅนพไนŽๅฐฑๆ˜ฏ「่ƒฝไธ่ƒฝ้ †ๅˆฉ้–‹ๆฉŸ」็š„้–€ๆชป。


    ⚙️ ไบ”、systemd:ๆœๅ‹™ๅ•Ÿๅ‹•่ˆ‡ไพ่ณด้—œไฟ‚็š„็ธฝๆŒ‡ๆฎ

    ็•ถ็œŸๆญฃ็š„ root filesystem ๆŽ›่ผ‰ๅฎŒๆˆๅพŒ,systemd(PID 1)้–‹ๅง‹ๆŽฅๆ‰‹ๆ•ดๅ€‹ไฝฟ็”จ่€…็ฉบ้–“(userspace)。 ๅพž้€™ๅˆป้–‹ๅง‹,ไฝ ็†Ÿๆ‚‰็š„ๆœๅ‹™็ฎก็†、ๅ•Ÿๅ‹•้ †ๅบ、ๅคฑๆ•—้‡่ฉฆ、็ด€้Œ„่ฟฝๆŸฅ,ๆ‰็ฎ—ๆญฃๅผ้€ฒๅ…ฅไธปๅ ด。

    ๅธธ็”จไธ‰ไปถๅฅ—(็œŸ็š„ๅพˆๅธธ็”จ):

    systemctl list-dependencies multi-user.target
    systemd-analyze blame
    journalctl -b

    ๐Ÿงญ ๅ…ญ、้‡ๅˆฐ「้–‹ๆฉŸๆ…ข / ้–‹ๆฉŸๅก」ๆ€Ž้บผๆŠ“?ๅ…ˆๆŠŠๆฎต่ฝๅˆ†ๆธ…ๆฅš

    ้™ค้Œฏๆœ€ๆ€•็š„ๆ˜ฏไบ‚็Œœ。ไฝ ๅช่ฆๅ…ˆๅˆคๆ–ท「ๅกๅœจๅ“ชไธ€ๆฎต」,ๅฐฑ่ƒฝ็›ดๆŽฅ็ธฎๅฐ 80% ็š„็ฏ„ๅœ。

    BIOS / UEFI
      ↓
    GRUB(่ผ‰ๅ…ฅ Kernel / initramfs / ๅƒๆ•ธ)
      ↓
    Kernel(็กฌ้ซ”ๅˆๅง‹ๅŒ–、ๆ—ฉๆœŸ driver、ๆช”ๆกˆ็ณป็ตฑ)
      ↓
    initramfs(็ต„ RAID / ๅ•Ÿ LVM / ่งฃ้Ž–、ๅˆ‡ๆ› rootfs)
      ↓
    systemd(ๅ•Ÿๅ‹• target / service、ๆ”ถ้›†ๆ—ฅๅฟ—)

    ไธ€ๅ€‹ๅพˆๅฏฆ็”จ็š„็ฟ’ๆ…ฃ:ๅช่ฆไฝ ่ฆบๅพ—「้–‹ๆฉŸๆ…ข」,ๅ…ˆ่ท‘:

    systemd-analyze
    systemd-analyze blame
    systemd-analyze critical-chain

    ๅฆ‚ๆžœ systemd ้€™้‚Š็œ‹่ตทไพ†ๆญฃๅธธ,ไฝ†้ซ”ๆ„Ÿไป็„ถ「ๅœจ systemd ไน‹ๅ‰ๅฐฑๆ…ข」, ้‚ฃๅฐฑ่ฉฒๆŠŠ็„ฆ้ปž็งปๅŽป Kernel / initramfs(dmesg、็ฃ็ขŸ、RAID/LVM、้ฉ…ๅ‹•ๅˆๅง‹ๅŒ–)้‚ฃๆฎต。


    ๐Ÿ’ฌ ไบ’ๅ‹•็•™่จ€ๅผ•ๅฐŽ

    ๐Ÿ’ฌ ๆƒณไบคๆตไธ€ไธ‹ไฝ ็š„็’ฐๅขƒๅ—Ž?

    ๅฆ‚ๆžœไฝ ้‡ๅˆฐ「้–‹ๆฉŸๅกไฝ / ้–‹ๆฉŸๅพˆๆ…ข / ๆŸๅ€‹ service ่ตทไธไพ†」,ๆญก่ฟŽๅœจ็•™่จ€่ฒผไธŠ:
    systemd-analyze blame
    ๆˆ– dmesg / journalctl -b ็š„้—œ้ต็‰‡ๆฎต,ๆˆ‘ๅฏไปฅๅนซไฝ ไธ€่ตทๅˆคๆ–ทๅกๅœจๅ“ชไธ€ๆฎต。


    ๐Ÿ”— ๅปถไผธ้–ฑ่ฎ€

    — WWFandy・Linux ็ณป็ตฑ็ญ†่จ˜

    ๐Ÿ”— ๅˆ†ไบซ้€™็ฏ‡ LINE Facebook X

    ๆฒ’ๆœ‰็•™่จ€:

    ๅผต่ฒผ็•™่จ€

    ๅญ—็ดš