restructure initialization (#1816)

* reorder enabling of systemd-resolved

* set dns at end

* don't disable interfaces

* let networkmanager manage ifupdown

* restructure initialization

* use pigz when available

* cleanup

* fetch key before adding registry

* fix build

* update patch-db

* fix build

* fix build

* wait for network reinit

* add dynamic wait for up to 60s for network to reinit
This commit is contained in:
Aiden McClelland
2022-09-22 11:40:36 -06:00
committed by GitHub
parent 28f9fa35e5
commit c728f1a694
13 changed files with 449 additions and 198 deletions

View File

@@ -67,6 +67,26 @@ jobs:
name: utils.tar name: utils.tar
path: system-images/utils/utils.tar path: system-images/utils/utils.tar
binfmt:
name: Build binfmt.tar
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Build image
run: make system-images/binfmt/binfmt.tar
- uses: actions/upload-artifact@v3
with:
name: binfmt.tar
path: system-images/binfmt/binfmt.tar
backend: backend:
uses: ./.github/workflows/backend.yaml uses: ./.github/workflows/backend.yaml
@@ -77,7 +97,7 @@ jobs:
name: Build image name: Build image
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 60 timeout-minutes: 60
needs: [compat,utils,backend,frontend] needs: [compat,utils,binfmt,backend,frontend]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with: with:
@@ -95,6 +115,12 @@ jobs:
name: utils.tar name: utils.tar
path: system-images/utils path: system-images/utils
- name: Download binfmt.tar artifact
uses: actions/download-artifact@v3
with:
name: binfmt.tar
path: system-images/binfmt
- name: Download js_snapshot artifact - name: Download js_snapshot artifact
uses: actions/download-artifact@v3 uses: actions/download-artifact@v3
with: with:

View File

@@ -3,14 +3,16 @@ GIT_HASH_FILE := $(shell ./check-git-hash.sh)
EMBASSY_BINS := backend/target/aarch64-unknown-linux-gnu/release/embassyd backend/target/aarch64-unknown-linux-gnu/release/embassy-init backend/target/aarch64-unknown-linux-gnu/release/embassy-cli backend/target/aarch64-unknown-linux-gnu/release/embassy-sdk backend/target/aarch64-unknown-linux-gnu/release/avahi-alias EMBASSY_BINS := backend/target/aarch64-unknown-linux-gnu/release/embassyd backend/target/aarch64-unknown-linux-gnu/release/embassy-init backend/target/aarch64-unknown-linux-gnu/release/embassy-cli backend/target/aarch64-unknown-linux-gnu/release/embassy-sdk backend/target/aarch64-unknown-linux-gnu/release/avahi-alias
EMBASSY_UIS := frontend/dist/ui frontend/dist/setup-wizard frontend/dist/diagnostic-ui EMBASSY_UIS := frontend/dist/ui frontend/dist/setup-wizard frontend/dist/diagnostic-ui
EMBASSY_SRC := raspios.img product_key.txt $(EMBASSY_BINS) backend/embassyd.service backend/embassy-init.service $(EMBASSY_UIS) $(shell find build) EMBASSY_SRC := raspios.img product_key.txt $(EMBASSY_BINS) backend/embassyd.service backend/embassy-init.service $(EMBASSY_UIS) $(shell find build)
COMPAT_SRC := $(shell find system-images/compat/src) COMPAT_SRC := $(shell find system-images/compat/ -not -path 'system-images/compat/target/*' -and -not -name compat.tar -and -not -name target)
UTILS_SRC := $(shell find system-images/utils/Dockerfile) UTILS_SRC := $(shell find system-images/utils/ -not -name utils.tar)
BINFMT_SRC := $(shell find system-images/binfmt/ -not -name binfmt.tar)
BACKEND_SRC := $(shell find backend/src) $(shell find backend/migrations) $(shell find patch-db/*/src) backend/Cargo.toml backend/Cargo.lock BACKEND_SRC := $(shell find backend/src) $(shell find backend/migrations) $(shell find patch-db/*/src) backend/Cargo.toml backend/Cargo.lock
FRONTEND_SHARED_SRC := $(shell find frontend/projects/shared) $(shell find frontend/assets) $(shell ls -p frontend/ | grep -v / | sed 's/^/frontend\//g') frontend/node_modules frontend/config.json patch-db/client/dist FRONTEND_SHARED_SRC := $(shell find frontend/projects/shared) $(shell find frontend/assets) $(shell ls -p frontend/ | grep -v / | sed 's/^/frontend\//g') frontend/node_modules frontend/config.json patch-db/client/dist
FRONTEND_UI_SRC := $(shell find frontend/projects/ui) FRONTEND_UI_SRC := $(shell find frontend/projects/ui)
FRONTEND_SETUP_WIZARD_SRC := $(shell find frontend/projects/setup-wizard) FRONTEND_SETUP_WIZARD_SRC := $(shell find frontend/projects/setup-wizard)
FRONTEND_DIAGNOSTIC_UI_SRC := $(shell find frontend/projects/diagnostic-ui) FRONTEND_DIAGNOSTIC_UI_SRC := $(shell find frontend/projects/diagnostic-ui)
PATCH_DB_CLIENT_SRC := $(shell find patch-db/client -not -path patch-db/client/dist) PATCH_DB_CLIENT_SRC := $(shell find patch-db/client -not -path patch-db/client/dist)
GZIP_BIN := $(shell which pigz || which gzip)
$(shell sudo true) $(shell sudo true)
.DELETE_ON_ERROR: .DELETE_ON_ERROR:
@@ -20,7 +22,7 @@ all: eos.img
gzip: eos.tar.gz gzip: eos.tar.gz
eos.tar.gz: eos.img eos.tar.gz: eos.img
tar --format=posix -cS -f- eos.img | gzip > eos.tar.gz tar --format=posix -cS -f- eos.img | $(GZIP_BIN) > eos.tar.gz
clean: clean:
rm -f eos.img rm -f eos.img
@@ -42,16 +44,18 @@ format:
sdk: sdk:
cd backend/ && ./install-sdk.sh cd backend/ && ./install-sdk.sh
eos.img: $(EMBASSY_SRC) system-images/compat/compat.tar system-images/utils/utils.tar cargo-deps/aarch64-unknown-linux-gnu/release/nc-broadcast $(ENVIRONMENT_FILE) $(GIT_HASH_FILE) eos.img: $(EMBASSY_SRC) system-images/compat/compat.tar system-images/utils/utils.tar system-images/binfmt/binfmt.tar cargo-deps/aarch64-unknown-linux-gnu/release/nc-broadcast $(ENVIRONMENT_FILE) $(GIT_HASH_FILE)
! test -f eos.img || rm eos.img ! test -f eos.img || rm eos.img
if [ "$(NO_KEY)" = "1" ]; then NO_KEY=1 ./build/make-image.sh; else ./build/make-image.sh; fi if [ "$(NO_KEY)" = "1" ]; then NO_KEY=1 ./build/make-image.sh; else ./build/make-image.sh; fi
system-images/compat/compat.tar: $(COMPAT_SRC) system-images/compat/compat.tar: $(COMPAT_SRC)
cd system-images/compat && ./build.sh cd system-images/compat && make
cd system-images/compat && DOCKER_CLI_EXPERIMENTAL=enabled docker buildx build --tag start9/x_system/compat --platform=linux/arm64 -o type=docker,dest=compat.tar .
system-images/utils/utils.tar: $(UTILS_SRC) system-images/utils/utils.tar: $(UTILS_SRC)
cd system-images/utils && DOCKER_CLI_EXPERIMENTAL=enabled docker buildx build --tag start9/x_system/utils --platform=linux/arm64 -o type=docker,dest=utils.tar . cd system-images/utils && make
system-images/binfmt/binfmt.tar: $(BINFMT_SRC)
cd system-images/binfmt && make
raspios.img: raspios.img:
wget --continue https://downloads.raspberrypi.org/raspios_lite_arm64/images/raspios_lite_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64-lite.zip wget --continue https://downloads.raspberrypi.org/raspios_lite_arm64/images/raspios_lite_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64-lite.zip
@@ -105,4 +109,4 @@ ui: frontend/dist/ui
backend: $(EMBASSY_BINS) backend: $(EMBASSY_BINS)
cargo-deps/aarch64-unknown-linux-gnu/release/nc-broadcast: cargo-deps/aarch64-unknown-linux-gnu/release/nc-broadcast:
./build-cargo-dep.sh nc-broadcast ./build-cargo-dep.sh nc-broadcast

View File

@@ -1,3 +1,4 @@
use std::collections::HashMap;
use std::path::Path; use std::path::Path;
use std::process::Stdio; use std::process::Stdio;
use std::time::Duration; use std::time::Duration;
@@ -132,7 +133,8 @@ pub async fn init_postgres(datadir: impl AsRef<Path>) -> Result<(), Error> {
.success(), .success(),
) )
}; };
if tokio::fs::metadata(&db_dir).await.is_err() { let exists = tokio::fs::metadata(&db_dir).await.is_ok();
if !exists {
Command::new("cp") Command::new("cp")
.arg("-ra") .arg("-ra")
.arg("/var/lib/postgresql") .arg("/var/lib/postgresql")
@@ -143,11 +145,35 @@ pub async fn init_postgres(datadir: impl AsRef<Path>) -> Result<(), Error> {
if !is_mountpoint().await? { if !is_mountpoint().await? {
crate::disk::mount::util::bind(&db_dir, "/var/lib/postgresql", false).await?; crate::disk::mount::util::bind(&db_dir, "/var/lib/postgresql", false).await?;
} }
Command::new("chown")
.arg("-R")
.arg("postgres")
.arg("/var/lib/postgresql")
.invoke(crate::ErrorKind::Database)
.await?;
Command::new("systemctl") Command::new("systemctl")
.arg("start") .arg("start")
.arg("postgresql") .arg("postgresql")
.invoke(crate::ErrorKind::Database) .invoke(crate::ErrorKind::Database)
.await?; .await?;
if !exists {
Command::new("sudo")
.arg("-u")
.arg("postgres")
.arg("createuser")
.arg("root")
.invoke(crate::ErrorKind::Database)
.await?;
Command::new("sudo")
.arg("-u")
.arg("postgres")
.arg("createdb")
.arg("secrets")
.arg("-O")
.arg("root")
.invoke(crate::ErrorKind::Database)
.await?;
}
Ok(()) Ok(())
} }
@@ -205,6 +231,28 @@ pub async fn init(cfg: &RpcContextConfig) -> Result<InitResult, Error> {
tracing::info!("Mounted Docker Data"); tracing::info!("Mounted Docker Data");
if should_rebuild || !tmp_docker_exists { if should_rebuild || !tmp_docker_exists {
tracing::info!("Creating Docker Network");
bollard::Docker::connect_with_unix_defaults()?
.create_network(bollard::network::CreateNetworkOptions {
name: "start9",
driver: "bridge",
ipam: bollard::models::Ipam {
config: Some(vec![bollard::models::IpamConfig {
subnet: Some("172.18.0.1/24".into()),
..Default::default()
}]),
..Default::default()
},
options: {
let mut m = HashMap::new();
m.insert("com.docker.network.bridge.name", "br-start9");
m
},
..Default::default()
})
.await?;
tracing::info!("Created Docker Network");
tracing::info!("Loading System Docker Images"); tracing::info!("Loading System Docker Images");
crate::install::load_images("/var/lib/embassy/system-images").await?; crate::install::load_images("/var/lib/embassy/system-images").await?;
tracing::info!("Loaded System Docker Images"); tracing::info!("Loaded System Docker Images");
@@ -214,6 +262,18 @@ pub async fn init(cfg: &RpcContextConfig) -> Result<InitResult, Error> {
tracing::info!("Loaded Package Docker Images"); tracing::info!("Loaded Package Docker Images");
} }
tracing::info!("Enabling Docker QEMU Emulation");
Command::new("docker")
.arg("run")
.arg("--privileged")
.arg("--rm")
.arg("start9/x_system/binfmt")
.arg("--install")
.arg("all")
.invoke(crate::ErrorKind::Docker)
.await?;
tracing::info!("Enabled Docker QEMU Emulation");
crate::ssh::sync_keys_from_db(&secret_store, "/home/start9/.ssh/authorized_keys").await?; crate::ssh::sync_keys_from_db(&secret_store, "/home/start9/.ssh/authorized_keys").await?;
tracing::info!("Synced SSH Keys"); tracing::info!("Synced SSH Keys");
let db = cfg.db(&secret_store).await?; let db = cfg.db(&secret_store).await?;

View File

@@ -8,6 +8,7 @@ use futures::TryFutureExt;
use helpers::NonDetachingJoinHandle; use helpers::NonDetachingJoinHandle;
use models::PackageId; use models::PackageId;
use tokio::net::{TcpListener, UdpSocket}; use tokio::net::{TcpListener, UdpSocket};
use tokio::process::Command;
use tokio::sync::RwLock; use tokio::sync::RwLock;
use trust_dns_server::authority::MessageResponseBuilder; use trust_dns_server::authority::MessageResponseBuilder;
use trust_dns_server::client::op::{Header, ResponseCode}; use trust_dns_server::client::op::{Header, ResponseCode};
@@ -15,9 +16,8 @@ use trust_dns_server::client::rr::{Name, Record, RecordType};
use trust_dns_server::server::{Request, RequestHandler, ResponseHandler, ResponseInfo}; use trust_dns_server::server::{Request, RequestHandler, ResponseHandler, ResponseInfo};
use trust_dns_server::ServerFuture; use trust_dns_server::ServerFuture;
#[cfg(feature = "avahi")] use crate::util::Invoke;
use crate::net::mdns::resolve_mdns; use crate::{Error, ErrorKind, ResultExt, HOST_IP};
use crate::{Error, ErrorKind, ResultExt};
pub struct DnsController { pub struct DnsController {
services: Arc<RwLock<BTreeMap<PackageId, BTreeSet<Ipv4Addr>>>>, services: Arc<RwLock<BTreeMap<PackageId, BTreeSet<Ipv4Addr>>>>,
@@ -31,25 +31,6 @@ struct Resolver {
impl Resolver { impl Resolver {
async fn resolve(&self, name: &Name) -> Option<Vec<Ipv4Addr>> { async fn resolve(&self, name: &Name) -> Option<Vec<Ipv4Addr>> {
match name.iter().next_back() { match name.iter().next_back() {
#[cfg(feature = "avahi")]
Some(b"local") => match resolve_mdns(&format!(
"{}.local",
name.iter()
.rev()
.skip(1)
.next()
.and_then(|v| std::str::from_utf8(v).ok())
.unwrap_or_default()
))
.await
{
Ok(ip) => Some(vec![ip]),
Err(e) => {
tracing::error!("{}", e);
tracing::debug!("{:?}", e);
None
}
},
Some(b"embassy") => { Some(b"embassy") => {
if let Some(pkg) = name.iter().rev().skip(1).next() { if let Some(pkg) = name.iter().rev().skip(1).next() {
if let Some(ip) = self if let Some(ip) = self
@@ -63,7 +44,7 @@ impl Resolver {
None None
} }
} else { } else {
None Some(vec![HOST_IP.into()])
} }
} }
_ => None, _ => None,
@@ -81,7 +62,11 @@ impl RequestHandler for Resolver {
let query = request.request_info().query; let query = request.request_info().query;
if let Some(ip) = self.resolve(query.name().borrow()).await { if let Some(ip) = self.resolve(query.name().borrow()).await {
if query.query_type() != RecordType::A { if query.query_type() != RecordType::A {
tracing::warn!("Non A-Record requested for {}", query.name()); tracing::warn!(
"Non A-Record requested for {}: {:?}",
query.name(),
query.query_type()
);
} }
response_handle response_handle
.send_response( .send_response(
@@ -142,6 +127,13 @@ impl DnsController {
); );
server.register_socket(UdpSocket::bind(bind).await.with_kind(ErrorKind::Network)?); server.register_socket(UdpSocket::bind(bind).await.with_kind(ErrorKind::Network)?);
Command::new("systemd-resolve")
.arg("--set-dns=127.0.0.1")
.arg("--interface=br-start9")
.arg("--set-domain=embassy")
.invoke(ErrorKind::Network)
.await?;
let dns_server = tokio::spawn( let dns_server = tokio::spawn(
server server
.block_until_done() .block_until_done()

View File

@@ -1,3 +1,5 @@
use std::collections::HashMap;
use emver::VersionRange; use emver::VersionRange;
use crate::hostname::{generate_id, get_hostname, sync_hostname}; use crate::hostname::{generate_id, get_hostname, sync_hostname};
@@ -44,6 +46,30 @@ impl VersionT for Version {
ui.insert("ack-instructions".to_string(), serde_json::json!({})); ui.insert("ack-instructions".to_string(), serde_json::json!({}));
} }
crate::db::DatabaseModel::new().ui().put(db, &ui).await?; crate::db::DatabaseModel::new().ui().put(db, &ui).await?;
let docker = bollard::Docker::connect_with_unix_defaults()?;
docker.remove_network("start9").await?;
docker
.create_network(bollard::network::CreateNetworkOptions {
name: "start9",
driver: "bridge",
ipam: bollard::models::Ipam {
config: Some(vec![bollard::models::IpamConfig {
subnet: Some("172.18.0.1/24".into()),
..Default::default()
}]),
..Default::default()
},
options: {
let mut m = HashMap::new();
m.insert("com.docker.network.bridge.name", "br-start9");
m
},
..Default::default()
})
.await?;
crate::install::load_images("/var/lib/embassy/system-images").await?;
Ok(()) Ok(())
} }
async fn down<Db: DbHandle>(&self, db: &mut Db) -> Result<(), Error> { async fn down<Db: DbHandle>(&self, db: &mut Db) -> Result<(), Error> {

View File

@@ -11,9 +11,14 @@ fi
passwd -l start9 passwd -l start9
START=$(date +%s)
while ! ping -q -w 1 -c 1 `ip r | grep default | cut -d ' ' -f 3` > /dev/null; do while ! ping -q -w 1 -c 1 `ip r | grep default | cut -d ' ' -f 3` > /dev/null; do
>&2 echo "Waiting for internet connection..." >&2 echo "Waiting for internet connection..."
sleep 1 sleep 1
if [ "$[$START + 60]" -lt $(date +%s) ]; then
>&2 echo "Timed out waiting for internet connection..."
exit 1
fi
done done
echo "Connected to network" echo "Connected to network"
@@ -41,39 +46,56 @@ apt-get install -y \
cryptsetup \ cryptsetup \
exfat-utils \ exfat-utils \
sqlite3 \ sqlite3 \
network-manager \
wireless-tools \ wireless-tools \
net-tools \ net-tools \
ecryptfs-utils \ ecryptfs-utils \
cifs-utils \ cifs-utils \
samba-common-bin \ samba-common-bin \
network-manager \
vim \ vim \
jq \ jq \
ncdu \ ncdu \
postgresql \ postgresql \
pgloader pgloader \
dnsutils
# switch to systemd-resolved & network-manager
systemctl enable systemd-resolved
systemctl start systemd-resolved
apt-get remove --purge openresolv dhcpcd5 -y
echo "#" > /etc/network/interfaces
systemctl disable wpa_supplicant.service
ln -rsf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
cat << EOF > /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile
dns=systemd-resolved
[ifupdown]
managed=true
EOF
sudo systemctl restart NetworkManager
nmcli device modify eth0 ipv4.ignore-auto-dns no
START=$(date +%s)
while ! ping -q -w 1 -c 1 start9.com > /dev/null; do
>&2 echo "Waiting for network to reinitialize..."
sleep 1
if [ "$[$START + 60]" -lt $(date +%s) ]; then
>&2 echo "Timed out waiting for network to reinitialize..."
exit 1
fi
done
echo "Network reinitialized"
# Setup repository from The Guardian Project and install latest stable Tor daemon # Setup repository from The Guardian Project and install latest stable Tor daemon
echo "deb [arch=arm64 signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org bullseye main" > /etc/apt/sources.list.d/tor.list
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null
apt update && apt install -y tor deb.torproject.org-keyring echo "deb [arch=arm64 signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org bullseye main" > /etc/apt/sources.list.d/tor.list
apt-get update && apt-get install -y tor deb.torproject.org-keyring
curl -fsSL https://get.docker.com | sh # TODO: commit this script into git instead of live fetching it curl -fsSL https://get.docker.com | sh # TODO: commit this script into git instead of live fetching it
# enable embassyd dns server
systemctl enable systemd-resolved
sed -i '/\(^\|#\)DNS=/c\DNS=127.0.0.1' /etc/systemd/resolved.conf
systemctl start systemd-resolved
apt-get remove --purge openresolv dhcpcd5 -y
systemctl disable wpa_supplicant.service
sudo -u postgres createuser root
sudo -u postgres createdb secrets -O root
systemctl disable postgresql.service systemctl disable postgresql.service
ln -rsf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
systemctl disable bluetooth.service systemctl disable bluetooth.service
systemctl disable hciuart.service systemctl disable hciuart.service
systemctl disable triggerhappy.service systemctl disable triggerhappy.service
@@ -86,7 +108,6 @@ sed -i 's/ExecStart=\/usr\/bin\/dockerd/ExecStart=\/usr\/bin\/dockerd --exec-opt
sed -i '/}/i \ \ \ \ application\/wasm \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ wasm;' /etc/nginx/mime.types sed -i '/}/i \ \ \ \ application\/wasm \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ wasm;' /etc/nginx/mime.types
sed -i 's/# server_names_hash_bucket_size 64;/server_names_hash_bucket_size 128;/g' /etc/nginx/nginx.conf sed -i 's/# server_names_hash_bucket_size 64;/server_names_hash_bucket_size 128;/g' /etc/nginx/nginx.conf
sed -i 's/#allow-interfaces=eth0/allow-interfaces=eth0,wlan0/g' /etc/avahi/avahi-daemon.conf sed -i 's/#allow-interfaces=eth0/allow-interfaces=eth0,wlan0/g' /etc/avahi/avahi-daemon.conf
echo "#" > /etc/network/interfaces
echo '{ "cgroup-parent": "docker-engine.slice" }' > /etc/docker/daemon.json echo '{ "cgroup-parent": "docker-engine.slice" }' > /etc/docker/daemon.json
mkdir -p /etc/nginx/ssl mkdir -p /etc/nginx/ssl
@@ -94,8 +115,6 @@ mkdir -p /etc/nginx/ssl
mkdir -p /root/.docker mkdir -p /root/.docker
touch /root/.docker/config.json touch /root/.docker/config.json
docker run --privileged --rm tonistiigi/binfmt --install all
docker network create -d bridge --subnet 172.18.0.1/16 start9 || true
mkdir -p /etc/embassy mkdir -p /etc/embassy
systemctl enable embassyd.service embassy-init.service systemctl enable embassyd.service embassy-init.service
cat << EOF > /etc/tor/torrc cat << EOF > /etc/tor/torrc
@@ -107,14 +126,6 @@ ControlPort 9051
CookieAuthentication 1 CookieAuthentication 1
EOF EOF
cat << EOF > /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile
dns=systemd-resolved
[ifupdown]
managed=false
EOF
if [ -f /embassy-os/product_key.txt ] if [ -f /embassy-os/product_key.txt ]
@@ -139,10 +150,10 @@ sed -i 's/rootwait quiet.*/rootwait cgroup_enable=cpuset cgroup_memory=1 cgroup_
systemctl disable nc-broadcast.service systemctl disable nc-broadcast.service
systemctl disable initialization.service systemctl disable initialization.service
sudo systemctl restart NetworkManager
echo "fs.inotify.max_user_watches=1048576" > /etc/sysctl.d/97-embassy.conf echo "fs.inotify.max_user_watches=1048576" > /etc/sysctl.d/97-embassy.conf
sync sync
reboot reboot

View File

@@ -38,10 +38,6 @@ echo "gpu_mem=16" | sudo tee -a /tmp/eos-mnt/config.txt.tmp > /dev/null
sudo mv /tmp/eos-mnt/config.txt.tmp /tmp/eos-mnt/config.txt sudo mv /tmp/eos-mnt/config.txt.tmp /tmp/eos-mnt/config.txt
sudo touch /tmp/eos-mnt/ssh sudo touch /tmp/eos-mnt/ssh
# Unmount the boot partition and mount embassy partition
sudo umount /tmp/eos-mnt
sudo mount `partition_for ${OUTPUT_DEVICE} 2` /tmp/eos-mnt
if [ "$NO_KEY" != "1" ]; then sudo cp product_key.txt /tmp/eos-mnt; else echo "This image is being written with no product key"; fi
sudo umount /tmp/eos-mnt sudo umount /tmp/eos-mnt
sudo mount `partition_for ${OUTPUT_DEVICE} 3` /tmp/eos-mnt sudo mount `partition_for ${OUTPUT_DEVICE} 3` /tmp/eos-mnt

1
system-images/binfmt/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
binfmt.tar

View File

@@ -0,0 +1 @@
FROM tonistiigi/binfmt

View File

@@ -0,0 +1,6 @@
.DELETE_ON_ERROR:
all: binfmt.tar
binfmt.tar: Dockerfile
DOCKER_CLI_EXPERIMENTAL=enabled docker buildx build --tag start9/x_system/binfmt --platform=linux/arm64 -o type=docker,dest=binfmt.tar .

View File

@@ -50,6 +50,15 @@ dependencies = [
"memchr", "memchr",
] ]
[[package]]
name = "android_system_properties"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "ansi_term" name = "ansi_term"
version = "0.12.1" version = "0.12.1"
@@ -92,7 +101,7 @@ version = "3.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6"
dependencies = [ dependencies = [
"term 0.7.0", "term",
] ]
[[package]] [[package]]
@@ -168,6 +177,17 @@ dependencies = [
"rustc-demangle", "rustc-demangle",
] ]
[[package]]
name = "barrage"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be5951c75bdabb58753d140dd5802f12ff3a483cb2e16fb5276e111b94b19e87"
dependencies = [
"concurrent-queue",
"event-listener",
"spin 0.9.3",
]
[[package]] [[package]]
name = "base32" name = "base32"
version = "0.4.0" version = "0.4.0"
@@ -255,17 +275,6 @@ dependencies = [
"wyz", "wyz",
] ]
[[package]]
name = "blake2b_simd"
version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587"
dependencies = [
"arrayref",
"arrayvec 0.5.2",
"constant_time_eq",
]
[[package]] [[package]]
name = "blake2b_simd" name = "blake2b_simd"
version = "1.0.0" version = "1.0.0"
@@ -358,7 +367,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed59b5c00048f48d7af971b71f800fdf23e858844a6f9e4d32ca72e9399e7864" checksum = "ed59b5c00048f48d7af971b71f800fdf23e858844a6f9e4d32ca72e9399e7864"
dependencies = [ dependencies = [
"serde", "serde",
"serde_with", "serde_with 1.14.0",
] ]
[[package]] [[package]]
@@ -397,6 +406,12 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
[[package]]
name = "cache-padded"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c"
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.0.73" version = "1.0.73"
@@ -411,15 +426,17 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]] [[package]]
name = "chrono" name = "chrono"
version = "0.4.19" version = "0.4.22"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1"
dependencies = [ dependencies = [
"libc", "iana-time-zone",
"js-sys",
"num-integer", "num-integer",
"num-traits", "num-traits",
"serde", "serde",
"time 0.1.44", "time 0.1.44",
"wasm-bindgen",
"winapi", "winapi",
] ]
@@ -541,15 +558,24 @@ dependencies = [
"lazy_static", "lazy_static",
"linear-map", "linear-map",
"log", "log",
"nix 0.24.2", "nix 0.25.0",
"pest", "pest",
"pest_derive", "pest_derive",
"rand 0.8.5", "rand 0.8.5",
"regex", "regex",
"rust-argon2 1.0.0", "rust-argon2",
"serde", "serde",
"serde_json", "serde_json",
"serde_yaml", "serde_yaml 0.8.25",
]
[[package]]
name = "concurrent-queue"
version = "1.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c"
dependencies = [
"cache-padded",
] ]
[[package]] [[package]]
@@ -748,8 +774,18 @@ version = "0.13.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c"
dependencies = [ dependencies = [
"darling_core", "darling_core 0.13.4",
"darling_macro", "darling_macro 0.13.4",
]
[[package]]
name = "darling"
version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4529658bdda7fd6769b8614be250cdcfc3aeb0ee72fe66f9e41e5e5eb73eac02"
dependencies = [
"darling_core 0.14.1",
"darling_macro 0.14.1",
] ]
[[package]] [[package]]
@@ -766,13 +802,38 @@ dependencies = [
"syn 1.0.98", "syn 1.0.98",
] ]
[[package]]
name = "darling_core"
version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "649c91bc01e8b1eac09fb91e8dbc7d517684ca6be8ebc75bb9cafc894f9fdb6f"
dependencies = [
"fnv",
"ident_case",
"proc-macro2 1.0.39",
"quote 1.0.18",
"strsim 0.10.0",
"syn 1.0.98",
]
[[package]] [[package]]
name = "darling_macro" name = "darling_macro"
version = "0.13.4" version = "0.13.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835"
dependencies = [ dependencies = [
"darling_core", "darling_core 0.13.4",
"quote 1.0.18",
"syn 1.0.98",
]
[[package]]
name = "darling_macro"
version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ddfc69c5bfcbd2fc09a0f38451d2daf0e372e367986a83906d1b0dbc88134fb5"
dependencies = [
"darling_core 0.14.1",
"quote 1.0.18", "quote 1.0.18",
"syn 1.0.98", "syn 1.0.98",
] ]
@@ -855,13 +916,11 @@ dependencies = [
[[package]] [[package]]
name = "dirs" name = "dirs"
version = "1.0.5" version = "4.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
dependencies = [ dependencies = [
"libc", "dirs-sys",
"redox_users 0.3.5",
"winapi",
] ]
[[package]] [[package]]
@@ -874,6 +933,17 @@ dependencies = [
"dirs-sys-next", "dirs-sys-next",
] ]
[[package]]
name = "dirs-sys"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
dependencies = [
"libc",
"redox_users",
"winapi",
]
[[package]] [[package]]
name = "dirs-sys-next" name = "dirs-sys-next"
version = "0.1.2" version = "0.1.2"
@@ -881,7 +951,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
dependencies = [ dependencies = [
"libc", "libc",
"redox_users 0.4.3", "redox_users",
"winapi", "winapi",
] ]
@@ -934,7 +1004,7 @@ dependencies = [
[[package]] [[package]]
name = "embassy-os" name = "embassy-os"
version = "0.3.1-rev.1" version = "0.3.2"
dependencies = [ dependencies = [
"aes", "aes",
"async-stream", "async-stream",
@@ -975,7 +1045,7 @@ dependencies = [
"libc", "libc",
"log", "log",
"models", "models",
"nix 0.24.2", "nix 0.25.0",
"nom 7.1.1", "nom 7.1.1",
"num", "num",
"num_enum", "num_enum",
@@ -995,12 +1065,12 @@ dependencies = [
"reqwest_cookie_store", "reqwest_cookie_store",
"rpassword", "rpassword",
"rpc-toolkit", "rpc-toolkit",
"rust-argon2 1.0.0", "rust-argon2",
"scopeguard", "scopeguard",
"serde", "serde",
"serde_json", "serde_json",
"serde_with", "serde_with 2.0.1",
"serde_yaml", "serde_yaml 0.9.13",
"sha2 0.10.2", "sha2 0.10.2",
"sha2 0.9.9", "sha2 0.9.9",
"simple-logging", "simple-logging",
@@ -1022,6 +1092,7 @@ dependencies = [
"trust-dns-server", "trust-dns-server",
"typed-builder", "typed-builder",
"url", "url",
"uuid",
] ]
[[package]] [[package]]
@@ -1047,9 +1118,9 @@ dependencies = [
[[package]] [[package]]
name = "encode_unicode" name = "encode_unicode"
version = "0.3.6" version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
[[package]] [[package]]
name = "encoding_rs" name = "encoding_rs"
@@ -1068,9 +1139,9 @@ checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
[[package]] [[package]]
name = "enum-as-inner" name = "enum-as-inner"
version = "0.4.0" version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116"
dependencies = [ dependencies = [
"heck 0.4.0", "heck 0.4.0",
"proc-macro2 1.0.39", "proc-macro2 1.0.39",
@@ -1181,18 +1252,6 @@ dependencies = [
"miniz_oxide", "miniz_oxide",
] ]
[[package]]
name = "flume"
version = "0.10.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "843c03199d0c0ca54bc1ea90ac0d507274c28abcc4f691ae8b4eaa375087c76a"
dependencies = [
"futures-core",
"futures-sink",
"pin-project",
"spin 0.9.3",
]
[[package]] [[package]]
name = "fnv" name = "fnv"
version = "1.0.7" version = "1.0.7"
@@ -1501,6 +1560,15 @@ version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
[[package]]
name = "hkdf"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437"
dependencies = [
"hmac 0.12.1",
]
[[package]] [[package]]
name = "hmac" name = "hmac"
version = "0.11.0" version = "0.11.0"
@@ -1627,6 +1695,20 @@ dependencies = [
"tokio", "tokio",
] ]
[[package]]
name = "iana-time-zone"
version = "0.1.48"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "237a0714f28b1ee39ccec0770ccb544eb02c9ef2c82bb096230eefcffa6468b0"
dependencies = [
"android_system_properties",
"core-foundation-sys",
"js-sys",
"once_cell",
"wasm-bindgen",
"winapi",
]
[[package]] [[package]]
name = "ident_case" name = "ident_case"
version = "1.0.1" version = "1.0.1"
@@ -1842,7 +1924,7 @@ dependencies = [
"regex", "regex",
"regex-syntax", "regex-syntax",
"string_cache", "string_cache",
"term 0.7.0", "term",
"tiny-keccak", "tiny-keccak",
"unicode-xid 0.2.3", "unicode-xid 0.2.3",
] ]
@@ -1877,20 +1959,9 @@ dependencies = [
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.126" version = "0.2.133"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" checksum = "c0f80d65747a3e43d1596c7c5492d95d5edddaabd45a7fcdb02b95f644164966"
[[package]]
name = "libsqlite3-sys"
version = "0.24.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "898745e570c7d0453cc1fbc4a701eb6c662ed54e8fec8b7d14be137ebeeb9d14"
dependencies = [
"cc",
"pkg-config",
"vcpkg",
]
[[package]] [[package]]
name = "linear-map" name = "linear-map"
@@ -1959,6 +2030,15 @@ dependencies = [
"opaque-debug 0.3.0", "opaque-debug 0.3.0",
] ]
[[package]]
name = "md-5"
version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "66b48670c893079d3c2ed79114e3644b7004df1c361a4e0ad52e2e6940d07c3d"
dependencies = [
"digest 0.10.3",
]
[[package]] [[package]]
name = "memchr" name = "memchr"
version = "2.5.0" version = "2.5.0"
@@ -2076,6 +2156,20 @@ dependencies = [
"memoffset", "memoffset",
] ]
[[package]]
name = "nix"
version = "0.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e322c04a9e3440c327fca7b6c8a63e6890a32fa2ad689db972425f07e0d22abb"
dependencies = [
"autocfg",
"bitflags",
"cfg-if",
"libc",
"memoffset",
"pin-utils",
]
[[package]] [[package]]
name = "nom" name = "nom"
version = "6.1.2" version = "6.1.2"
@@ -2226,9 +2320,9 @@ dependencies = [
[[package]] [[package]]
name = "once_cell" name = "once_cell"
version = "1.12.0" version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
[[package]] [[package]]
name = "opaque-debug" name = "opaque-debug"
@@ -2250,7 +2344,7 @@ checksum = "e7249a699cdeea261ac73f1bf9350777cb867324f44373aafb5a287365bf1771"
dependencies = [ dependencies = [
"base64", "base64",
"byteorder", "byteorder",
"md-5", "md-5 0.9.1",
"sha2 0.9.9", "sha2 0.9.9",
"thiserror", "thiserror",
] ]
@@ -2392,6 +2486,7 @@ name = "patch-db"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"barrage",
"fd-lock-rs", "fd-lock-rs",
"futures", "futures",
"imbl 1.0.1", "imbl 1.0.1",
@@ -2585,15 +2680,15 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
[[package]] [[package]]
name = "prettytable-rs" name = "prettytable-rs"
version = "0.8.0" version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fd04b170004fa2daccf418a7f8253aaf033c27760b5f225889024cf66d7ac2e" checksum = "5f375cb74c23b51d23937ffdeb48b1fbf5b6409d4b9979c1418c1de58bc8f801"
dependencies = [ dependencies = [
"atty", "atty",
"csv", "csv",
"encode_unicode", "encode_unicode",
"lazy_static", "lazy_static",
"term 0.5.2", "term",
"unicode-width", "unicode-width",
] ]
@@ -2830,17 +2925,6 @@ dependencies = [
"bitflags", "bitflags",
] ]
[[package]]
name = "redox_users"
version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d"
dependencies = [
"getrandom 0.1.16",
"redox_syscall 0.1.57",
"rust-argon2 0.8.3",
]
[[package]] [[package]]
name = "redox_users" name = "redox_users"
version = "0.4.3" version = "0.4.3"
@@ -2931,9 +3015,9 @@ dependencies = [
[[package]] [[package]]
name = "reqwest_cookie_store" name = "reqwest_cookie_store"
version = "0.3.0" version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5fc7d9a4063adcdfbb061aa3011b813cce95d3a8990f9ccb5ea85017916a1b0b" checksum = "0568e27f107b933735a07b3f8cb985ecfe3d3ce2f2225f82f10b3750f5981263"
dependencies = [ dependencies = [
"bytes", "bytes",
"cookie", "cookie",
@@ -2959,13 +3043,11 @@ dependencies = [
[[package]] [[package]]
name = "rpassword" name = "rpassword"
version = "6.0.1" version = "7.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2bf099a1888612545b683d2661a1940089f6c2e5a8e38979b2159da876bfd956" checksum = "26b763cb66df1c928432cc35053f8bd4cec3335d8559fc16010017d16b3c1680"
dependencies = [ dependencies = [
"libc", "libc",
"serde",
"serde_json",
"winapi", "winapi",
] ]
@@ -3013,18 +3095,6 @@ dependencies = [
"syn 1.0.98", "syn 1.0.98",
] ]
[[package]]
name = "rust-argon2"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb"
dependencies = [
"base64",
"blake2b_simd 0.5.11",
"constant_time_eq",
"crossbeam-utils",
]
[[package]] [[package]]
name = "rust-argon2" name = "rust-argon2"
version = "1.0.0" version = "1.0.0"
@@ -3032,7 +3102,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b50162d19404029c1ceca6f6980fe40d45c8b369f6f44446fa14bb39573b5bb9" checksum = "b50162d19404029c1ceca6f6980fe40d45c8b369f6f44446fa14bb39573b5bb9"
dependencies = [ dependencies = [
"base64", "base64",
"blake2b_simd 1.0.0", "blake2b_simd",
"constant_time_eq", "constant_time_eq",
"crossbeam-utils", "crossbeam-utils",
] ]
@@ -3238,9 +3308,24 @@ version = "1.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff"
dependencies = [ dependencies = [
"serde",
"serde_with_macros 1.5.2",
]
[[package]]
name = "serde_with"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "368f2d60d049ea019a84dcd6687b0d1e0030fe663ae105039bdf967ed5e6a9a7"
dependencies = [
"base64",
"chrono",
"hex",
"indexmap",
"serde", "serde",
"serde_json", "serde_json",
"serde_with_macros", "serde_with_macros 2.0.1",
"time 0.3.11",
] ]
[[package]] [[package]]
@@ -3249,7 +3334,19 @@ version = "1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082"
dependencies = [ dependencies = [
"darling", "darling 0.13.4",
"proc-macro2 1.0.39",
"quote 1.0.18",
"syn 1.0.98",
]
[[package]]
name = "serde_with_macros"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ccadfacf6cf10faad22bbadf55986bdd0856edfb5d9210aa1dcf1f516e84e93"
dependencies = [
"darling 0.14.1",
"proc-macro2 1.0.39", "proc-macro2 1.0.39",
"quote 1.0.18", "quote 1.0.18",
"syn 1.0.98", "syn 1.0.98",
@@ -3267,6 +3364,19 @@ dependencies = [
"yaml-rust", "yaml-rust",
] ]
[[package]]
name = "serde_yaml"
version = "0.9.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8613d593412a0deb7bbd8de9d908efff5a0cb9ccd8f62c641e7b2ed2f57291d1"
dependencies = [
"indexmap",
"itoa 1.0.2",
"ryu",
"serde",
"unsafe-libyaml",
]
[[package]] [[package]]
name = "sha-1" name = "sha-1"
version = "0.8.2" version = "0.8.2"
@@ -3410,9 +3520,6 @@ name = "spin"
version = "0.9.3" version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c530c2b0d0bf8b69304b39fe2001993e267461948b890cd037d8ad4293fa1a0d" checksum = "c530c2b0d0bf8b69304b39fe2001993e267461948b890cd037d8ad4293fa1a0d"
dependencies = [
"lock_api",
]
[[package]] [[package]]
name = "spki" name = "spki"
@@ -3453,34 +3560,39 @@ checksum = "6b69bf218860335ddda60d6ce85ee39f6cf6e5630e300e19757d1de15886a093"
dependencies = [ dependencies = [
"ahash", "ahash",
"atoi", "atoi",
"base64",
"bitflags", "bitflags",
"byteorder", "byteorder",
"bytes", "bytes",
"chrono", "chrono",
"crc", "crc",
"crossbeam-queue", "crossbeam-queue",
"dirs",
"either", "either",
"event-listener", "event-listener",
"flume",
"futures-channel", "futures-channel",
"futures-core", "futures-core",
"futures-executor",
"futures-intrusive", "futures-intrusive",
"futures-util", "futures-util",
"hashlink", "hashlink",
"hex", "hex",
"hkdf",
"hmac 0.12.1",
"indexmap", "indexmap",
"itoa 1.0.2", "itoa 1.0.2",
"libc", "libc",
"libsqlite3-sys",
"log", "log",
"md-5 0.10.4",
"memchr", "memchr",
"once_cell", "once_cell",
"paste", "paste",
"percent-encoding", "percent-encoding",
"rand 0.8.5",
"rustls", "rustls",
"rustls-pemfile", "rustls-pemfile",
"serde", "serde",
"serde_json",
"sha-1 0.10.0",
"sha2 0.10.2", "sha2 0.10.2",
"smallvec", "smallvec",
"sqlformat", "sqlformat",
@@ -3490,6 +3602,7 @@ dependencies = [
"tokio-stream", "tokio-stream",
"url", "url",
"webpki-roots", "webpki-roots",
"whoami",
] ]
[[package]] [[package]]
@@ -3650,17 +3763,6 @@ dependencies = [
"winapi", "winapi",
] ]
[[package]]
name = "term"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edd106a334b7657c10b7c540a0106114feadeb4dc314513e97df481d5d966f42"
dependencies = [
"byteorder",
"dirs",
"winapi",
]
[[package]] [[package]]
name = "term" name = "term"
version = "0.7.0" version = "0.7.0"
@@ -3756,6 +3858,7 @@ dependencies = [
"itoa 1.0.2", "itoa 1.0.2",
"libc", "libc",
"num_threads", "num_threads",
"serde",
"time-macros", "time-macros",
] ]
@@ -4056,29 +4159,29 @@ dependencies = [
[[package]] [[package]]
name = "trust-dns-client" name = "trust-dns-client"
version = "0.21.2" version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6d9ba1c6079f6f9b4664e482db1700bd53d2ee77b1c9752c1d7a66c0c8bda99" checksum = "6c408c32e6a9dbb38037cece35740f2cf23c875d8ca134d33631cec83f74d3fe"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"data-encoding", "data-encoding",
"futures-channel", "futures-channel",
"futures-util", "futures-util",
"lazy_static", "lazy_static",
"log",
"radix_trie", "radix_trie",
"rand 0.8.5", "rand 0.8.5",
"thiserror", "thiserror",
"time 0.3.11", "time 0.3.11",
"tokio", "tokio",
"tracing",
"trust-dns-proto", "trust-dns-proto",
] ]
[[package]] [[package]]
name = "trust-dns-proto" name = "trust-dns-proto"
version = "0.21.2" version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255d" checksum = "4f7f83d1e4a0e4358ac54c5c3681e5d7da5efc5a7a632c90bb6d6669ddd9bc26"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"cfg-if", "cfg-if",
@@ -4090,34 +4193,33 @@ dependencies = [
"idna", "idna",
"ipnet", "ipnet",
"lazy_static", "lazy_static",
"log",
"rand 0.8.5", "rand 0.8.5",
"smallvec", "smallvec",
"thiserror", "thiserror",
"tinyvec", "tinyvec",
"tokio", "tokio",
"tracing",
"url", "url",
] ]
[[package]] [[package]]
name = "trust-dns-server" name = "trust-dns-server"
version = "0.21.2" version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a395a2e0fd8aac9b4613767a5b4ba4b2040de1b767fa03ace8c9d6f351d60b2d" checksum = "1583cf9f8a359c9f16fdf760b79cb2be3f261b98db8027f81959c7a4f6645e2c"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"bytes", "bytes",
"cfg-if", "cfg-if",
"enum-as-inner", "enum-as-inner",
"env_logger",
"futures-executor", "futures-executor",
"futures-util", "futures-util",
"log",
"serde", "serde",
"thiserror", "thiserror",
"time 0.3.11", "time 0.3.11",
"tokio", "tokio",
"toml", "toml",
"tracing",
"trust-dns-client", "trust-dns-client",
"trust-dns-proto", "trust-dns-proto",
] ]
@@ -4222,6 +4324,12 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e"
[[package]]
name = "unsafe-libyaml"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1e5fa573d8ac5f1a856f8d7be41d390ee973daf97c806b2c1a465e4e1406e68"
[[package]] [[package]]
name = "untrusted" name = "untrusted"
version = "0.7.1" version = "0.7.1"
@@ -4247,6 +4355,15 @@ version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
[[package]]
name = "uuid"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f"
dependencies = [
"getrandom 0.2.6",
]
[[package]] [[package]]
name = "valuable" name = "valuable"
version = "0.1.0" version = "0.1.0"
@@ -4403,6 +4520,17 @@ dependencies = [
"webpki", "webpki",
] ]
[[package]]
name = "whoami"
version = "1.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d6631b6a2fd59b1841b622e8f1a7ad241ef0a46f2d580464ce8140ac94cbd571"
dependencies = [
"bumpalo",
"wasm-bindgen",
"web-sys",
]
[[package]] [[package]]
name = "winapi" name = "winapi"
version = "0.3.9" version = "0.3.9"

View File

@@ -4,8 +4,8 @@
all: compat.tar all: compat.tar
compat.tar: Dockerfile build compat.tar: Dockerfile target/aarch64-unknown-linux-musl/release/compat
DOCKER_CLI_EXPERIMENTAL=enabled docker buildx build --tag start9/x_system/compat --platform=linux/arm64 -o type=docker,dest=compat.tar . DOCKER_CLI_EXPERIMENTAL=enabled docker buildx build --tag start9/x_system/compat --platform=linux/arm64 -o type=docker,dest=compat.tar .
build: $(COMPAT_SRC) target/aarch64-unknown-linux-musl/release/compat: $(COMPAT_SRC)
./build.sh ./build.sh