在Ubuntu上构建Deepin RISC-V

在Ubuntu上构建Deepin RISC-V

操作步骤

第一步:先搭建RISC-V模拟环境

  • 这里我们使用qemu-system-riscv64来做虚拟机( 包含在qemu-system-misc软件包中 ),需要qemu-img来创建镜像( 包含在qemu-utils软件包中 )
sudo apt install qemu-system-misc qemu-utils
  • 其他 GNU/Linux 发行版本,请另行查找资料安装上,确保 qemu-system-riscv64qemu-img可使用。

第二步:从中科院软件所镜像站下载rootfs

wget https://mirror.iscas.ac.cn/deepin-riscv/deepin-stage1/rootfs.dde.ext4

第三步:新建 QEMU 镜像并分区、格式化

  • rootfs 并非可启动镜像,并且空间有限,故我们应当重新创建一个镜像,将rootfs 的内容全部复制粘贴到上面去。

  • 创建镜像( 这里设定其为8G大小,您可以改为您偏好的镜像大小 )

qemu-img create -f raw deepin.raw 8G
  • 设定变量( 关闭终端后得重新设定 )
LOOP=$(sudo losetup -f)
  • 下面,挂载这个新镜像并分区、格式化
sudo losetup -P $LOOP deepin.raw
sudo fdisk $LOOP
sudo mkfs.ext4 "$LOOP"p1

当进入fdisk交互界面时,先按g并回车( 在镜像中建立GPT分区表 ),再按n并不断回车直到回到命令交互界面为止( 在镜像中新建分区,大小充满整个镜像 ),最后按w并回车( 将更改写入镜像 )

  • 最后,挂载新分区
sudo mkdir /mnt/deepin
sudo mount "$LOOP"p1 /mnt/deepin

第四步:拷贝文件到新镜像

  • 挂载老镜像
sudo mkdir /mnt/deepin-old
sudo mount rootfs.dde.ext4 /mnt/deepin-old
  • 拷贝所有文件到新镜像中
sudo cp -r /mnt/deepin-old/* /mnt/deepin
  • 然后,清除root用户密码
sudo nano /mnt/deepin/etc/shadow
  • 将第一行改为
root::19292:0:99999:7:::
  • 然后,添加软件源
echo "deb [trusted=yes] https://mirror.iscas.ac.cn/deepin-riscv/deepin-stage1/ beige main" | sudo tee /mnt/deepin/etc/apt/source.list &> /dev/null
  • 最后,取消挂载
sudo umount "$LOOP"p1
sudo umount rootfs.dde.ext4
sudo losetup -D

第五步:准备内核并启动镜像

  • 我们采用OpenEuler的内核
wget https://repo.openeuler.org/openEuler-preview/RISC-V/Image/fw_payload_oe.elf
  • 生成脚本
cat > start_deepin.sh << "EOF"
#!/bin/sh
THREADS=8 # 虚拟机线程数,可自行修改
MEMORY=8G # 虚拟机RAM大小,可自行修改
qemu-system-riscv64 \
  -nographic -machine virt \
  -smp $THREADS -m $MEMORY \
  -device virtio-vga \
  -kernel fw_payload_oe.elf \
  -drive file=deepin.raw,if=none,id=hd0 \
  -object rng-random,filename=/dev/urandom,id=rng0 \
  -device virtio-rng-device,rng=rng0 \
  -device virtio-blk-device,drive=hd0 \
  -device virtio-net-device,netdev=usernet \
  -netdev user,id=usernet \
  -bios none \
  -device qemu-xhci -usb -device usb-kbd -device usb-tablet \
  -append "root=/dev/vda1 rw console=ttyS0"
EOF
sudo chmod +x start_deepin.sh

第六步:启动并配置虚拟系统

  • 使用脚本启动虚拟机
./start_deepin.sh
  • 登入时无需输入密码( 密码被清除 ),建议给root设置密码
passwd root
  • 更新本地软件源缓存,安装neofetch
apt-get update && apt-get install neofetch
  • 经过漫长的等待( RISC-V 模拟环境速度很慢,请耐心等待 ),来一个命令庆祝成功!( 建议nano一下并立即退出,给控制台留下空白,效果更佳 )
neofetch
  • 效果图 😃
    在这里插入图片描述
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值