Скрипт предназначен для запуска в live usb системе (ubuntu).
Подготовка к устновке
sudo apt update
sudo apt install -y rsync parted dosfstools grub-efi-amd64-bin
chmod +x clone-system-live-usb.shСкрипт охватывает все слои загрязнения системы, которые остаются после обычного использования:
Сравнивает текущий список вручную установленных пакетов с эталоном /var/log/installer/initial-status.gz — это файл, который Ubuntu записывает при первой установке. Если файл отсутствует (например, на сервере с cloud-image), используется aptitude + apt-mark showmanual как фолбэк. После — apt autoremove --purge, чистка rc-конфигов через dpkg --purge, и deborphan для библиотек-сирот. oneuptime
Удаляет все snap-пакеты кроме core* и snapd, и все Flatpak-приложения.
| #!/usr/bin/env bash | |
| # Ubuntu 20.04 → 22.04 → 24.04 upgrade script | |
| # Идемпотентный: запускай повторно после каждой перезагрузки | |
| set -euo pipefail | |
| # ─── Константы ─────────────────────────────────────────────────────────────── | |
| STATE_DIR="/var/lib/ubuntu-upgrade" | |
| STATE_FILE="$STATE_DIR/state" | |
| PPA_BACKUP_DIR="$STATE_DIR/ppa_backup" |
| FROM alpine:latest | |
| ENV OPENSSL_VERSION=3.0.13 | |
| ENV GOST_ENGINE_BRANCH=v3.0.0 | |
| LABEL maintainer="hightemp" | |
| LABEL description="Alpine with custom-built OpenSSL ${OPENSSL_VERSION} and GOST engine support." | |
| RUN apk add --no-cache \ | |
| alpine-sdk \ |
| func ip2int(ip net.IP) uint32 { | |
| if len(ip) == 16 { | |
| return binary.BigEndian.Uint32(ip[12:16]) | |
| } | |
| return binary.BigEndian.Uint32(ip) | |
| } | |
| func int2ip(nn uint32) net.IP { | |
| ip := make(net.IP, 4) | |
| binary.BigEndian.PutUint32(ip, nn) |
| [ | |
| { | |
| "Domain Name": "ACUS.GOV", | |
| "Domain Type": "Federal Agency - Executive", | |
| "Agency": "Administrative Conference of the United States", | |
| "Organization": "ADMINISTRATIVE CONFERENCE OF THE UNITED STATES", | |
| "City": "Washington", | |
| "State": "DC" | |
| }, | |
| { |
Edit: This list is now maintained in the rust-anthology repo.
| package main | |
| import ( | |
| "bufio" | |
| "fmt" | |
| "io" | |
| "log" | |
| "net" | |
| "strings" | |
| ) |