全志V3s之NFS连接ubuntu22.04

文章描述了Linux内核中遇到的两个问题:一是NFS无法挂载根文件系统,可能是NFS版本不兼容或配置错误;二是初始化过程中因权限不足导致的mkdir、hostname设置和网络启动失败,需调整U-Bootbootargs和文件权限。

1、问题一:

[  100.329728] VFS: Unable to mount root fs via NFS, trying floppy.
[  100.336262] VFS: Cannot open root device "nfs" or unknown-block(2,0): error -6
[  100.343580] Please append a correct "root=" boot option; here are the available partitions:
[  100.351978] b300        15558144 mmcblk0
[  100.351982]  driver: mmcblk
[  100.358777]   b301           32768 mmcblk0p1 0edd73af-01
[  100.358779]
[  100.365591]   b302        15523840 mmcblk0p2 0edd73af-02
[  100.365593]
[  100.372399] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[  100.380655] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.2.0-licheepi-zero+ #4
[  100.387777] Hardware name: Allwinner sun8i Family
[  100.392510] [<c010ed14>] (unwind_backtrace) from [<c010b72c>] (show_stack+0x10/0x14)
[  100.400251] [<c010b72c>] (show_stack) from [<c0734290>] (dump_stack+0x84/0x98)
[  100.407472] [<c0734290>] (dump_stack) from [<c011dddc>] (panic+0x110/0x2fc)
[  100.414431] [<c011dddc>] (panic) from [<c0a0136c>] (mount_block_root+0x1a0/0x288)
[  100.421908] [<c0a0136c>] (mount_block_root) from [<c0a01598>] (mount_root+0x144/0x160)
[  100.429817] [<c0a01598>] (mount_root) from [<c0a01704>] (prepare_namespace+0x150/0x194)
[  100.437815] [<c0a01704>] (prepare_namespace) from [<c074c6e4>] (kernel_init+0x8/0x10c)
[  100.445727] [<c074c6e4>] (kernel_init) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
[  100.453284] Exception stack(0xc3833fb0 to 0xc3833ff8)
[  100.458331] 3fa0:                                     00000000 00000000 00000000 00000000
[  100.466498] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[  100.474664] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[  100.481283] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0) ]---

出现以上问题,主要是NFS版本的问题。
NFS是一种网络文件系统,它允许计算机通过网络共享文件和目录。
在Linux内核中,NFS实现作为内核模块存在,可以在需要时加载。NFS在Linux内核的许多版本中都得到了支持,从2.0版本开始就有了NFSv2,2.2版本开始支持NFSv3,2.6版本开始支持NFSv4。此外,还有一些可选的NFS相关内核模块,例如nfsd(NFS服务器),nfs_acl(NFS访问控制列表)和lockd(NFS文件锁定)。这些模块可以通过编译内核或者作为模块编译后加载到内核中,以提供支持NFS所需的功能。因此,具体使用哪个版本的内核取决于您的应用程序和环境需要的功能和兼容性。
默认情况下,在 Ubuntu 22.04 上禁用 NFS 版本 2。 版本 3 和 4 已启用。为使用NFS进行连接,可以使用以下指令进行设置:

console=ttyS0,115200 root=/dev/nfs nfsroot=XXXXXXXXX:XXXXXXXXX/nfs/rootfs,v3 proto=tcp rw ip=XXXXXXXXXXXXXXXXXXX::eth0:off init=/linuxrc 

xxxxxx改为自己的IP即可。

2、问题二:

[    4.610226] Run /linuxrc as init process
[    4.662182] random: fast init done
mount: you must be root
mount: you must be root
mkdir: can't create directory '/dev/pts': Permission denied
mkdir: can't create directory '/dev/shm': Permission denied
mount: you must be root
hostname: sethostname: Operation not permitted
Starting logging: OK
Initializing random number generator... [    5.634798] random: dd: uninitialized urandom read (512 bytes read)
done.
Starting network: ip: RTNETLINK answers: Operation not permitted
FAIL
can't open /dev/console: Permission denied
can't open /dev/console: Permission denied
can't open /dev/console: Permission denied
can't open /dev/console: Permission denied
can't open /dev/console: Permission denied
can't open /dev/console: Permission denied

出现以上问题,主要是由于初始化时权限不够造成的,可以在U-Boot环境变量的bootargs变量中添加init=/linuxrc 并将linuxrc文件的权限设置为777

Ubuntu 22.04系统上安装K8S集群,以1个master + 2个worker节点为例,可按以下步骤进行: ### 环境信息 | hostname | ip | 备注 | |----------|--------------|--------| | node01 | 10.121.218.50 | master | | node02 | 10.121.218.49 | worker | | node03 | 10.121.218.48 | worker | 要求操作系统为Ubuntu 22.04,内存16GB,CPU 4核,网络能够互访且可访问互联网 [^1]。 ### 准备工作 在三个节点都执行以下操作: ```bash apt-get update && apt-get install -y apt-transport-https curl curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list apt-get update apt-get install -y kubelet kubeadm kubectl ``` ### 初始化master节点 在node01(master节点)上进行初始化操作(此处未给出具体初始化命令,可根据实际情况补充)。 ### 部署其他节点 从master节点复制join命令到其他节点,例如: ```bash scp root@10.121.218.50:/root/join-command.txt /tmp/ ``` 在其他节点(node02和node03)上执行脚本: ```bash ./k8s-ha-setup.sh ``` ### 安装kuboard(可选) ```bash sudo docker run -d \ --restart=unless-stopped \ --name=kuboard \ -p 80:80/tcp \ -p 10081:10081/tcp \ -e KUBOARD_ENDPOINT="http://内网IP:80" \ -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \ -v /root/kuboard-data:/data \ eipwork/kuboard:v3 ``` 也可以使用镜像 `swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3` ,可以更快地完成镜像下载。注意不要使用 `127.0.0.1` 或者 `localhost` 作为内网 IP,Kuboard 不需要和 K8S 在同一个网段,Kuboard Agent 甚至可以通过代理访问 Kuboard Server [^2]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值