Атомарные обновления в OSTree
,
: " - ".
- ,
: , ,
, - ,
, ""
.
, . ,
" = "
: ,
ޣ : .
OSTree : ()
. " 200 , ", "
, ,
".
- : ,
, , ,
. . 2-3 .
OSTree ޣ ""
OSTree - "" (,
) . -
, .
OSTree , :
- , Ref - "/",
. , ref ". 5.2 minimal x86_64". Remote
- , refs (/,
). " ",
ref. Ref - : .
"deploy" "rollback".
Deploy - ף sysroot ,
. deploy
, " ".
Rollback - deploy. , -
" 17 ", ף
. rollback .
" ":
. :
- " / ".
OSTree- sysroot - , :
* OSTree (, ),
* ף ,
* , .
" ", - :
* sysroot ף OSTree;
* /boot/loader (entries), .
- , " ".
OSTree " ".
()?
RPM, "rpm-ostree". ң
(treefile, JSON),
, OSTree-.
Treefile - : " ",
" ".
OSTree " "
: , , .
- .
, :
* ,
* ,
* ,
* - , "
" .
- "" .
OSTree- : " ref X".
Ref X . - .
, ref/, .
, .
, "" .
" "
.
, (
/ ).
: .
- () , ۣ production.
OSTree - " ". :
* : .
* : " ݣ 15
" .
, - , OSTree .
, - , OSTree .
OSTree , -
:
1. /
, " " , " ".
2. Edge ̣
" ".
3.
,
, .
4.
NAT, VPN, IDS/, , -
.
:
1.
"" ( , ),
.
2. " " /
OSTree , () (ref).
.
3. refs
, stable/testing, refs, , .
4. BIOS/UEFI
OSTree : root-, fstab, BIOS/UEFI
- ӣ . " ", ģ
.
OSTree: ?
. :
1. OSTree - , :
* RPM- treefile (JSON),
* OSTree-,
* summary,
* OSTree- HTTP(S) .
2. - ( ), :
* remote ,
* pull ref,
* deploy,
* deploy.
. " ", :
* mkostreerepo - / OSTree- (rpm-ostree
compose tree + summary).
* mk-ostree-host.sh - deploy ref ( 3 ).
- : , ,
, .
: OSTree- .
:
* rpm-ostree ostree ( rpm-ostree , mkostreerepo
tdnf);
* RPM- ( rpm-ostree );
* : ԣ, compose.
mkostreerepo :
* REPOPATH/rep - OSTree ( , );
* REPOPATH/cache - ( , ).
mkostreerepo:
1. " " ( JSON)
JSON, REPOPATH/niceos-base.json.
- treefile (niceos-base.json) .
:
sudo /usr/bin/rpm-ostree-server/mkostreerepo -r=/srv/ostree/niceos
ģ:
* /srv/ostree/niceos ( );
* repo cache;
* niceos-base.json;
* *.repo ( ޣ custom );
* rpm-ostree compose tree, ref;
* summary.
2. "ϣ " ( treefile JSON)
: .
:
sudo /usr/bin/rpm-ostree-server/mkostreerepo \
-r=/srv/ostree/niceos \
-p=/srv/ostree/niceos/treefiles/niceos-minimal.json
:
* , JSON ,
* REPOPATH ( ),
* .
3. "Custom repo files" (-c) - ,
-c/--customrepo " , ".
(Y/N), CI/.
:
* *.repo - -c,
* , ,
*.repo .
( ):
sudo /usr/bin/rpm-ostree-server/mkostreerepo \
-c \
-r=/srv/ostree/niceos \
-p=/srv/ostree/niceos/niceos-base.json
treefile (JSON) :
1. ref - . " API-" .
2. repos - RPM- .
3. packages/units - .
( ):
{
"osname": "niceos",
"releasever": "5.2",
"ref": "niceos/5.2/x86_64/minimal",
"repos": ["niceos", "niceos-updates", "niceos-extras"],
"packages": ["systemd","openssh","rpm-ostree"],
"units": ["sshd.service"]
}
:
ref : -> -> .
stable/testing , .
repo HTTP(S) (refs/summary)
OSTree-: REPOPATH/repo.
cache ( ): .
Summary mkostreerepo compose :
* ostree summary --repo=... --update
* ostree summary -v --repo=...
Summary - , refs
.
summary ̣, : "ref
", "pull ģ ", " refs".
1. refs:
ostree refs --repo=/srv/ostree/niceos/repo
2. ref ():
ostree log --repo=/srv/ostree/niceos/repo niceos/5.2/$(uname -m)/minimal | head -n 80
3. summary:
ostree summary -v --repo=/srv/ostree/niceos/repo
4. :
ls -la /srv/ostree/niceos
ls -la /srv/ostree/niceos/repo | head -n 50
ls -la /srv/ostree/niceos/cache | head -n 50
HTTP(S): - /srv/ostree/niceos/repo URL :
http://OSTREE_SERVER/ostree/repo/
remote pull/deploy ( 3 ).
( " HTTP"):
curl -I "http://OSTREE_SERVER/ostree/repo/" || true
- " "
1. REPOPATH , repo/ cache/.
2. ostree refs refs ( ).
3. ostree summary -v .
4. repo/ HTTP(S) .
5. release- : compose summary
( ).
RPM
*.repo, mkostreerepo , ޣ:
* gpgcheck=1
* gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-NICEOS
, :
, compose ģ "-
OSTree", - RPM.
Customrepo CI
-c (Y/N). CI :
, - ģ " ".
, :
* ,
* *.repo non-interactive.
- .
:
* repo/ /,
* - ,
* (HTTPS ).
: ף / .
OSTree : "
" .
:
1. sysroot ( "" pull/deploy),
2. , deploy .
( ) :
- .
. : mk-ostree-host.sh,
ref.
" " mk-ostree-host.sh (RAW-)
:
1. sparse- *.raw ( ).
2. loop-.
3. GPT BIOS-:
* p1: BIOS boot ( GRUB2),
* p2: /boot,
* p3: / ().
4. device-mapper (kpartx).
5. p2 p3 ext4.
6. p3 sysroot, p2 /boot.
7. OSTree sysroot, remote, pull ref deploy.
8. FS (/dev, /proc, /sys, /run, /boot).
9. GRUB2 , , kernel args.
10. root= , .
11. /etc/fstab root.
12. ӣ loop/devicemapper ( ).
:
* FILE_SIZE - .
* IMG_NAME - ( IMG_NAME.raw).
* IP_ADDR - OSTree- (remote http://IP_ADDR).
* REPO_REF - ref, ( niceos/5.2/x86_64/minimal).
* MOUNT_POINT - sysroot .
* root-dev - : "" ( /dev/sda3 /dev/vda3).
- :
/dev/mapper/loop0p3
VM/ .
, :
* /dev/sda3 ( SATA/SCSI ),
* /dev/vda3 (virtio KVM/QEMU),
* .
:
root= "" ,
root-dev, ,
.
root-dev - : "cannot mount root".
(BIOS + SATA: /dev/sda3)
sudo ./mk-ostree-host.sh \
-s 20 \
-n niceos-5.2-minimal \
-i 10.0.0.10 \
-r niceos/5.2/x86_64/minimal \
-m /mnt/niceos-root \
--root-dev /dev/sda3
(BIOS + virtio: /dev/vda3)
sudo ./mk-ostree-host.sh \
-s 20 \
-n niceos-5.2-virtio \
-i 10.0.0.10 \
-r niceos/5.2/x86_64/minimal \
-m /mnt/niceos-root \
--root-dev /dev/vda3
/var/log/mk-ostree-host.sh-YYYY-MM-DD.log
:
sudo tail -n 200 "/var/log/mk-ostree-host.sh-$(date +%Y-%m-%d).log"
VM , - ,
deploy .
1. root ( root:changeme):
passwd
2. OSTree:
ostree admin status
:
* , deploy ,
* ,
* ( ).
3. / /boot:
mount | egrep ' on / | on /boot '
4. fstab:
cat /etc/fstab
():
* /dev/sda3 -> /
* /dev/sda2 -> /boot
VM virtio, /dev/vda* (
root-dev fstab).
5. :
ls -la /boot/loader/entries/
, deploy entry.
(rollback)
OSTree , - " 30 30 ",
deploy.
:
* " " (deploy A),
* / (deploy B),
* B - - A.
, , :
1. ,
2. , deploy .
, SLA, : "
", " ".
VM : root-dev
:
kernel panic / cannot mount root / root device.
: root= /dev/sda3, -
/dev/vda3 ( ).
:
* --root-dev,
* ( ) loader entries fstab -
"", .
ref: /summary/ref
:
pull , ref , refs .
:
* HTTP(S) ,
* repo/,
* summary ̣,
* ref .
:
* curl -I URL ,
* ostree remote refs ,
* ostree summary -v .
UEFI, BIOS
: VM , "No bootable device".
: mk-ostree-host.sh BIOS-only (bios_grub), EFI System Partition.
:
* UEFI (ESP + grub2-efi),
* " " .
, fstab
: , /boot .
: fstab ֣ /dev/sdX /dev/vdX, .
:
* (virtio/sata),
* UUID/labels fstab ( ).
- " "
1. (BIOS/virtio BIOS/sata - ).
2. root Σ (root:changeme ).
3. ostree admin status deploy/ref.
4. / /boot , /etc/fstab .
5. /boot/loader/entries , deploy.
6. : (ref stable/testing), .
"" : ref,
deploy / .
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Создание загрузочного атомарно обновляемого образа Oracle Linux при помощи OSTree | 0 | 2.5 | 26-10-2025 |
| 2 | Отладка исходного кода Asterisk | 0 | 2.5 | 05-09-2025 |
| 3 | Повышение производительности FUSE при помощи io_uring | 0 | 2.5 | 29-06-2025 |
| 4 | Запуск Linux-контейнеров во FreeBSD | 0 | 15 | 01-11-2025 |
| 5 | Ускорение пересборки llama.cpp | 0 | 2.5 | 27-01-2026 |
| 6 | Пользователей заставили уйти с Windows 10 | 0 | 26.67 | 14-08-2026 |
| 7 | Rocky Linux git-lfs Significant Privilege Escalation Remedy RLSA-2026-30853 | 0 | 5 | 01-07-2026 |
| 8 | Запуск KDE Plasma 6 с Wayland во FreeBSD | 0 | 8.75 | 09-09-2025 |
| 9 | Всё о жизненных циклах растений для ЕГЭ | 0 | 2.5 | 14-04-2026 |
| 10 | Рациональные неравенства. Зачётная работа | 0 | 2.5 | 15-08-2026 |