构建最小文件系统

参考官方的文档

https://wiki.gentoo.org/wiki/Handbook:MIPS/Installation/Kernel/zh-cn

在构建好的最小文件系统时,首先我要将原来的文件系统进行备份,我只是用tar命令将我构建好的文件系统进行打包,但是出现了错误。
***** file changed as we read it
并且停止了继续压缩
解决办法:
在tar的命令中加入参数:–warning=no-file-changed

tar --warning=no-file-changed -jcvf /opt/mips64el.tar.bz2 .

其实,只是在解压时,要将相关文件进行卸载。上面的做法过于复杂,不过也是增加了一种处理办法。
后面的配置和我在x86上安装Gentoo的方法大致相同,但是有些细节的地方需要注意。

安装基本系统

在这之前一些挂载的操作和在x86上的挂载方式相同。
分区及挂载凡是如下

mount dev/sdb2 /media/dslab/gentoo
mkdir /media/dslab/gentoo/boot //因为解压后的文件中并不包含 boot文件,所以在这创建一个
mount /dev/sdb1  /media/dslab/gentoo/boot

首先选择镜像站点
因为我的安装采用的是兰州大学的镜像
https://mirror.lzu.edu.cn
我下面已经将相关的文件解压到/media/dslab/gentoo
我所有的操作是在dslab下进行操作的,所以和官方的文档有些出入。
故这里不用选,我把命令贴在下面

mirrorselect -i -o >> gentoo/etc/portage/make.conf

Gentoo ebuild的软件仓库
查找对应目录发现配置文件其实并不存在

mkdir --parents gentoo/etc/portage/repos.conf
cp gentoo/usr/share/portage/config/repos.conf gentoo/etc/portage/repos.conf/gentoo.conf
//复制portage 配置的仓库配置文件

复制DNS信息(保证在chroot中有网)因为我之前chroot进去过并ping baidu.com 是由网络的,所以我并没有进行该步骤的配置

cp --dereference /etc/resolv.conf gentoo/etc/

下面挂载文件系统(与x86相同)

mount -t proc /proc gentoo/proc
mount --rbind /sys gentoo/sys
mount --make-rslave gentoo/sys
mount --rbind /dev gentoo/dev
mount --make-rslave gentoo/dev

注意官方文档中有一个补充,所以这里还是要进行一步这个操作

test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
同时确保设置了权限为1777:
chmod 1777 /dev/shm


之后chroot

chroot gentoo /bin/bash
source /etc/profile
export PS1="(chroot)  $PS1"

之后进入chroot之后
我为了方便操作,写了一个脚本来执行一些必要操作

vim init.sh
//ifconfig enp5s0 down
//ifconfig enp5s0 up
//dhcpcd
sh init.sh

但是当我执行执行上述脚本时,ping baidu.com 显示
ping network is unreachable
解决办法
先执行

route //检查当前路由状态
只有一行,发现没有网关
route add default gw 192.168.3.1

添加完成之后,查看route,发现多了第二行,说明已经添加上了,再次ping baidu.com
发现有网络。

emerge-webrsync
eselect profile list //选择正确的配置文件
emerge --ask --verbose --update --deep --newuse @world

后面官方提供的配置文档上要配置USE变量,但是 我没有去配置。
后面配置时区

ls /usr/share/zoneinfo
echo "Asia/Shanghai" > /etc/timezone
emerge --config sys-libs/timezone-data

在配置地区的时候,我担心后面可能会因为中文的原因,所以我跳过此节。

env-update

配置内核

下载内核

emerge --ask sys-kernel/mips-sources
ls -l /usr/src/linux
emerge --ask sys-apps/pciutils
cd /usr/src/linux
make menuconfig

注意这里安装好的内核版本为4.20.17,和官方的3.16的版本不同所以在后面的配置的时候会有很多出入,必须要一项项看,有的可能是点击有些项后才出现的。
具体的配置信息这里不再罗列,但是配置选项中没有Processor types and features这个选项,其他的选项全部配置成功
编译内核

make vmlinux modules modules_install

注意这里官方提供了三种编译内核的方式,由于我是直接在龙芯的机器上安装的所以,采用第一种。
但是Gentoo 并不支持mips上的内核配置,无法在龙芯的机器上使用,所以这里我借用了龙芯原本机器中的内核及相关配置文件。
具体操作如下: 我将原来的boot 中的所有文件进行打包,然后拷贝到我的gentoo的boot文件中,然后解压即可。

