ການຕັ້ງຄ່າບ່ອນເກັບຂໍ້ມູນ

Fedora CoreOS ມາພ້ອມກັບຮູບແບບຜັງບ່ອນເກັບຂໍ້ມູນເລີ່ມຕົ້ນທີ່ງ່າຍດາຍ: ພາທິຊັນຮາກ (root partition) ແມ່ນພາທິຊັນສຸດທ້າຍ ແລະ ຈະຂະຫຍາຍຕົວເພື່ອໃຊ້ພື້ນທີ່ທັງໝົດຂອງດິສກ໌. ນອກຈາກ ພາທິຊັນບູດ (boot partition) ແລ້ວ, ຂໍ້ມູນທັງໝົດແມ່ນຖືກເກັບໄວ້ໃນພາທິຊັນຮາກ. ເບິ່ງ ພາກສ່ວນຮູບແບບຜັງດິສກ໌ ສຳລັບລາຍລະອຽດເພີ່ມເຕີມ.

ດ້ານລຸ່ມນີ້, ພວກເຮົາໄດ້ສະໜອງຕົວຢ່າງກ່ຽວກັບວິທີຕ່າງໆ ທີ່ເຈົ້າສາມາດປັບແຕ່ງສິ່ງນີ້ໄດ້.

Fedora CoreOS ຕ້ອງການລະບົບໄຟລ໌ຮາກ (root filesystem) ຢ່າງໜ້ອຍ 8 GiB. ດ້ວຍເຫດຜົນ ທາງດ້ານເຕັກນິກ, ອິມເມຈດິສກ໌ (disk images) ສຳລັບບາງແພລັດຟອມມາພ້ອມກັບ ລະບົບໄຟລ໌ຮາກທີ່ມີຂະໜາດນ້ອຍກວ່າ, ເຊິ່ງໂດຍເລີ່ມຕົ້ນແລ້ວຈະຂະຫຍາຍຕົວໂດຍອັດຕະໂນມັດເພື່ອ ໃຊ້ພື້ນທີ່ດິສກ໌ທັງໝົດທີ່ມີຢູ່. ຖ້າເຈົ້າເພີ່ມພາທິຊັນອື່ນຫຼັງຈາກລະບົບໄຟລ໌ຮາກ, ເຈົ້າ ຕ້ອງແນ່ໃຈວ່າໄດ້ປັບຂະໜາດພາທິຊັນຮາກໃຫ້ຈະແຈ້ງຕາມທີ່ສະແດງໄວ້ດ້ານລຸ່ມ ເພື່ອໃຫ້ ມັນມີຂະໜາດຢ່າງໜ້ອຍ 8 GiB.

ໃນປັດຈຸບັນ, ຖ້າລະບົບໄຟລ໌ຮາກມີຂະໜາດນ້ອຍກວ່າ 8 GiB, ຈະມີການແຈ້ງເຕືອນເມື່ອເຂົ້າສູ່ລະບົບ. ເລີ່ມແຕ່ເດືອນມິຖຸນາ 2021 ເປັນຕົ້ນໄປ, ຖ້າລະບົບໄຟລ໌ຮາກມີຂະໜາດນ້ອຍກວ່າ 8 GiB ແລະ ຕາມດ້ວຍພາທິຊັນອື່ນ, Fedora CoreOS ຈະປະຕິເສດການບູດ. ສຳລັບລາຍລະອຽດເພີ່ມເຕີມ, ເບິ່ງໄດ້ທີ່ ບັກນີ້.

ການອ້າງອີງອຸປະກອນບລັອກ (block devices) ຈາກ Ignition

ຕົວຢ່າງຫຼາຍຢ່າງດ້ານລຸ່ມນີ້ຈະອ້າງອີງເຖິງອຸປະກອນບລັອກ ເຊັ່ນ /dev/vda. ຊື່ຂອງ ອຸປະກອນບລັອກທີ່ມີໃຫ້ໃຊ້ນັ້ນຂຶ້ນຢູ່ກັບໂຄງສ້າງພື້ນຖານ (bare metal ຫຼື cloud), ແລະ ສ່ວນຫຼາຍມັກຈະຂຶ້ນກັບປະເພດອິນສະແຕນຊ໌ (instance type). ຕົວຢ່າງໃນ AWS, ບາງ ປະເພດອິນສະແຕນຊ໌ມີໄດຣຟ໌ NVMe (/dev/nvme*), ສ່ວນບາງອັນໃຊ້ /dev/xvda*.

ຖ້າການຕັ້ງຄ່າດິສກ໌ຂອງເຈົ້າບໍ່ຊັບຊ້ອນ ແລະ ໃຊ້ດິສກ໌ດຽວກັບທີ່ລະບົບປະຕິບັດການ (OS) ບູດຂຶ້ນມາ, ເຈົ້າສາມາດໃຊ້ລິ້ງ /dev/disk/by-id/coreos-boot-disk ເພື່ອອ້າງອີງເຖິງ ອຸປະກອນນັ້ນໄດ້ຢ່າງສະດວກ. ລິ້ງນີ້ຈະມີໃຫ້ໃຊ້ສະເພາະໃນລະຫວ່າງການຈັດສັນລະບົບ (provisioning) ເພື່ອເຮັດໃຫ້ງ່າຍຕໍ່ການອ້າງອີງເຖິງດິສກ໌ດຽວກັບທີ່ OS ບູດຂຶ້ນມາ.

ຖ້າເຈົ້າຕ້ອງການເຂົ້າເຖິງດິສກ໌ອື່ນໆ, ເຈົ້າສາມາດບູດເຄື່ອງດຽວດ້ວຍການຕັ້ງຄ່າ Ignition ທີ່ມີພຽງການເຂົ້າເຖິງ SSH, ແລ້ວກວດສອບອຸປະກອນບລັອກຜ່ານຄຳສັ່ງ ເຊັ່ນ lsblk.

