335 lines
13 KiB
Diff
335 lines
13 KiB
Diff
From 3d3049e055cd56b4e72f44e212d7b2c5392975d4 Mon Sep 17 00:00:00 2001
|
|
From: wangyueliang <wangyueliang@kylinos.cn>
|
|
Date: Wed, 27 Dec 2023 11:28:19 +0800
|
|
Subject: [PATCH] adapt to NestOS patch
|
|
|
|
---
|
|
src/bin/rdcore/rootmap.rs | 2 +-
|
|
src/cmdline/install.rs | 15 +++++------
|
|
src/cmdline/mod.rs | 54 ++++++++++++++++++++-------------------
|
|
src/install.rs | 3 +++
|
|
src/iso9660.rs | 3 +++
|
|
src/live/customize.rs | 2 +-
|
|
src/live/embed.rs | 2 +-
|
|
src/live/mod.rs | 2 +-
|
|
src/main.rs | 5 ++--
|
|
src/source.rs | 2 +-
|
|
10 files changed, 49 insertions(+), 41 deletions(-)
|
|
|
|
diff --git a/src/bin/rdcore/rootmap.rs b/src/bin/rdcore/rootmap.rs
|
|
index fbe85b3..c305f16 100644
|
|
--- a/src/bin/rdcore/rootmap.rs
|
|
+++ b/src/bin/rdcore/rootmap.rs
|
|
@@ -52,7 +52,7 @@ pub fn rootmap(config: RootmapConfig) -> Result<()> {
|
|
// systemd-fstab-generator, and it defaults to read-only otherwise
|
|
kargs.push("rw".into());
|
|
|
|
- let rootflags = runcmd_output!("coreos-rootflags", &config.root_mount)?;
|
|
+ let rootflags = runcmd_output!("nestos-rootflags", &config.root_mount)?;
|
|
let rootflags = rootflags.trim();
|
|
if !rootflags.is_empty() {
|
|
kargs.push(format!("rootflags={}", rootflags));
|
|
diff --git a/src/cmdline/install.rs b/src/cmdline/install.rs
|
|
index e04901e..f0eed2e 100644
|
|
--- a/src/cmdline/install.rs
|
|
+++ b/src/cmdline/install.rs
|
|
@@ -74,10 +74,10 @@ pub struct InstallConfig {
|
|
pub config_file: Vec<String>,
|
|
|
|
// ways to specify the image source
|
|
- /// Fedora CoreOS stream
|
|
+ /// NestOS release stream
|
|
///
|
|
- /// The name of the Fedora CoreOS stream to install, such as "stable",
|
|
- /// "testing", or "next".
|
|
+ /// The name of the NestOS release stream to install,
|
|
+ /// temporarily closed before NestOS Stream is ready.
|
|
#[clap(short, long, value_name = "name")]
|
|
#[clap(conflicts_with = "image-file", conflicts_with = "image-url")]
|
|
pub stream: Option<String>,
|
|
@@ -134,7 +134,7 @@ pub struct InstallConfig {
|
|
/// Additional kernel args for the first boot
|
|
// This used to be for configuring networking from the cmdline, but it has
|
|
// been obsoleted by the nicer `--copy-network` approach. We still need it
|
|
- // for now though. It's used at least by `coreos-installer.service`.
|
|
+ // for now though. It's used at least by `nestos-installer.service`.
|
|
#[serde(skip)]
|
|
#[clap(long, hide = true, value_name = "args")]
|
|
pub firstboot_args: Option<String>,
|
|
@@ -200,16 +200,15 @@ pub struct InstallConfig {
|
|
#[serde(skip_serializing_if = "is_default")]
|
|
#[clap(long, help_heading = ADVANCED)]
|
|
pub insecure_ignition: bool,
|
|
- /// Base URL for CoreOS stream metadata
|
|
+ /// Base URL for NestOS release stream metadata
|
|
///
|
|
- /// Override the base URL for fetching CoreOS stream metadata.
|
|
- /// The default is "https://builds.coreos.fedoraproject.org/streams/".
|
|
+ /// Temporarily closed before NestOS Stream is ready.
|
|
#[serde_as(as = "Option<DisplayFromStr>")]
|
|
#[clap(long, value_name = "URL", help_heading = ADVANCED)]
|
|
pub stream_base_url: Option<Url>,
|
|
/// Don't clear partition table on error
|
|
///
|
|
- /// If installation fails, coreos-installer normally clears the
|
|
+ /// If installation fails, nestos-installer normally clears the
|
|
/// destination's partition table to prevent booting from invalid
|
|
/// boot media. Skip clearing the partition table as a debugging aid.
|
|
#[serde(skip_serializing_if = "is_default")]
|
|
diff --git a/src/cmdline/mod.rs b/src/cmdline/mod.rs
|
|
index 6fcfe8f..b990232 100644
|
|
--- a/src/cmdline/mod.rs
|
|
+++ b/src/cmdline/mod.rs
|
|
@@ -34,7 +34,9 @@ pub use self::types::*;
|
|
// Args are listed in --help in the order declared in these structs/enums.
|
|
// Please keep the entire help text to 80 columns.
|
|
|
|
-/// Installer for Fedora CoreOS and RHEL CoreOS
|
|
+/// Installer for NestOS.
|
|
+///
|
|
+/// NestOS is a Variant in openEuler from Fedora CoreOS.
|
|
#[derive(Debug, Parser)]
|
|
#[clap(version)]
|
|
#[clap(global_setting(AppSettings::DeriveDisplayOrder))]
|
|
@@ -42,16 +44,16 @@ pub use self::types::*;
|
|
#[clap(disable_help_subcommand = true)]
|
|
#[clap(help_expected = true)]
|
|
pub enum Cmd {
|
|
- /// Install Fedora CoreOS or RHEL CoreOS
|
|
+ /// Install NestOS
|
|
Install(InstallConfig),
|
|
- /// Download a CoreOS image
|
|
- Download(DownloadConfig),
|
|
- /// List available images in a Fedora CoreOS stream
|
|
- ListStream(ListStreamConfig),
|
|
- /// Commands to manage a CoreOS live ISO image
|
|
+ /// Download a NestOS image
|
|
+ //Download(DownloadConfig),
|
|
+ /// List available images in a NestOS release stream
|
|
+ //ListStream(ListStreamConfig),
|
|
+ /// Commands to manage a NestOS live ISO image
|
|
#[clap(subcommand)]
|
|
Iso(IsoCmd),
|
|
- /// Commands to manage a CoreOS live PXE image
|
|
+ /// Commands to manage a NestOS live PXE image
|
|
#[clap(subcommand)]
|
|
Pxe(PxeCmd),
|
|
/// Metadata packing commands used when building an OS image
|
|
@@ -76,21 +78,21 @@ pub enum IsoCmd {
|
|
// deprecated
|
|
#[clap(hide = true)]
|
|
Remove(IsoRemoveConfig),
|
|
- /// Customize a CoreOS live ISO image
|
|
+ /// Customize a NestOS live ISO image
|
|
Customize(IsoCustomizeConfig),
|
|
- /// Embed an Ignition config in a CoreOS live ISO image
|
|
+ /// Embed an Ignition config in a NestOS live ISO image
|
|
#[clap(subcommand)]
|
|
Ignition(IsoIgnitionCmd),
|
|
- /// Embed network settings in a CoreOS live ISO image
|
|
+ /// Embed network settings in a NestOS live ISO image
|
|
#[clap(subcommand)]
|
|
Network(IsoNetworkCmd),
|
|
- /// Modify kernel args in a CoreOS live ISO image
|
|
+ /// Modify kernel args in a NestOS live ISO image
|
|
#[clap(subcommand)]
|
|
Kargs(IsoKargsCmd),
|
|
- /// Commands to extract files from a CoreOS live ISO image
|
|
+ /// Commands to extract files from a NestOS live ISO image
|
|
#[clap(subcommand)]
|
|
Extract(IsoExtractCmd),
|
|
- /// Restore a CoreOS live ISO image to default settings
|
|
+ /// Restore a NestOS live ISO image to default settings
|
|
Reset(IsoResetConfig),
|
|
}
|
|
|
|
@@ -128,7 +130,7 @@ pub enum IsoKargsCmd {
|
|
pub enum IsoExtractCmd {
|
|
/// Extract PXE files from an ISO image
|
|
Pxe(IsoExtractPxeConfig),
|
|
- /// Extract a minimal ISO from a CoreOS live ISO image
|
|
+ /// Extract a minimal ISO from a NestOS live ISO image
|
|
MinimalIso(IsoExtractMinimalIsoConfig),
|
|
}
|
|
|
|
@@ -164,11 +166,11 @@ pub enum PxeNetworkCmd {
|
|
// users shouldn't be interacting with this command normally
|
|
#[clap(hide = true)]
|
|
pub enum PackCmd {
|
|
- /// Create osmet file from CoreOS block device
|
|
+ /// Create osmet file from NestOS block device
|
|
Osmet(PackOsmetConfig),
|
|
- /// Pack a minimal ISO into a CoreOS live ISO image
|
|
+ /// Pack a minimal ISO into a NestOS live ISO image
|
|
MinimalIso(PackMinimalIsoConfig),
|
|
- /// Generate man pages for coreos-installer
|
|
+ /// Generate man pages for nestos-installer
|
|
#[cfg(feature = "docgen")]
|
|
Man(PackManConfig),
|
|
/// Generate example config file for install subcommand
|
|
@@ -190,7 +192,7 @@ pub enum DevCmd {
|
|
|
|
#[derive(Debug, Parser)]
|
|
pub enum DevShowCmd {
|
|
- /// Inspect the CoreOS live ISO image
|
|
+ /// Inspect the NestOS live ISO image
|
|
Iso(DevShowIsoConfig),
|
|
/// Show the contents of an initrd image
|
|
Initrd(DevShowInitrdConfig),
|
|
@@ -208,13 +210,13 @@ pub enum DevExtractCmd {
|
|
|
|
#[derive(Debug, Parser)]
|
|
pub struct DownloadConfig {
|
|
- /// Fedora CoreOS stream
|
|
+ /// NestOS release stream
|
|
#[clap(short, long, value_name = "name", default_value = "stable")]
|
|
pub stream: String,
|
|
/// Target CPU architecture
|
|
#[clap(short, long, value_name = "name", default_value_t)]
|
|
pub architecture: DefaultedString<Architecture>,
|
|
- /// Fedora CoreOS platform name
|
|
+ /// NestOS platform name
|
|
#[clap(short, long, value_name = "name", default_value = "metal")]
|
|
pub platform: String,
|
|
/// Image format
|
|
@@ -232,7 +234,7 @@ pub struct DownloadConfig {
|
|
/// Skip signature verification
|
|
#[clap(long)]
|
|
pub insecure: bool,
|
|
- /// Base URL for Fedora CoreOS stream metadata
|
|
+ /// Base URL for NestOS release stream metadata
|
|
#[clap(long, value_name = "URL")]
|
|
pub stream_base_url: Option<Url>,
|
|
/// Fetch retries, or "infinite"
|
|
@@ -242,10 +244,10 @@ pub struct DownloadConfig {
|
|
|
|
#[derive(Debug, Parser)]
|
|
pub struct ListStreamConfig {
|
|
- /// Fedora CoreOS stream
|
|
+ /// NestOS release stream
|
|
#[clap(short, long, value_name = "name", default_value = "stable")]
|
|
pub stream: String,
|
|
- /// Base URL for Fedora CoreOS stream metadata
|
|
+ /// Base URL for NestOS release stream metadata
|
|
#[clap(long, value_name = "URL")]
|
|
pub stream_base_url: Option<Url>,
|
|
}
|
|
@@ -326,7 +328,7 @@ pub struct CommonCustomizeConfig {
|
|
pub post_install: Vec<String>,
|
|
/// Installer config file
|
|
///
|
|
- /// Automatically run coreos-installer and apply the specified installer
|
|
+ /// Automatically run nestos-installer and apply the specified installer
|
|
/// config file. Config files are applied in the order that they are
|
|
/// specified.
|
|
#[clap(long, value_name = "path")]
|
|
@@ -634,7 +636,7 @@ pub struct PxeCustomizeConfig {
|
|
/// Output file
|
|
#[clap(short, long, value_name = "path")]
|
|
pub output: String,
|
|
- /// CoreOS live initramfs image
|
|
+ /// NestOS live initramfs image
|
|
#[clap(value_name = "path")]
|
|
pub input: String,
|
|
}
|
|
diff --git a/src/install.rs b/src/install.rs
|
|
index 745651d..42363a0 100644
|
|
--- a/src/install.rs
|
|
+++ b/src/install.rs
|
|
@@ -122,6 +122,9 @@ pub fn install(config: InstallConfig) -> Result<()> {
|
|
None => bail!("cannot perform offline install; metadata missing"),
|
|
}
|
|
} else {
|
|
+ //Temporarily closed before NestOS Stream is ready.
|
|
+ bail!("The --stream is not currently supported until NestOS release stream is ready.");
|
|
+
|
|
// For now, using --stream automatically will cause a download. In the future, we could
|
|
// opportunistically use osmet if the version and stream match an osmet file/the live ISO.
|
|
|
|
diff --git a/src/iso9660.rs b/src/iso9660.rs
|
|
index 531d133..01e347a 100644
|
|
--- a/src/iso9660.rs
|
|
+++ b/src/iso9660.rs
|
|
@@ -127,6 +127,9 @@ impl IsoFs {
|
|
.with_context(|| format!("listing directory {}", dir.name))?
|
|
{
|
|
let record = record?;
|
|
+ if name == "OPENEULER"{
|
|
+ return Ok(Some(record))
|
|
+ }
|
|
match &record {
|
|
DirectoryRecord::Directory(d) if d.name == name => return Ok(Some(record)),
|
|
DirectoryRecord::File(f) if f.name == name => return Ok(Some(record)),
|
|
diff --git a/src/live/customize.rs b/src/live/customize.rs
|
|
index 5aee32b..04ed919 100644
|
|
--- a/src/live/customize.rs
|
|
+++ b/src/live/customize.rs
|
|
@@ -30,7 +30,7 @@ use super::util::filename;
|
|
|
|
pub(super) const INITRD_FEATURES_PATH: &str = "etc/nestos/features.json";
|
|
|
|
-const COREOS_ISO_FEATURES_PATH: &str = "COREOS/FEATURES.JSO";
|
|
+const COREOS_ISO_FEATURES_PATH: &str = "NESTOS/FEATURES.JSO";
|
|
|
|
/// CoreOS feature flags in /etc/coreos/features.json in the live initramfs
|
|
/// and /coreos/features.json in the live ISO. Written by
|
|
diff --git a/src/live/embed.rs b/src/live/embed.rs
|
|
index cbfdf95..334e860 100644
|
|
--- a/src/live/embed.rs
|
|
+++ b/src/live/embed.rs
|
|
@@ -42,7 +42,7 @@ const COREOS_KARG_EMBED_AREA_HEADER_MAGIC: &[u8] = b"coreKarg";
|
|
const COREOS_KARG_EMBED_AREA_HEADER_SIZE: u64 = 72;
|
|
const COREOS_KARG_EMBED_AREA_HEADER_MAX_OFFSETS: usize = 6;
|
|
const COREOS_KARG_EMBED_AREA_MAX_SIZE: usize = 2048;
|
|
-const COREOS_KARG_EMBED_INFO_PATH: &str = "COREOS/KARGS.JSO";
|
|
+const COREOS_KARG_EMBED_INFO_PATH: &str = "NESTOS/KARGS.JSO";
|
|
|
|
pub(super) struct IsoConfig {
|
|
initrd: InitrdEmbedArea,
|
|
diff --git a/src/live/mod.rs b/src/live/mod.rs
|
|
index f80dcbc..051dae7 100644
|
|
--- a/src/live/mod.rs
|
|
+++ b/src/live/mod.rs
|
|
@@ -39,7 +39,7 @@ use self::util::*;
|
|
const INITRD_LIVE_STAMP_PATH: &str = "etc/nestos-live-initramfs";
|
|
const COREOS_ISO_PXEBOOT_DIR: &str = "IMAGES/PXEBOOT";
|
|
const COREOS_ISO_ROOTFS_IMG: &str = "IMAGES/PXEBOOT/ROOTFS.IMG";
|
|
-const COREOS_ISO_MINISO_FILE: &str = "COREOS/MINISO.DAT";
|
|
+const COREOS_ISO_MINISO_FILE: &str = "NESTOS/MINISO.DAT";
|
|
|
|
lazy_static! {
|
|
static ref ALL_GLOB: GlobMatcher = GlobMatcher::new(&["*"]).unwrap();
|
|
diff --git a/src/main.rs b/src/main.rs
|
|
index 539b121..09849f8 100644
|
|
--- a/src/main.rs
|
|
+++ b/src/main.rs
|
|
@@ -21,9 +21,10 @@ use cmdline::*;
|
|
|
|
fn main() -> Result<()> {
|
|
match Cmd::parse() {
|
|
- Cmd::Download(c) => download::download(c),
|
|
+ //Temporarily closed Download and ListStream before NestOS Stream is ready.
|
|
+ //Cmd::Download(c) => download::download(c),
|
|
Cmd::Install(c) => install::install(c),
|
|
- Cmd::ListStream(c) => source::list_stream(c),
|
|
+ //Cmd::ListStream(c) => source::list_stream(c),
|
|
Cmd::Iso(c) => match c {
|
|
IsoCmd::Customize(c) => live::iso_customize(c),
|
|
IsoCmd::Embed(c) => live::iso_embed(c),
|
|
diff --git a/src/source.rs b/src/source.rs
|
|
index cef04ff..a7d08f6 100644
|
|
--- a/src/source.rs
|
|
+++ b/src/source.rs
|
|
@@ -33,7 +33,7 @@ use crate::util::set_die_on_sigpipe;
|
|
const HTTP_COMPLETION_TIMEOUT: Duration = Duration::from_secs(4 * 60 * 60);
|
|
|
|
/// Default base URL to Fedora CoreOS streams metadata.
|
|
-const DEFAULT_STREAM_BASE_URL: &str = "https://builds.coreos.fedoraproject.org/streams/";
|
|
+const DEFAULT_STREAM_BASE_URL: &str = "https://nestos.org.cn/NestOS-release/streams/";
|
|
|
|
/// Directory in which we look for osmet files.
|
|
const OSMET_FILES_DIR: &str = "/run/nestos-installer/osmet";
|
|
--
|
|
2.25.1
|
|
|