cd /media/dslab/gentoo
mkdir boot
mount /dev/sdb1 boot
cd /boot
tar -jcvf /media/dslab/gentoo/boot/boot.tar.gz ./*
cd /media/dslab/gentoo/boot
tar -xf boot.tar.gz

修改grub.cfg文件

cd boot
vim grub.cfg
1.修改名字
2.修改root后的UUID部分
blkid //查看UUID
3.修改hd,msdos部分

我的具体修改如下所示:
修改完成后重启电脑,然后F2进入BIOS,在启动项中选择对应的硬盘启动,退出保存。(直接按Esc即可)
之后顺利进入Gentoo界面。

开机自启动lxde桌面

Running LXDE
nano -w ~/.xinitrc添加 'exec startlxde'  nano -w /etc/conf.d/xdm
DISPLAYMANAGER="lxdm"
rc-update add xdm default //Then add xdm to the default runlevel if it isn't already:

(附录)常见的问题

没有网络的问题

常用的操作:

ifconfig
dhpcd
ifconfig enp5s0 inet 192.168.3.183 netmask 255.255.255.0 broadcast 192.1683.255
route add default gw 192.168.3.1

法二:修改静态IP

vim /etc/conf.d/net
config_enp5s0="192.168.3.183 netmask 255.255.255.0 brd 192.168.3.255"
routes_enp5s0="default via 192.168.3.1"

可能缺少的dhcp的包

emerge --ask virtual/udev

还有的可能是由于网卡不能使用。这个需要更换网卡。

关于下载的时候的问题

在emerge 一个包的时候经常出现,
calculating dependency:
[ebuild R]
[ebuild N]

这是表示什么意思呢?
首先,ebuild R 表示已经之前有过一个包,但是要re-emerge
ebuild N 表示下载一个新的包,第一次下载
ebuild NS 表示你已经安装了一个包,但是一个新的版本在SLOT会有不同。
ebuild F 表示这个包需要手动Fectch 他的源码。
When you attempt to emerge the package, if the sources are not found, then portage will halt and you will be provide with instructions on how to download the required files.

ebuild f 表示这些包的file已经被下载下来了
ebuild U 表示这些包已经被emerge ,可以Update到下一个版本。

配置每个包遇到的问题(gcc)

配置时会出现错误:
configure: error: C compiler cannot create executables
C 编译器无法运行,查看config.log发现unrecongnized gcc -‘V’,即无法识别’-V’。解决办法,是由于gcc的版本过高的问题,我的gcc的版本是gcc-9.2.0-r1,经查找gcc4.8以上的版本无法识别‘-V’,所以我才用gcc降级的方式,下载gcc 4.8.5-r1

emerge -av sys-devel/gcc-4.8.5-r1

但是下载过程中出先问题,
error:‘const char* libc_name_p(const char* ,unsigned int )’ redeclared inline with ‘gnu_inline’ attribute
后面是两个下载是的emake failed.
解决办法修改
根据错误提示找到宏文件位置,参考文档
https://yjdwbj.github.io/2016/08/26/常见编译问题-不定期更新/

我的宏文件的位置是在

/var/tmp/portage/sys-devel/gcc-4.8.5-r1/work/gcc-4.8.5/gcc/cp/

按照上述办法,修改即可。

Gentoo下一些常见的masked的解决办法

一、 masked by missing key word
问题描述:
以app-i18n/ibus-table-wubi-9999为例。

!!! All ebuilds that could satisfy "app-i18n/ibus-table-wubi" have been masked.
!!! One of the following masked packages is required to complete your request:
- app-i18n/ibus-table-wubi-9999 (masked by: missing keyword)For more information, see the MASKED PACKAGES section in the emerge
man page or refer to the Gentoo Handbook.

在手册上的说明如下:
“missing keyword”意味着这个软件还没有在您机器的体系结构中进行过测试。
您可以咨询相应体系结构移植小组是否能对它进行测试,
或者您自己为他们进行这样的测试并将您得到的结论提交到我们的bugzilla网站。

解决思路,修改/etc/portage/package.keywords,强制标记为稳定。

nano -w /etc/portage/package
添加一行
app-i18n/ibus-table-wubi-9999 *

则使用“*”作为ARCH_KEYWORD,“**”表示该包没有keyword。
其他的“~x86”之类,照抄即可。
二、masked by: package.mask
以sys-kernel/gentoo-sources-2.6.33为例。

!!! All ebuilds that could satisfy "=sys-kernel/gentoo-sources-2.6.33" have been masked.
!!! One of the following masked packages is required to complete your request:
- sys-kernel/gentoo-sources-2.6.33 (masked by: package.mask) For more information, see the MASKED PACKAGES section in the emerge
man page or refer to the Gentoo Handbook.

解决思路,修改/etc/portage/package.unmask,强制标记为稳定。

解决方法:

在/etc/portage/package.unmask里添加
=sys-kernel/gentoo-sources-2.6.33

三、masked by: xxx license(s)
以dev-java/sun-jre-bin-1.6.0.17为例。

!!! The following installed packages are masked:
- dev-java/sun-jre-bin-1.6.0.17 (masked by: dlj-1.1 license(s))
A copy of the 'dlj-1.1' license is located at '/usr/portage/licenses/dlj-1.1'.
For more information, see the MASKED PACKAGES section in the emerge
man page or refer to the Gentoo Handbook.

解决思路,修改/etc/make.conf,降低许可敏感级别。

解决方法,
在/etc/make.conf里追加一行

ACCEPT_LICENSE="*"

画面显示太慢的原因及解决办法

我之前在安装桌面的时候,发现打开桌面环境极其慢几乎是一帧一帧,我到后台发现有提示的一个错误信息是

MESA-LADER:failed to open r600 (search path /usr/...)

显然适合mesa这个3D的包有关,但是,我之前是有安装过的,这里提示报错,不太能理解。我先重新安装,进入桌面后依然很慢。
注意他会有一个提示:

!!! existing preserved libs
...

我最初只是觉得可能这个包和之前的好多包有依赖关系,才会有这个提示,但是我在查过之后发现,我必须要将其卸载重新安装
最后我尝试了

emerge -C media-libs/mesa //先卸载
emerge --depclean //保证卸载干净,有一些依赖提示也没有关系
emerge @preserved-rebuild
emerge --ask media-libs/mesa

重新启动lxde桌面,发现比以前快了,后台也没有报错,问题解决。

禁用启动过程中的Debian的initramfs

例子:(CentOS)不过和gentoo上的配置相同

[localhost ~]# vi /boot/grub/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
#以上为GRUB的整体设置
title CentOS (2.6.32-279.el6.i686)
root (hdO,0)
kernel /vmlinuz-2.6.32-279.el6.i686 ro root=OOID=b9a7ala8-767f-4a87-8a2b-a535edb362c9 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel= auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-279.el6.i686.img

1.title CentOS(2.6.32-279.d6.i686):title 就是标题的意思,也就是说,在 title 后面写入的是什么,系统启动时在 GRUB 的启动菜单中看到的就是什么。
root(hd0,0):是指启动程序的保存分区。这里要注意,这个 root 并不是管理员。在我的系统中,/boot 分区是独立划分的,而且设备文件名为 /dev/sda1,所以在 GRUB 中就被描述为 hd(0,0)。
2.kernel /vmlinuz-2.6.32-279.el6.i686 ro root=UUID=b9a7a1a8-767f-4a87-8a2b-a535edb362c9 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet。其中:
/vmlinuz-2.6.32-279.el6.i686:指定了内核文件的位置,这里的 / 是指 boot 分区。
3.ro:启动时以只读方式挂载根文件系统,这是为了不让启动过程影响磁盘内的文件系统。
4.root=UUID=b9a7a1 a8-767f-4a87-8a2b-a535edb362c9:指定根文件系统的所在位置。这里和以前的Linux版本不太一样了,不再通过分区的设备文件名或卷标号来指定,而是通过分区的 UUID 来指定的。
以下禁用都只是在启动过程中禁用,是为了加速系统启动的:
rd_NO_LUKS:禁用 LUKS,LUKS 用于给磁盘加密。
rd_NO_MD:禁用软 RAID。
rd_NO_DM:禁用硬 RAID。
rd_NO_LVM:禁用 LVM。

除了以上这样,命令输出信息中还包含以下内容:
KEYBOARDTYPE=pc KEYTABLE=us:键盘类型。
crashkernel=auto:自动为crashkernel预留内存。
LANG=zh_CN.UTF-8:语言环境。
rhgb:(redhatgraphics boot)用图片来代替启动过程中的文字信息。启动完成之后可以使用dmesg命令来查看这些文字信息。
quiet:隐藏启动信息,只显示重要信息。
initrd/initramfs-2.6.32-279.el6.i686.img:指定了initramfs虚拟文件系统镜像文件的所在位置。

也就是,删除本地的grub.cfg文件中的rhgb即可,这样开机启动就不会进入debian的initramfs。

配置java环境

直接从龙芯的官网上下载openjdk
http://www.loongnix.org/index.php/Java
下载对应的版本,我下载的是8.1.3
安装过程
参考http://www.loongnix.org/index.php/JAVA安装说明

常用的命令

kill -9 PID //杀进程,PID为进程号
pgrep -f name //查询对应名字的进程号

解决内存不够的问题

解决办法是由于内存分配不够
增加swap分区

free -m
mkdir /opt/images/
rm -rf /opt/images/swap
dd if=/dev/sda3 of=/opt/images/swap bs=1024 count=5120000 //sda3是我的swap分区,有5GBmkswap /opt/images/swapswapon /opt/images/swapfree -m  //重新查看

之后重新下载,发现可以下载成功。

在龙芯3A3000上安装Gentoo相关推荐

  1. 龙芯3A5000 上安装docker-compose

    操作系统:Loongnix server 8.4 yum install -y loongnix-release-openstack-victoria.noarch yum install -y lo ...

  2. 龙芯平台python答案_在龙芯平台上自己编写原创应用——“动态壁纸”

    原标题:在龙芯平台上自己编写原创应用--"动态壁纸" 一.为何要在龙芯平台上编写"动态壁纸"? 龙芯3A3000桌面电脑的用户越来越多了,人们都想在龙芯电脑上有 ...

  3. come type6 定义_COMe-B6101龙芯3A3000 COM Express Type6模块

    COMe-B6101是一款以龙芯3A多核处理器和AMD RS780E SB710芯片组为核心,高可靠性和高效能的主板模块.COMe-B6101 内部集成ATI M72-based图像引擎,支持双屏显示 ...

  4. 龙芯平台上的容器和CI/CD实现方案

    http://www.loongson.cn/news/company/505.html 一:简介         Windocker是云宏公司基于龙芯平台开发的容器管理web平台.主要功能包括:系统 ...

  5. 包教包会:龙芯3A5000上尝试运行任意Windows软件

    几个月之前,龙芯中科刚放出可用的二进程翻译模块时,我写了一篇<在龙芯3A5000上运行Windows程序>.在龙芯3A5000上运行Windows程序https://zhuanlan.zh ...

  6. 经验分享|在龙芯2K上运行RT-Thread系统并开源

    大家好,今天分享下群友老李在大四上学期做的一个项目.希望对大家有启发. 项目信息 项目名称:龙芯2K上的RT-Thread系统 学生姓名:李志锐 学校:聊城大学 大四在读 方案描述:该项目要求首先实现 ...

  7. 龙芯3A2000上移植NASA WorldWind指南

    http://www.loongson.cn/news/company/467.html 一.初识NASA WORLDWIND NASA World Wind是NASA(美国)国家航空和宇宙航行局联合 ...

  8. 干货应用迁移|搜狗输入法在龙芯平台上的适配与应用

    技术引领创新,用"芯"构建生态,第一期龙芯生态论坛于2021年3月12日(周五)盛大开讲!龙芯生态论坛作为龙芯生态建设的重要技术交流窗口,将汇聚龙芯资深技术专家及行业生态伙伴精英, ...

  9. 在龙芯3B1500上编译安装ICESTORM (open source platform for lattice ICE40 serial FPGA)

    编译安装icestorm 1, 从github上clone 源码,如果速度慢,可以考虑用gitee先加载,再clone gitee: 2,make:编译mpsee缺ftdi.h, dnf search ...

  10. 我的世界java百度什么电脑玩好_【我的世界】为了在龙芯电脑上玩Minecraft(我的世界)我做了什么_玩得好游戏攻略...

    为了在龙芯上玩Minecraft,拼了!先上跑起来的视频. 作为多年的Minecraft玩家,这个残余游戏消磨了我多量的时间.于是想着Minecraft Java版要是能在龙芯上跑起来就好了. 冷假前 ...

最新文章

  1. logging总结 - log4j2使用流程[归档存储]
  2. ElasticSearch插件安装
  3. 白话阿里巴巴Java开发手册(编程规约)
  4. 主题简介 ASP .NET
  5. 《白鹿原》金句摘抄(七)
  6. 光纤收发器长距离的传输过程出现死机的解决方案
  7. Mysql远程登录及常用命令
  8. 基于dijsktra算法的最短路径求解_基于dijkstra算法的AGV路径规划(含C++代码)
  9. 在DevStack中使用Systemd
  10. Unity 生成APK 出错的解决方法
  11. 喜报!木兰宽松许可证通过OSI认证,成为首个中英双语国际开源许可证!
  12. 联通、华为双双辟谣:云计算不要太火
  13. 利用DroidCamX将手机摄像头打造成电脑高清摄像头
  14. 如何导出带有dn值的栅格影像(方便arcgis处理)
  15. 北京大学计算机考研专业课考什么,北大计算机怎样考
  16. 洛谷 P1195 口袋的天空
  17. GNU Radio: USRP2 and N2x0 Series
  18. 左耳朵耗子:我看ChatGPT,为啥谷歌掉了千亿美金
  19. RT-Thread10月社区简报
  20. 前端切页快速上手系列

热门文章

  1. HBuilderX前端html功能应用
  2. 2021年,中国程序员前景一片灰暗,真的是这样吗?
  3. 重置SMC与重置NVRAM(PRAM)
  4. 第三次作业(尤心心)
  5. WLAN无线技术基本概念(802.11a/b/g/n/ac/ax区别,频段,信道概念)
  6. Ubuntu 快捷截图
  7. [web开发] Vue+Spring Boot 上海大学预约系统开发记录
  8. 七个 ios 上的 android 模拟器
  9. github搭建php,在github规范开发以及持续构建php项目
  10. 双目摄像机测深度原理