ສຳລັບຮາດແວຈິງ (physical hardware), ແນະນຳໃຫ້ອ້າງອີງອຸປະກອນຜ່ານລິ້ງ /dev/disk/by-id/ ຫຼື /dev/disk/by-path.

ການຕັ້ງຄ່າການເມົາທ໌ /var ແຍກຕ່າງຫາກ

ນີ້ແມ່ນຕົວຢ່າງການຕັ້ງຄ່າ Butane ເພື່ອຕິດຕັ້ງ /var ໄວ້ໃນພາທິຊັນແຍກຕ່າງຫາກ ໃນດິສກ໌ຫຼັກອັນດຽວກັນ:

ການເພີ່ມພາທິຊັນ /var ໃສ່ໃນດິສກ໌ຫຼັກ
variant: fcos
version: 1.7.0
storage:
  disks:
  - # ລິ້ງໄປຫາອຸປະກອນບລັອກທີ່ OS ຖືກບູດຂຶ້ນມາ.
    device: /dev/disk/by-id/coreos-boot-disk
    # ພວກເຮົາບໍ່ຕ້ອງການລຶບຕາຕະລາງພາທິຊັນ ເນື່ອງຈາກນີ້ແມ່ນອຸປະກອນຫຼັກ.
    # device.
    wipe_table: false
    partitions:
    - number: 4
      label: root
      # ຈັດສັນຢ່າງໜ້ອຍ 8 GiB ໃຫ້ກັບ rootfs. ເບິ່ງໝາຍເຫດ (NOTE) ດ້ານເທິງກ່ຽວກັບເລື່ອງນີ້.
      size_mib: 8192
      resize: true
    - size_mib: 0
      # ພວກເຮົາກຳນົດເລເບວ (label) ເພື່ອອະທິບາຍພາທິຊັນ. ນີ້ແມ່ນສິ່ງສຳຄັນ
      # ສຳລັບການອ້າງອີງເຖິງມັນໃນແບບທີ່ບໍ່ຂຶ້ນກັບຊື່ອຸປະກອນໃນພາກສ່ວນອື່ນໆ ຂອງການຕັ້ງຄ່າ.
      # configuration.
      label: var
  filesystems:
    - path: /var
      device: /dev/disk/by-partlabel/var
      # ພວກເຮົາສາມາດເລືອກລະບົບໄຟລ໌ທີ່ເຮົາຕ້ອງການໄດ້.
      format: ext4
      # ໃຫ້ Butane ສ້າງ mount unit ໃຫ້ພວກເຮົາ ເພື່ອໃຫ້ລະບົບໄຟລ໌ນີ້
      # ຖືກເມົາທ໌ເຂົ້າໃນຮາກ (root) ຕົວຈິງ.
      with_mount_unit: true

ແນ່ນອນວ່າ ເຈົ້າສາມາດເມົາທ໌ພຽງແຕ່ບາງສ່ວນຂອງ /var ເຂົ້າໃນພາທິຊັນແຍກຕ່າງຫາກໄດ້. ຕົວຢ່າງ, ເພື່ອເມົາທ໌ /var/lib/containers:

ການເພີ່ມພາທິຊັນ /var/lib/containers ໃສ່ໃນດິສກ໌ຫຼັກ
variant: fcos
version: 1.7.0
storage:
  disks:
  - device: /dev/disk/by-id/coreos-boot-disk
    wipe_table: false
    partitions:
    - number: 4
      label: root
      # ຈັດສັນຢ່າງໜ້ອຍ 8 GiB ໃຫ້ກັບ rootfs. ເບິ່ງໝາຍເຫດ (NOTE) ດ້ານເທິງ.
      size_mib: 8192
      resize: true
    - size_mib: 0
      label: containers
  filesystems:
    - path: /var/lib/containers
      device: /dev/disk/by-partlabel/containers
      format: xfs
      with_mount_unit: true

ນອກຈາກນັ້ນ, ເຈົ້າຍັງສາມາດເມົາທ໌ບ່ອນເກັບຂໍ້ມູນຈາກດິສກ໌ແຍກຕ່າງຫາກໄດ້. ຕົວຢ່າງ, ໃນທີ່ນີ້ພວກເຮົາເມົາທ໌ /var/log ຈາກພາທິຊັນໃນ /dev/vdb:

ການເພີ່ມ /var/log ຈາກດິສກ໌ສຳຮອງ
variant: fcos
version: 1.7.0
storage:
  disks:
  - device: /dev/vdb
    wipe_table: false
    partitions:
    - size_mib: 0
      start_mib: 0
      number: 1
      label: log
  filesystems:
    - path: /var/log
      device: /dev/disk/by-partlabel/log
      format: xfs
      with_mount_unit: true
ການກຳນົດດິສກ໌ທີ່ມີຫຼາຍພາທິຊັນ

ໃນຕົວຢ່າງນີ້, ພວກເຮົາລຶບຂໍ້ມູນໃນດິສກ໌ ແລະ ສ້າງພາທິຊັນໃໝ່ສອງພາທິຊັນ.

variant: fcos
version: 1.7.0
storage:
  disks:
    -
      # ບັງຄັບ. ພວກເຮົາໃຊ້ World-Wide Number ID ຂອງໄດຣຟ໌ເພື່ອຮັບປະກັນ
      # ຄວາມບໍ່ຊ້ຳກັນ.
      device: /dev/disk/by-id/wwn-0x50014e2eb507fcdf
      # ນີ້ຮັບປະກັນວ່າຕາຕະລາງພາທິຊັນຈະຖືກສ້າງຂຶ້ນໃໝ່ ພ້ອມກັບທຸກໆ
      # ພາທິຊັນ.
      wipe_table: true
      partitions:
        # ພາທິຊັນທຳອິດ (ໝາຍເລກຊ່ອງ 1) ມີຂະໜາດ 32 GiB ແລະ ເລີ່ມຕົ້ນທີ່
        # ຈຸດເລີ່ມຕົ້ນຂອງອຸປະກອນ. type_guid ຂອງມັນລະບຸວ່າເປັນ Linux
        # swap partition.
        - label: part1
          number: 1
          size_mib: 32768
          start_mib: 0
          type_guid: 0657fd6d-a4ab-43c4-84e5-0933c84b4f4f
        # ພາທິຊັນທີສອງ (ໝາຍເລກຊ່ອງ 2 ໂດຍປະລິຍາຍ) ຈະຖືກວາງໄວ້ຫຼັງຈາກ
        # ພາທິຊັນ 1 ແລະ ຈະຄອບຄອງພື້ນທີ່ທີ່ເຫຼືອທັງໝົດ.
        # ເນື່ອງຈາກບໍ່ໄດ້ລະບຸ type_guid, ມັນຈະເປັນພາທິຊັນ Linux native.
        # partition.
        - label: part2

