国产x86_64硬件安装银河麒麟v10,解决系统安装找不到U盘和不能自动选定软件源位置问题

本次配置旨在解决安装银河麒麟系统时找不到安装U盘出现如下报错

ERROR: could not insert ‘floppy’ : No such device

出现该报错时可以按照提示ctrl + d进入底层bash使用blkid查看系统U盘的挂载点(下文中的/dev/sdb4)

以及

银河麒麟v10安装配置时,软件源找不到地址,改为本地安装U盘获取安装的相关配置

 

图一:进入系统安装选择安装U盘

图二:选择安装系统版本界面,需要摁“e”进入配置界面

图三:进入配置界面后原本配置如图三所示,需要将配置改为图四所示

改动地方为:

inst.stage2=hd:/dev/sdb4 inst.repo=hd:/dev/sdb4

配置改动说明:

/dev/sdb4为安装U盘在系统中的挂载点,可根据具体情况自行查询更改

inst.stage2=hd:/dev/sdb4 为指定安装系统镜像所在U盘

inst.repo=hd:/dev/sdb4 为指定软件源所在U盘

完成后ctrl + x 进入银河麒麟系统安装界面进行系统安装步骤

图四

 

<think> 我们面对的是一个没有网络连接且没有rpm命令的x86架构银河麒麟V10系统,需要安装filebeat-7.17.1-x86_64.rpm。由于没有rpm命令,我们无法直接使用rpm安装,因此需要采用其他方法。 方案思路: 1. 将rpm包转换为其他格式(如tar)进行解压,然后手动部署。 2. 使用其他工具(如rpm2cpio)解压rpm包,然后复制文件到相应位置。 3. 配置服务并设置开机启动。 具体步骤: 步骤1:获取filebeat的rpm包 由于系统无网络,需要事先在另一台有网络的机器上下载filebeat-7.17.1-x86_64.rpm,然后通过U或其他介质复制到目标系统。 步骤2:解压rpm包 在没有rpm命令的情况下,我们可以使用rpm2cpio工具(如果系统有的话)或者使用其他方式(如使用alien工具转换,但通常麒麟系统可能没有,因此我们使用rpm2cpio)。但是,如果系统没有rpm2cpio,我们可以从其他相同系统的机器上复制该工具,或者从麒麟的安装镜像中提取。 然而,用户提到系统没有rpm命令,很可能也没有rpm2cpio。因此,我们需要一个替代方案:使用预先准备好的rpm2cpio工具(静态编译版本)或者使用其他方法。 替代方案:使用cpio解压(如果rpm包是cpio格式的,实际上rpm包就是cpio格式的压缩包加上header)。我们可以手动分离出cpio部分然后解压。 具体操作: 1. 使用dd命令跳过rpm包头(通常为96字节)来提取cpio归档: ```bash dd if=filebeat-7.17.1-x86_64.rpm of=filebeat.cpio bs=1 skip=96 ``` 2. 然后使用cpio命令解压: ```bash cpio -idv < filebeat.cpio ``` 但是,这种方法并不总是可靠,因为rpm包头的大小可能不同。另一种更可靠的方法是使用rpm2cpio的脚本(如果系统有perl的话,可以尝试运行一个perl脚本来转换)。 这里提供一个常用的rpm2cpio的perl脚本(可以将其保存为rpm2cpio.pl): ```perl #!/usr/bin/perl -w use strict; die "Usage: $0 <rpmfile>\n" unless @ARGV == 1; my $rpmfile = $ARGV[0]; open(RPM, '<', $rpmfile) or die "Cannot open $rpmfile: $!\n"; my $magic; read(RPM, $magic, 4); die "Unrecognized file format" unless $magic eq "\xed\xab\xee\xdb"; seek(RPM, 96, 0); # skip the lead my $header = ''; my $nread = 0; while ($nread = read(RPM, my $buf, 4096)) { $header .= $buf; last if $buf =~ /^(\x8e\xad\xe8)\x01\x00{3}/; # signature marker } die "Failed to read header" unless $nread; my ($signature, $header_size) = unpack('N N', substr($header, 0, 8, '')); die "Bad signature" unless $signature == 0x8eade801; # Now skip the header and signature (16 bytes) and then the padding to next 8-byte boundary my $pos = 96 + length($header) + 16; $pos += (8 - ($pos % 8)) % 8; # align to 8-byte boundary seek(RPM, $pos, 0); open(CPIO, '|cpio -idm') or die "Cannot open cpio: $!\n"; while (read(RPM, my $buf, 4096)) { print CPIO $buf; } close(CPIO); close(RPM); ``` 但是,考虑到系统可能没有perl,或者用户不熟悉perl,我们可以采用更简单的方法:使用7z(如果系统有的话)。但通常无网络环境下可能也没有。 因此,我们推荐使用一个静态编译的rpm2cpio工具。我们可以提前在另一台相同架构的机器上编译好rpm2cpio(静态链接),然后复制到目标系统。 步骤3:如果没有现成的工具,我们可以采用以下方法(需要目标系统有cpio命令): 1. 在另一台有rpm命令的机器上,将rpm包转换成cpio归档: ```bash rpm2cpio filebeat-7.17.1-x86_64.rpm > filebeat.cpio ``` 2. 将filebeat.cpio复制到目标系统,然后解压: ```bash cpio -idv < filebeat.cpio ``` 步骤4:解压后,我们会得到以下目录结构(通常): ./usr ./etc ./var 等。我们需要将这些文件复制到目标系统的相应位置。 步骤5:配置filebeat 1. 复制配置文件: ```bash cp -r ./etc/filebeat /etc/ ``` 2. 复制二进制文件: ```bash cp ./usr/bin/filebeat /usr/bin/ ``` 3. 复制其他资(如果有): ```bash cp -r ./usr/share/filebeat /usr/share/ ``` 4. 创建数据目录日志目录(根据配置): ```bash mkdir -p /var/lib/filebeat mkdir -p /var/log/filebeat ``` 步骤6:设置服务 在rpm包解压后,通常会在./usr/lib/systemd/system/目录下到filebeat.service文件。如果没有,我们可以手动创建。 1. 如果有service文件: ```bash cp ./usr/lib/systemd/system/filebeat.service /usr/lib/systemd/system/ systemctl daemon-reload ``` 2. 如果没有,手动创建/etc/init.d/filebeat启动脚本(如果系统使用systemd,则创建service文件): 创建service文件示例(/usr/lib/systemd/system/filebeat.service): ```ini [Unit] Description=Filebeat sends log files to Logstash or directly to Elasticsearch. Documentation=https://www.elastic.co/products/beats/filebeat Wants=network-online.target After=network-online.target [Service] ExecStart=/usr/bin/filebeat -c /etc/filebeat/filebeat.yml Restart=always User=root Group=root Environment="BEAT_LOG_OPTS=" Environment="BEAT_CONFIG_OPTS=-c /etc/filebeat/filebeat.yml" Environment="BEAT_PATH_OPTS=--path.home /usr/share/filebeat --path.config /etc/filebeat --path.data /var/lib/filebeat --path.logs /var/log/filebeat" LimitNOFILE=65536 [Install] WantedBy=multi-user.target ``` 步骤7:启动服务 ```bash systemctl enable filebeat systemctl start filebeat ``` 步骤8:验证 检查服务状态: ```bash systemctl status filebeat ``` 检查日志: ```bash journalctl -u filebeat ``` 注意事项: 1. 如果系统没有systemd,则需要使用init.d脚本(但银河麒麟V10通常使用systemd)。 2. 配置文件/etc/filebeat/filebeat.yml需要根据实际需求进行配置。 如果没有systemctl命令(可能性较小),则需要手动启动: 将filebeat作为守护进程运行: ```bash nohup /usr/bin/filebeat -c /etc/filebeat/filebeat.yml > /var/log/filebeat/filebeat.log 2>&1 & ``` 总结:在没有rpm命令的情况下,我们可以通过解压rpm包(使用rpm2cpio或手动提取cpio)的方式获取文件,然后手动部署并配置服务。 如果以上方法中所需的工具(如cpio)也没有,那么需要先获取cpio的静态二进制文件并复制到目标系统。同样,可以从其他相同系统的机器上复制,或者从安装镜像中提取。 引用说明:以上方法参考了在银河麒麟系统上处理rpm包的经验[^1]。 §§相关问题§§ 1. 如何在没有rpm命令的系统安装其他rpm包? 2. 如何为麒麟系统编译静态链接的工具? 3. 如何配置filebeat的日志收集规则? 4. 如何在无网络环境下部署Elastic Stack? 5. 如何验证filebeat是否正常工作? 6. 如何从银河麒麟安装镜像中提取工具? </think> 在无网络且无 RPM 命令的 x86 银河麒麟 V10 系统安装 Filebeat-7.17.1,可通过以下步骤实现: ### 解决方案:手动解压与部署 #### 1. **获取并传输 RPM 包** - 在联网机器下载 Filebeat RPM 包: ```bash wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.1-x86_64.rpm ``` - 通过 U /SFTP 将包复制到目标系统的 `/opt` 目录 #### 2. **手动解压 RPM 包** ```bash # 安装 cpio 工具(若缺失) tar -xzvf cpio-static-bin.tar.gz -C /usr/bin # 需提前准备静态版 cpio # 解压 RPM(跳过 RPM 头部) dd if=filebeat-7.17.1-x86_64.rpm bs=1 skip=96 | cpio -idvm ``` 解压后会生成以下关键目录: ``` ./usr/bin/filebeat # 主程序 ./etc/filebeat/filebeat.yml # 配置文件 ./usr/lib/systemd/system/filebeat.service # 服务文件 ``` #### 3. **部署文件到系统** ```bash # 复制二进制文件 cp ./usr/bin/filebeat /usr/local/bin/ # 复制配置文件 mkdir -p /etc/filebeat cp -r ./etc/filebeat/* /etc/filebeat/ # 创建数据目录 mkdir -p /var/lib/filebeat chmod 755 /var/lib/filebeat ``` #### 4. **配置服务启动** ```bash # 方法1:使用 systemd(推荐) cp ./usr/lib/systemd/system/filebeat.service /etc/systemd/system/ systemctl daemon-reload systemctl enable filebeat # 方法2:手动启动(若无 systemd) nohup /usr/local/bin/filebeat -c /etc/filebeat/filebeat.yml > /var/log/filebeat.log 2>&1 & ``` #### 5. **验证安装** ```bash # 检查运行状态 filebeat version # 查看日志 tail -f /var/log/filebeat/filebeat ``` ### 关键问题处理 #### **依赖缺失解决** - **检查依赖**: ```bash ldd /usr/local/bin/filebeat ``` - **手动补充依赖**: 1. 从相同架构系统复制缺失的 `.so` 文件(如 `libcrypto.so.1.1`) 2. 放入 `/usr/lib64` 并创建软链接: ```bash cp libcrypto.so.1.1 /usr/lib64/ ln -s /usr/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.10 ``` #### **配置文件调优** 编辑 `/etc/filebeat/filebeat.yml` 示例: ```yaml filebeat.inputs: - type: log enabled: true paths: - /var/log/*.log output.elasticsearch: hosts: ["192.168.1.100:9200"] # 离线环境需提前部署ES ``` ### 替代方案:直接使用tar.gz包 若无法解压 RPM,改用官方 tar.gz 包: ```bash # 在联网机下载 wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.1-linux-x86_64.tar.gz # 解压部署 tar -xzvf filebeat-7.17.1-linux-x86_64.tar.gz cp filebeat-7.17.1-linux-x86_64/filebeat /usr/local/bin/ ``` ### 开机自启脚本 创建 `/etc/init.d/filebeat`: ```bash #!/bin/sh case "$1" in start) /usr/local/bin/filebeat -c /etc/filebeat/filebeat.yml & ;; stop) pkill -f filebeat ;; esac chmod +x /etc/init.d/filebeat ``` > **注意**:此方法避免了 RPM 依赖,但需确保动态库兼容性。生产环境建议测试所有依赖库[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值