ການຕັ້ງຄ່າລະບົບໄຟລ໌ຮາກໃໝ່

ມັນເປັນໄປໄດ້ທີ່ຈະຕັ້ງຄ່າລະບົບໄຟລ໌ຮາກຄືນໃໝ່. ເຈົ້າສາມາດໃຊ້ເສັ້ນທາງ /dev/disk/by-label/root ເພື່ອອ້າງອີງເຖິງພາທິຊັນຮາກເດີມ. ເຈົ້າ ຕ້ອງຮັບປະກັນວ່າລະບົບໄຟລ໌ໃໝ່ມີເລເບວເປັນ root ຄືກັນ.

ເຈົ້າຕ້ອງມີ RAM ຢ່າງໜ້ອຍ 4 GiB ເພື່ອໃຫ້ການຈັດສັນຮາກໃໝ່ (root reprovisioning) ເຮັດວຽກໄດ້.

ນີ້ແມ່ນຕົວຢ່າງຂອງການປ່ຽນຈາກ xfs ເປັນ ext4, ແຕ່ໃຊ້ພາທິຊັນເດີມ ໃນດິສກ໌ຫຼັກ:

ການປ່ຽນລະບົບໄຟລ໌ຮາກເປັນ ext4
variant: fcos
version: 1.7.0
storage:
  filesystems:
    - device: /dev/disk/by-partlabel/root
      wipe_filesystem: true
      format: ext4
      label: root

ເຊັ່ນດຽວກັນກັບພາກສ່ວນກ່ອນໜ້ານີ້, ເຈົ້າຍັງສາມາດຍ້າຍລະບົບໄຟລ໌ຮາກທັງໝົດໄດ້. ໃນທີ່ນີ້, ພວກເຮົາກຳລັງຍ້າຍຮາກ (root) ໄປຍັງອຸປະກອນ RAID0:

ການຍ້າຍລະບົບໄຟລ໌ຮາກໄປຫາ RAID0
variant: fcos
version: 1.7.0
storage:
  raid:
    - name: myroot
      level: raid0
      devices:
        - /dev/disk/by-id/virtio-disk1
        - /dev/disk/by-id/virtio-disk2
  filesystems:
    - device: /dev/md/myroot
      format: xfs
      wipe_filesystem: true
      label: root
ເຈົ້າບໍ່ຈຳເປັນຕ້ອງໃຊ້ຄີ path ຫຼື with_mount_unit; FCOS ຮູ້ວ່າ ພາທິຊັນຮາກນັ້ນມີຄວາມພິເສດ ແລະ ຈະຫາວິທີຊອກຫາ ແລະ ເມົາທ໌ມັນເອງ.

ຖ້າເຈົ້າຕ້ອງການເຮັດສຳເນົາດິສກ໌ບູດໄປຫາຫຼາຍໄດຣຟ໌ ເພື່ອຄວາມທົນທານຕໍ່ການເຮັດວຽກຜິດພາດຂອງໄດຣຟ໌, ເຈົ້າຈຳເປັນຕ້ອງເຮັດມິເລີ (mirror) ພາທິຊັນເລີ່ມຕົ້ນທັງໝົດ (root, boot, EFI System Partition, ແລະ bootloader code). ມີໄວຢາກອນການຕັ້ງຄ່າ Butane ພິເສດສຳລັບເລື່ອງນີ້:

ການເຮັດມິເລີດິສກ໌ບູດລົງໃນສອງໄດຣຟ໌
variant: fcos
version: 1.7.0
boot_device:
  # Change to match target architecture (aarch64, ppc64le, etc.)
  layout: x86_64
  mirror:
    devices:
      - /dev/sda
      - /dev/sdb

ການກຳນົດລະບົບໄຟລ໌

ຕົວຢ່າງນີ້ສະແດງໃຫ້ເຫັນເຖິງຂັ້ນຕອນການສ້າງລະບົບໄຟລ໌ໂດຍການກຳນົດ ແລະ ຕັ້ງຊື່ເລເບວໃຫ້ກັບພາທິຊັນ, ລວມພວກມັນເຂົ້າເປັນ RAID array, ແລະ ຟໍແມັດ array ນັ້ນໃຫ້ເປັນ ext4.

ການກຳນົດລະບົບໄຟລ໌ໃນອຸປະກອນບ່ອນເກັບຂໍ້ມູນ RAID
variant: fcos
version: 1.7.0
storage:
  disks:
  # ນີ້ກຳນົດສອງພາທິຊັນ, ແຕ່ລະອັນຢູ່ໃນດິສກ໌ຂອງມັນເອງ. ດິສກ໌ເຫຼົ່ານີ້ຖືກ
  # ລະບຸໂດຍ WWN ຂອງພວກມັນ.
  - device: /dev/disk/by-id/wwn-0x50014ee261e524e4
    wipe_table: true
    partitions:
    -
      # ແຕ່ລະພາທິຊັນຈະໄດ້ຮັບເລເບວທີ່ມະນຸດອ່ານເຂົ້າໃຈໄດ້.
      label: "raid.1.1"
      # ແຕ່ລະພາທິຊັນຈະຖືກວາງໄວ້ທີ່ຈຸດເລີ່ມຕົ້ນຂອງດິສກ໌ ແລະ ມີຄວາມຍາວ
      # 64 GiB.
      number: 1
      size_mib: 65536
      start_mib: 0
  - device: /dev/disk/by-id/wwn-0x50014ee0b8442cd3
    wipe_table: true
    partitions:
    - label: "raid.1.2"
      number: 1
      size_mib: 65536
      start_mib: 0
  # ພວກເຮົາໃຊ້ພາທິຊັນທີ່ກຳນົດໄວ້ກ່ອນໜ້ານີ້ເປັນອຸປະກອນໃນ RAID1 md array.
  raid:
    - name: publicdata
      level: raid1
      devices:
      - /dev/disk/by-partlabel/raid.1.1
      - /dev/disk/by-partlabel/raid.1.2
  # md array ທີ່ໄດ້ມາຈະຖືກໃຊ້ເພື່ອສ້າງລະບົບໄຟລ໌ EXT4.
  filesystems:
    - path: /var/publicdata
      device: /dev/md/publicdata
      format: ext4
      label: PUB
      with_mount_unit: true

ບ່ອນເກັບຂໍ້ມູນທີ່ມີການເຂົ້າລະຫັດ (LUKS)

ນີ້ແມ່ນຕົວຢ່າງການຕັ້ງຄ່າອຸປະກອນ LUKS ທີ່ /var/lib/data.

variant: fcos
version: 1.7.0
storage:
  luks:
    - name: data
      device: /dev/vdb
  filesystems:
    - path: /var/lib/data
      device: /dev/mapper/data
      format: xfs
      label: DATA
      with_mount_unit: true

ລະບົບໄຟລ໌ຮາກກໍສາມາດຍ້າຍໄປ LUKS ໄດ້ຄືກັນ. ໃນກໍລະນີນັ້ນ, ອຸປະກອນ LUKS ຕ້ອງຖືກຜູກມັດ ໂດຍ Clevis. ມີປະເພດການຜູກມັດ (pin) ຫຼັກຢູ່ສອງແບບຄື: TPM2 ແລະ Tang (ຫຼື ການປະສົມປະສານໂດຍໃຊ້ Shamir Secret Sharing).

ການຜູກມັດແບບ TPM2 ຈະຜູກມັດການເຂົ້າລະຫັດກັບເຄື່ອງຮາກແວຈິງທີ່ກຳລັງໃຊ້ຢູ່. ໃຫ້ແນ່ໃຈວ່າ ເຈົ້າເຂົ້າໃຈຮູບແບບໄພຄຸກຄາມ (threat model) ຂອງມັນກ່ອນທີ່ຈະເລືອກລະຫວ່າງ TPM2 ແລະ Tang. ສຳລັບຂໍ້ມູນເພີ່ມເຕີມ, ເບິ່ງ ພາກສ່ວນນີ້ ຂອງເອກະສານການຜູກມັດ Clevis TPM2.
ເຈົ້າຕ້ອງມີ RAM ຢ່າງໜ້ອຍ 4 GiB ເພື່ອໃຫ້ການຈັດສັນຮາກໃໝ່ (root reprovisioning) ເຮັດວຽກໄດ້.

ມີໄວຢາກອນການຕັ້ງຄ່າ Butane ທີ່ເຮັດໃຫ້ງ່າຍຂຶ້ນສຳລັບການຕັ້ງຄ່າການເຂົ້າລະຫັດລະບົບໄຟລ໌ຮາກ ແລະ ການຜູກມັດ. ນີ້ແມ່ນຕົວຢ່າງການໃຊ້ມັນເພື່ອສ້າງລະບົບໄຟລ໌ຮາກທີ່ມີການເຂົ້າລະຫັດ ແລະ ຜູກມັດດ້ວຍ TPM2:

ການເຂົ້າລະຫັດລະບົບໄຟລ໌ຮາກດ້ວຍການຜູກມັດ Clevis TPM2
variant: fcos
version: 1.7.0
boot_device:
  luks:
    tpm2: true

ສິ່ງນີ້ທຽບເທົ່າກັບການຕັ້ງຄ່າແບບເຕັມດັ່ງຕໍ່ໄປນີ້:

ການເຂົ້າລະຫັດລະບົບໄຟລ໌ຮາກດ້ວຍການຜູກມັດ Clevis TPM2 ໂດຍບໍ່ໃຊ້ boot_device
variant: fcos
version: 1.7.0
storage:
  luks:
    - name: root
      label: luks-root
      device: /dev/disk/by-partlabel/root
      clevis:
        tpm2: true
      wipe_volume: true
  filesystems:
    - device: /dev/mapper/root
      format: xfs
      wipe_filesystem: true
      label: root

ການຕັ້ງຄ່າແບບເຕັມນີ້ບໍ່ລວມຄີ path ຫຼື with_mount_unit; FCOS ຮູ້ວ່າພາທິຊັນຮາກນັ້ນພິເສດ ແລະ ຈະຊອກຫາວິທີການຄົ້ນຫາ ແລະ ເມົາທ໌ມັນເອງ.

ຕົວຢ່າງຕໍ່ໄປນີ້ຈະຜູກມັດການເຂົ້າລະຫັດລະບົບໄຟລ໌ຮາກກັບ PCR 7 ເຊິ່ງກົງກັບ UEFI Boot Component ທີ່ໃຊ້ເພື່ອຕິດຕາມໃບຢັ້ງຢືນ Secure Boot ຈາກໜ່ວຍຄວາມຈຳ. ດັ່ງນັ້ນ, ການອັບເດດ UEFI firmware/ໃບຢັ້ງຢືນ ຈຶ່ງບໍ່ຄວນສົ່ງຜົນກະທົບຕໍ່ຄ່າທີ່ເກັບໄວ້ໃນ PCR 7.

ການຜູກມັດສຳລັບ PCR 8 (UEFI Boot Component ທີ່ໃຊ້ຕິດຕາມຄຳສັ່ງ ແລະ kernel command line) ແມ່ນບໍ່ຮອງຮັບ ເນື່ອງຈາກ kernel command line ຈະປ່ຽນແປງທຸກຄັ້ງທີ່ມີການອັບເດດ OS.
ການເຂົ້າລະຫັດລະບົບໄຟລ໌ຮາກດ້ວຍການຜູກມັດ Clevis TPM2 ທີ່ຜູກກັບ PCR 7
variant: fcos
version: 1.7.0
storage:
  luks:
    - name: root
      label: luks-root
      device: /dev/disk/by-partlabel/root
      clevis:
        custom:
          needs_network: false
          pin: tpm2
          config: '{"pcr_bank":"sha1","pcr_ids":"7"}'
      wipe_volume: true
  filesystems:
    - device: /dev/mapper/root
      format: xfs
      wipe_filesystem: true
      label: root

ສາມາດເບິ່ງເອກະສານເພີ່ມເຕີມສຳລັບຟິວ (fields) config ໄດ້ໃນໜ້າ clevis man: man clevis-encrypt-tpm2

ສາມາດໃຊ້ຄຳສັ່ງ clevis ຕໍ່ໄປນີ້ເພື່ອຢືນຢັນວ່າການເຂົ້າລະຫັດລະບົບໄຟລ໌ຮາກ ຖືກຜູກມັດກັບ PCR 7 ຫຼື ບໍ່.

$ sudo clevis luks list -d /dev/disk/by-partlabel/root
1: tpm2 '{"hash":"sha256","key":"ecc","pcr_bank":"sha1","pcr_ids":"7"}'

ນີ້ແມ່ນຕົວຢ່າງຂອງໄວຢາກອນການຕັ້ງຄ່າແບບງ່າຍດ້ວຍ Tang:

ການເຂົ້າລະຫັດລະບົບໄຟລ໌ຮາກດ້ວຍການຜູກມັດ Clevis Tang
variant: fcos
version: 1.7.0
boot_device:
  luks:
    tang:
      - url: http://192.168.122.1:80
        thumbprint: bV8aajlyN6sYqQ41lGqD4zlhe0E

ລະບົບຈະຕິດຕໍ່ກັບເຊີບເວີ Tang ໃນເວລາມີການບູດ.

ສຳລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບການຕິດຕັ້ງເຊີບເວີ Tang, ເບິ່ງໄດ້ທີ່ ເອກະສານຕົ້ນທາງ.

ເຈົ້າສາມາດຕັ້ງຄ່າການຜູກມັດທັງ Tang ແລະ TPM2 ໄດ້ (ລວມທັງການໃຊ້ເຊີບເວີ Tang ຫຼາຍເຄື່ອງ ເພື່ອເປັນການສຳຮອງ). ໂດຍເລີ່ມຕົ້ນແລ້ວ, ຕ້ອງການພຽງແຕ່ອຸປະກອນ TPM2 ຫຼື ເຊີບເວີ Tang ພຽງເຄື່ອງດຽວ ເພື່ອປົດລັອກລະບົບໄຟລ໌ຮາກ. ສິ່ງນີ້ສາມາດປ່ຽນແປງໄດ້ໂດຍໃຊ້ຄີ threshold:

ການເຂົ້າລະຫັດລະບົບໄຟລ໌ຮາກດ້ວຍທັງ TPM2 ແລະ Tang
variant: fcos
version: 1.7.0
boot_device:
  luks:
    tang:
      - url: http://192.168.122.1:80
        thumbprint: bV8aajlyN6sYqQ41lGqD4zlhe0E
    tpm2: true
    # ສິ່ງນີ້ຈະອະນຸຍາດໃຫ້ປົດລັອກ rootfs ໄດ້ກໍຕໍ່ເມື່ອທັງ TPM2 ແລະ Tang ສາມາດ
    # ເຂົ້າເຖິງໄດ້ ແລະ ຖືກຕ້ອງເທົ່ານັ້ນ
    threshold: 2

ການກຳນົດຂະໜາດພາທິຊັນຮາກ

ຖ້າເຈົ້າໃຊ້ Ignition ເພື່ອຕັ້ງຄ່າໃໝ່ ຫຼື ຍ້າຍພາທິຊັນຮາກ, ພາທິຊັນນັ້ນຈະບໍ່ຂະຫຍາຍຕົວ ໂດຍອັດຕະໂນມັດໃນການບູດຄັ້ງທຳອິດ (ເບິ່ງການສົນທະນາທີ່ກ່ຽວຂ້ອງໃນ ບັນຫານີ້). ໃນກໍລະນີຂອງການຍ້າຍພາທິຊັນຮາກໄປຫາໃບດິສກ໌ໃໝ່ (ຫຼື ຫຼາຍໃບດິສກ໌), ເຈົ້າຄວນກຳນົດ ຂະໜາດພາທິຊັນທີ່ຕ້ອງການໂດຍໃຊ້ຟິວ size_mib. ຖ້າເປັນການຕັ້ງຄ່າລະບົບໄຟລ໌ຮາກ ໃນບ່ອນເດີມ ເຊັ່ນໃນຕົວຢ່າງ LUKS ດ້ານເທິງ, ເຈົ້າສາມາດປັບຂະໜາດພາທິຊັນທີ່ມີຢູ່ໂດຍໃຊ້ຟິວ resize:

ການປັບຂະໜາດພາທິຊັນຮາກໃຫ້ເປັນຂະໜາດສູງສຸດ
variant: fcos
version: 1.7.0
storage:
  disks:
    - device: /dev/disk/by-id/coreos-boot-disk
      partitions:
        - label: root
          number: 4
          # 0 ໝາຍເຖິງການໃຊ້ພື້ນທີ່ທີ່ມີຢູ່ທັງໝົດ
          size_mib: 0
          resize: true
  luks:
    - name: root
      device: /dev/disk/by-partlabel/root
      clevis:
        tpm2: true
      wipe_volume: true
  filesystems:
    - device: /dev/mapper/root
      format: xfs
      wipe_filesystem: true
      label: root

ການເພີ່ມ swap

ຕົວຢ່າງນີ້ຈະສ້າງພາທິຊັນ swap ທີ່ຄອບຄຸມພື້ນທີ່ທັງໝົດຂອງອຸປະກອນ sdb, ສ້າງພື້ນທີ່ swap ໃນນັ້ນ, ແລະ ສ້າງ systemd swap unit ເພື່ອໃຫ້ພື້ນທີ່ swap ຖືກເປີດໃຊ້ງານໃນເວລາບູດ.

ການຕັ້ງຄ່າພາທິຊັນ swap ໃນດິສກ໌ທີສອງ
variant: fcos
version: 1.7.0
storage:
  disks:
    - device: /dev/sdb
      wipe_table: true
      partitions:
        - number: 1
          label: swap
  filesystems:
    - device: /dev/disk/by-partlabel/swap
      format: swap
      wipe_filesystem: true
      with_mount_unit: true

ການເພີ່ມບ່ອນເກັບຂໍ້ມູນເຄືອຂ່າຍ

ລະບົບ Fedora CoreOS ສາມາດຖືກຕັ້ງຄ່າເພື່ອເມົາທ໌ລະບົບໄຟລ໌ເຄືອຂ່າຍ ເຊັ່ນ NFS ແລະ CIFS ໄດ້. ວິທີທີ່ດີທີ່ສຸດແມ່ນການໃຊ້ Ignition ເພື່ອສ້າງ systemd units. ລະບົບໄຟລ໌ສາມາດຖືກເມົາທ໌ ໃນເວລາບູດໄດ້ໂດຍການສ້າງ mount unit ມາດຕະຖານ. ນອກຈາກນັ້ນ, ລະບົບໄຟລ໌ສາມາດຖືກເມົາທ໌ ເມື່ອຜູ້ໃຊ້ເຂົ້າເຖິງຈຸດເມົາທ໌ (mountpoint) ໂດຍການສ້າງ automount unit ເພີ່ມເຕີມ. ດ້ານລຸ່ມນີ້ແມ່ນຕົວຢ່າງຂອງແຕ່ລະແບບສຳລັບລະບົບໄຟລ໌ NFS.

ການຕັ້ງຄ່າການເມົາທ໌ NFS

ການສ້າງ systemd unit ເພື່ອເມົາທ໌ລະບົບໄຟລ໌ NFS ໃນເວລາບູດ.
ໄຟລ໌ .mount ຕ້ອງຖືກຕັ້ງຊື່ຕາມເສັ້ນທາງ (ເຊັ່ນ: /var/mnt/data = var-mnt-data.mount)
variant: fcos
version: 1.3.0
systemd:
  units:
    - name: var-mnt-data.mount
      enabled: true
      contents: |
        [Unit]
        Description=Mount data directory

        [Mount]
        What=example.org:/data
        Where=/var/mnt/data
        Type=nfs4

        [Install]
        WantedBy=multi-user.target
ການສ້າງ systemd unit ເພື່ອເມົາທ໌ລະບົບໄຟລ໌ NFS ເມື່ອຜູ້ໃຊ້ເຂົ້າເຖິງຈຸດເມົາທ໌ (automount)
variant: fcos
version: 1.3.0
systemd:
  units:
    - name: var-mnt-data.mount
      contents: |
        [Unit]
        Description=Mount data directory

        [Mount]
        What=example.org:/data
        Where=/var/mnt/data
        Type=nfs4

        [Install]
        WantedBy=multi-user.target

    - name: var-mnt-data.automount
      enabled: true
      contents: |
        [Unit]
        Description=Automount data directory

        [Automount]
        TimeoutIdleSec=20min
        Where=/var/mnt/data

        [Install]
        WantedBy=multi-user.target

ຕົວຢ່າງຂັ້ນສູງ

ຕົວຢ່າງນີ້ຈະຕັ້ງຄ່າດິສກ໌ບູດແບບມິເລີ ພ້ອມກັບລະບົບໄຟລ໌ຮາກທີ່ມີການເຂົ້າລະຫັດດ້ວຍ TPM2, ຂຽນທັບຂະໜາດຂອງພາທິຊັນຮາກທີ່ສ້າງຂຶ້ນໂດຍອັດຕະໂນມັດ, ແລະ ເພີ່ມພາທິຊັນ /var ແບບມິເລີທີ່ມີການເຂົ້າລະຫັດ ເຊິ່ງໃຊ້ພື້ນທີ່ທີ່ເຫຼືອທັງໝົດຂອງດິສກ໌.

ດິສກ໌ບູດແບບມິເລີທີ່ມີການເຂົ້າລະຫັດ ພ້ອມກັບ /var ແຍກຕ່າງຫາກ
variant: fcos
version: 1.7.0
boot_device:
  # Change to match target architecture (aarch64, ppc64le, etc.)
  layout: x86_64
  luks:
    tpm2: true
  mirror:
    devices:
      - /dev/sda
      - /dev/sdb
storage:
  disks:
    - device: /dev/sda
      partitions:
        # Override size of root partition on first disk, via the label
        # generated for boot_device.mirror
        - label: root-1
          size_mib: 10240
        # Add a new partition filling the remainder of the disk
        - label: var-1
    - device: /dev/sdb
      partitions:
        # Similarly for second disk
        - label: root-2
          size_mib: 10240
        - label: var-2
  raid:
    - name: md-var
      level: raid1
      devices:
        - /dev/disk/by-partlabel/var-1
        - /dev/disk/by-partlabel/var-2
  luks:
    - name: var
      device: /dev/md/md-var
      # No key material is specified, so a random key will be generated
      # and stored in the root filesystem
  filesystems:
    - device: /dev/mapper/var
      path: /var
      label: var
      format: xfs
      wipe_filesystem: true
      with_mount_unit: true

ຮູບແບບຜັງດິສກ໌

ທຸກໆລະບົບ Fedora CoreOS ເລີ່ມຕົ້ນດ້ວຍອິມເມຈດິສກ໌ດຽວກັນ ເຊິ່ງຈະແຕກຕ່າງກັນເລັກນ້ອຍ ລະຫວ່າງສະຖາປັດຕະຍະກຳ ໂດຍຂຶ້ນກັບສິ່ງທີ່ຈຳເປັນສຳລັບການບູດ. ໃນການບູດຄັ້ງທຳອິດ, ລະບົບໄຟລ໌ຮາກຈະຖືກຂະຫຍາຍໃຫ້ເຕັມພື້ນທີ່ທີ່ເຫຼືອຂອງດິສກ໌. ອິມເມຈດິສກ໌ສາມາດປັບແຕ່ງໄດ້ ໂດຍໃຊ້ການຕັ້ງຄ່າ Butane ເພື່ອຈັດພາທິຊັນດິສກ໌ໃໝ່ ແລະ ສ້າງ/ຟໍແມັດລະບົບໄຟລ໌. ການຕິດຕັ້ງແບບ Bare metal ກໍບໍ່ຕ່າງກັນ; ຕົວຕິດຕັ້ງພຽງແຕ່ສຳເນົາ raw image ໄປໃສ່ດິສກ໌ເປົ້າໝາຍ ແລະ ໃສ່ການຕັ້ງຄ່າທີ່ລະບຸໄວ້ໃນ /boot ເພື່ອໃຊ້ໃນການບູດຄັ້ງທຳອິດ.

ເບິ່ງ ການຕັ້ງຄ່າລະບົບໄຟລ໌ຮາກໃໝ່ ສຳລັບຕົວຢ່າງກ່ຽວກັບການປ່ຽນແປງທີ່ຮອງຮັບໃນພາທິຊັນຮາກ.

ຕາຕະລາງພາທິຊັນ

ບໍ່ແນະນຳໃຫ້ໃຊ້ໝາຍເລກພາທິຊັນເພື່ອອ້າງອີງເຖິງພາທິຊັນໃດໜຶ່ງ, ແຕ່ຄວນໃຊ້ເລເບວ (labels) ຫຼື UUID ແທນ. Fedora CoreOS ຈອງເລເບວ boot, boot-<number>, root, root-<number>, BIOS-BOOT, bios-<number>, EFI-SYSTEM, ແລະ esp-<number> ໄວ້, ລວມທັງຊື່ອຸປະກອນ RAID md-boot ແລະ md-root. ການສ້າງພາທິຊັນ, ລະບົບໄຟລ໌ ຫຼື ອຸປະກອນ RAID ດ້ວຍເລເບວເຫຼົ່ານີ້ແມ່ນບໍ່ຮອງຮັບ.

ຕາຕະລາງພາທິຊັນ x86_64

ອິມເມຈດິສກ໌ x86_64 ຖືກຟໍແມັດເປັນ GPT ພ້ອມກັບ MBR ປ້ອງກັນ. ມັນຮອງຮັບ ການບູດຜ່ານທັງ BIOS ແລະ UEFI (ລວມທັງ Secure Boot).

ຮູບແບບຜັງຕາຕະລາງພາທິຊັນໄດ້ປ່ຽນແປງຕາມການເວລາ. ຮູບແບບປັດຈຸບັນຄື:

Table 1. ຕາຕະລາງພາທິຊັນສຳລັບ x86_64

ໝາຍເລກ

ເລເບວ

ລາຍລະອຽດ

ປະເພດພາທິຊັນ

1

BIOS-BOOT

ບັນຈຸ BIOS GRUB image

raw data

2

EFI-SYSTEM

ບັນຈຸ EFI GRUB image ແລະ Secure Boot shim

FAT32

3

boot

ບັນຈຸ GRUB configuration, kernel/initramfs images

ext4

4

root

ບັນຈຸລະບົບໄຟລ໌ຮາກ

xfs

ພາທິຊັນ EFI-SYSTEM ສາມາດຖືກລຶບ ຫຼື ຟໍແມັດໃໝ່ໄດ້ເມື່ອບູດແບບ BIOS. ໃນທຳນອງດຽວກັນ, ພາທິຊັນ BIOS-BOOT ກໍສາມາດຖືກລຶບ ຫຼື ຟໍແມັດໃໝ່ໄດ້ເມື່ອບູດແບບ EFI.

ລະບົບໄຟລ໌ທີ່ຖືກເມົາທ໌

Fedora CoreOS ໃຊ້ OSTree ເຊິ່ງເປັນລະບົບສຳລັບຈັດການລະບົບປະຕິບັດການຫຼາຍເວີຊັນ ທີ່ສາມາດບູດໄດ້ ແລະ ໃຊ້ບ່ອນເກັບຂໍ້ມູນຮ່ວມກັນ. ແຕ່ລະເວີຊັນຂອງລະບົບປະຕິບັດການ ແມ່ນສ່ວນໜຶ່ງຂອງລະບົບໄຟລ໌ /. ທຸກໆການຈັດວາງລະບົບ (deployments) ຈະໃຊ້ /var ຮ່ວມກັນ ເຊິ່ງສາມາດຢູ່ໃນລະບົບໄຟລ໌ດຽວກັນ ຫຼື ເມົາທ໌ແຍກຕ່າງຫາກກໍໄດ້.

ນີ້ແມ່ນຈຸດເມົາທ໌ເລີ່ມຕົ້ນສຳລັບລະບົບ Fedora CoreOS ທີ່ຕິດຕັ້ງໃນດິສກ໌ /dev/vda:

ຈຸດເມົາທ໌ເລີ່ມຕົ້ນໃນ x86_64
$ findmnt --real # ລາຍລະອຽດບາງຢ່າງຖືກຕັດອອກ
TARGET        SOURCE                                                   FSTYPE  OPTIONS
/             /dev/vda4[/ostree/deploy/fedora-coreos/deploy/$hash]     xfs     rw
|-/sysroot    /dev/vda4                                                xfs     ro
|-/etc        /dev/vda4[/ostree/deploy/fedora-coreos/deploy/$hash/etc] xfs     rw
|-/usr        /dev/vda4[/ostree/deploy/fedora-coreos/deploy/$hash/usr] xfs     ro
|-/var        /dev/vda4[/ostree/deploy/fedora-coreos/deploy/var]       xfs     rw
`-/boot       /dev/vda3                                                ext4    ro

ພາທິຊັນລະບົບ EFI ເຄີຍຖືກເມົາທ໌ທີ່ /boot/efi ໃນເມື່ອກ່ອນ, ແຕ່ປັດຈຸບັນບໍ່ແມ່ນແບບນັ້ນແລ້ວ. ໃນລະບົບທີ່ຕັ້ງຄ່າການເຮັດມິເລີອຸປະກອນບູດ, ຈະມີພາທິຊັນ EFI ທີ່ເປັນອິດສະຫຼະໃນແຕ່ລະດິສກ໌.

/ ທີ່ປ່ຽນແປງບໍ່ໄດ້, /usr ແບບອ່ານຢ່າງດຽວ

ເນື່ອງຈາກ OSTree ຖືກໃຊ້ເພື່ອຈັດການໄຟລ໌ທັງໝົດທີ່ເປັນຂອງລະບົບປະຕິບັດການ, ຈຸດເມົາທ໌ / ແລະ /usr ຈຶ່ງບໍ່ສາມາດຂຽນໄດ້. ການປ່ຽນແປງໃດໆ ຕໍ່ລະບົບປະຕິບັດການ ຄວນເຮັດຜ່ານ rpm-ostree.

ໃນທຳນອງດຽວກັນ, ຈຸດເມົາທ໌ /boot ບໍ່ສາມາດຂຽນໄດ້, ແລະ ພາທິຊັນລະບົບ EFI ບໍ່ໄດ້ຖືກເມົາທ໌ ໂດຍເລີ່ມຕົ້ນ. ລະບົບໄຟລ໌ເຫຼົ່ານີ້ຖືກຈັດການໂດຍ rpm-ostree ແລະ bootupd, ແລະ ຜູ້ດູແລລະບົບຕ້ອງບໍ່ແກ້ໄຂມັນໂດຍກົງ.

ການເພີ່ມໄດເຣັກທໍຣີລະດັບສູງສຸດ (ເຊັ່ນ /foo) ແມ່ນຍັງບໍ່ຮອງຮັບໃນປັດຈຸບັນ ແລະ ຖືກຫ້າມໂດຍຄຸນສົມບັດ immutable (ປ່ຽນແປງບໍ່ໄດ້).

/ ຕົວຈິງ (ເຊິ່ງແມ່ນຮາກຂອງລະບົບໄຟລ໌ໃນພາທິຊັນ root) ຖືກເມົາທ໌ແບບ ອ່ານຢ່າງດຽວ (readonly) ໃນ /sysroot ແລະ ຕ້ອງບໍ່ເຂົ້າເຖິງ ຫຼື ແກ້ໄຂໂດຍກົງ.

ການຕັ້ງຄ່າໃນ /etc ແລະ ສະຖານະໃນ /var

ສະຖານທີ່ດຽວທີ່ຮອງຮັບການຂຽນໄດ້ຄື /etc ແລະ /var. /etc ຄວນບັນຈຸ ສະເພາະໄຟລ໌ການຕັ້ງຄ່າ ແລະ ບໍ່ຄວນໃຊ້ເກັບຂໍ້ມູນ. ຂໍ້ມູນທັງໝົດຕ້ອງຖືກເກັບໄວ້ພາຍໃຕ້ /var ແລະ ຈະບໍ່ຖືກແຕະຕ້ອງໂດຍການອັບເກຣດລະບົບ. ສະຖານທີ່ດັ້ງເດີມທີ່ອາດຈະເກັບ ຂໍ້ມູນສະຖານະ (ເຊັ່ນ /home ຫຼື /srv) ແມ່ນ symlinks ທີ່ເຊື່ອມໄປຫາໄດເຣັກທໍຣີ ໃນ /var (ເຊັ່ນ /var/home ຫຼື /var/srv).

ການເລືອກເວີຊັນ ແລະ ການບູດ

ລາຍການເມນູ GRUB ຈະຖືກສ້າງຂຶ້ນສຳລັບແຕ່ລະເວີຊັນຂອງ Fedora CoreOS ທີ່ມີຢູ່ໃນລະບົບ. ລາຍການເມນູນີ້ອ້າງອີງເຖິງການຈັດວາງ (deployment) ຂອງ ostree ເຊິ່ງປະກອບດ້ວຍ Linux kernel, initramfs ແລະ ຄ່າ hash ທີ່ເຊື່ອມໂຍງກັບ ostree commit (ສົ່ງຜ່ານ kernel argument ostree=). ໃນລະຫວ່າງການບູດ, ostree ຈະອ່ານ kernel argument ນີ້ ເພື່ອຕັດສິນໃຈວ່າຈະໃຊ້ deployment ໃດເປັນລະບົບໄຟລ໌ຮາກ. ທຸກໆການອັບເດດ ຫຼື ການປ່ຽນແປງ ຕໍ່ລະບົບ (ການຕິດຕັ້ງແພັກເກດ, ການເພີ່ມ kernel arguments) ຈະສ້າງ deployment ໃໝ່. ສິ່ງນີ້ຊ່ວຍໃຫ້ສາມາດຢ້ອນກັບ (rolling back) ໄປຫາ deployment ກ່ອນໜ້າໄດ້ ຫາກການອັບເດດມີບັນຫາ.