2. 系统

Loongnix_FAQ

文章来源: http://docs.loongnix.cn/loongnix/faq/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E6%A1%8C%E9%9D%A2%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F.html

自2022/11/16日起桌面版软件源的key到期,如本地遇到key的问题,可依照下列方法对Key授权进行升级即可:

wget http://pkg.loongnix.cn/loongnix/pool/main/d/debian-archive-keyring//debian-archive-keyring_2019.1.lnd.2_all.deb

dpkg -i debian-archive-keyring_2019.1.lnd.2_all.deb

apt-key add /usr/share/keyrings/debian-archive-buster-loongarch64-stable.gpg

1. loongnix桌面系统源 #

http://pkg.loongnix.cn/loongnix/

2. 开启sshd服务 #

Loongnixi桌面系统默认关闭sshd服务,开启方法:

loongson@loongson-pc:~$ sudo apt install openssh-server
loongson@loongson-pc:~$ systemctl start ssh
loongson@loongson-pc:~$ systemctl status ssh

3. 安装auditd软件包 #

Loongnix系统默认不集成auditd软件包,若使用过程中用到审计功能,需手动安装auditd软件包:

loongson@loongson-pc:~$ sudo apt install auditd && systemctl start auditd && systemctl status auditd

4. 制作rootfs文件系统 #

已安装debootstrap的前提下,使用以下方法制作rootfs文件系统:

debootstrap --no-check-gpg --variant=minbase --components=main,non-free,contrib --arch=loongarch64 --foreign DaoXiangHu-stable iso http://pkg.loongnix.cn/loongnix/
chroot iso debootstrap/debootstrap --second-stage
cd iso
chroot .

执行debootstrap操作时,如果遇到下述错误现象:

...

龙芯2K500先锋派OpenHarmony构建指北

文章来源: https://bbs.loongarch.org/d/435-2k500openharmony

一、系统需求和环境配置 #

官方推荐系统是ubuntu 20.4,预留60G到80G的磁盘空间,交换分区推荐8G以上,主要环境是python3.9。 也可以使用Debian构建,留意python版本,python3.10及更新版本要改一行代码,才能正常运行hb构建工具。

需要安装的软件包:

sudo apt update
sudo apt upgrade
sudo apt install   apt-utils binutils bison flex bc build-essential make mtd-utils gcc-arm-linux-gnueabi u-boot-tools python3.9 python3-pip git zip unzip curl wget gcc g++ ruby dosfstools mtools default-jre default-jdk scons python3-distutils perl openssl libssl-dev cpio git-lfs m4 ccache zlib1g-dev tar rsync liblz4-tool genext2fs binutils-dev device-tree-compiler e2fsprogs git-core gnupg gnutls-bin gperf lib32ncurses5-dev libffi-dev zlib* libelf-dev libx11-dev libgl1-mesa-dev lib32z1-dev xsltproc x11proto-core-dev libc6-dev-i386 libxml2-dev lib32z-dev libdwarf-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools  pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5 libncurses5-dev libncursesw5 libstdc++6  gcc-arm-none-eabi vim ssh locales doxygen libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev npm libfl-dev

二、注册gitee账号和代码下载前的准备 #

源码下载推荐使用gitee的repo工具,从OpenHarmony gitee仓库下载代码,也可以使用OpenHarmony全量代码包。 参见资源链接1。使用repo工具需要gitee账号,并上传ssh公钥到账号的"ssh配置”里面,并且需要对git进行全局配置。大致过程如下:

1、使用电子邮箱注册gitee账号,如 abc@163.com 2、使用如下命令建立公钥 ssh-keygen -t ed25519 -C "Gitee SSH Key" 3、获取公钥内容并复制到gitee的ssh配置里面 cat ~/.ssh/id_ed25519.pub 4、获取gitee repo工具并赋予可执行权限 sudo curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo sudo chmod a+x /usr/local/bin/repo pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests 5、对git进行全局配置,配置账号和选项并进行测试 // 配置git,以abc@163.com为例,实际配置以注册账号为准 git config --global user.name "abc" git config --global user.email "abc@163.com" git config --global credential.helper store // 测试 ssh -T git@gitee.com

...

龙芯系统启动参数

龙芯平台常用启动参数 #

增加串口 #

console=ttyS0,115200 earlycon=uart,mmio,0x1fe001e0

注意:

  • console即是指控制台输出, ttyS0是龙芯默认的串口终端, 波特率是115200.
  • earlycon是用来打印早期acpi初始化过程的参数, 在使用dts传参时可能不可用.

核数限制 #

nr_cpus=3 maxcpus=3

多核调度限制 #

isolcpus=0-1,3-5

示例可以使0,1,3,4,5核不参与调度, 即被孤立.

禁用SMP #

nosmp

串口调试休眠 #

no_console_suspend

s3s4的过程中, 串口将打印执行流程.

设置替代初始化进程 #

rdinit=/sbin/my_init
init=/sbin/my_init

减少内核启动时的输出 #

quiet

设置日志级别 #

loglevel=3

设置根文件系统所在设备 #

root=/dev/sda3

加载ramdisk #

initrd=/path/to/initrd.img

设置PCI属性 #

如禁用msi

pci=nomsi

设置挂载参数 #

mount_param=noatime

设置SELinux启用 #

selinux=1

禁用gpu驱动 #

gsgpu.LG100_support=0

使能lsdc驱动 #

lsdc.modeset=1

内核参数查询 #

龙芯系统支持的内核启动参数可以使用如下命令查看:

...

内核编译

龙芯内核编译 #

目前龙芯已经由MIPS架构转战LoongArch架构.

  • vmlinux+vmlinuz
  • libmodules
  • RamDisk_initrd

准备阶段 #

下面以LoongArch架构的编译为例. 编译器采用Gcc交叉编译LoongArch版本

  • 编译器版本 : loongarch64-linux-gnu-gcc-8.3.0
  • 配置文件 采用龙芯默认配置: cp arch/loongarch/configs/loongson3_defconfig .config

开始编译 #

vmlinux/vmlinuz

  • 执行 make ARCH=loongarch CROSS_COMPILE=/opt/LoongArch_Toolchains/loongarch64-linux-gnu-2020-11-06/bin/loongarch64-linux-gnu-(此为编译器路径 which gcc) menuconfig 在这里插入图片描述

进入图形化配置界面,开关相关功能,我们直接Esc退出.

  • 执行 make ARCH=loongarch CROSS_COMPILE=/opt/LoongArch_Toolchains/loongarch64-linux-gnu-2020-11-06/bin/loongarch64-linux-gnu- -j 16 //采用16线程进行编译(目前我是在服务器上编译,核数较多). 到此vmlinux/vmlinuz 非压缩和压缩版内核就编译完成. 在这里插入图片描述 System.map 是符号表

  • 执行 make modules_install INSTALL_MOD_PATH=./ ARCH=loongarch CROSS_COMPILE=/opt/LoongArch_Toolchains/loongarch64-linux-gnu-2020-11-06/bin/loongarch64-linux-gnu- 编译lib/modules/ 驱动模块包,熟悉内核的人都了解,当配置menuconfig的时候,会将M的驱动以modules的形式在内核中加载. 在这里插入图片描述

将编译的文件进行使用 #

1.vmlinuz 放在os的/boot/下,并可以修改成自己喜欢的名字 vmlinuz_go

2.将lib/modules/下的文件copy到os根目录/lib/modules/

3.参考Deebian制作Ramdisk为例: 执行 在这里插入图片描述 使用draut进行制作,该脚本制作的Ramdisk支持了好几种文件系统,你可以简单制作RamDisk,这里就不详细介绍该命令了.将制作的*.img文件拷贝到/boot下.

dracut 是一个事件驱动的 initramfs 基础设施。dracut(工具)被用来通过拷贝工具和文件,从一个已经安装的系统创建一个 initramfs 镜像,并将镜像与dracut框架结合在一起。

...

如何更新系统

1 全系统更新: #

Debian系:

apt update && apt upgrade

Redhat系:

yum update

Arch系:

pacman -Syu

安同 OS (AOSC OS):

oma upgrade

2. 单独更新内核 #

2.1 更新自己编译的内核 #

将内核放置/boot下即可(通常/bootgrub.cfg默认指定的根目录)

更新完记得更新grub.cfg, 见第四节.

2.2 更新软件源上的内核 #

Debian系为例, 其余不做演示:

root@loongson-pc:/home/loongson# apt-cache search linux-header
aufs-dkms - DKMS files to build and install aufs
linux-headers-4.19.0-17-common - Common header files for Linux 4.19
linux-headers-4.19.0-17-loongson-3 - Linux kernel headers for 4.19 on loongson-3
linux-headers-4.19.0-18-common - Common header files for Linux 4.19
linux-headers-4.19.0-18-loongson-3 - Linux kernel headers for 4.19 on loongson-3
linux-headers-4.19.0-19-common - Common header files for Linux 4.19
linux-headers-4.19.0-19-loongson-3 - Linux kernel headers for 4.19 on loongson-3
linux-headers-loongson-3 - Linux kernel headers for 4.19 on loongson-3 (meta-package)
root@loongson-pc:/home/loongson#
root@loongson-pc:/home/loongson# apt install linux-headers-4.19.0-19-loongson-3
正在读取软件包列表... 完成正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
......
......

3. 单独更新initrd #

3.1 更新自己编译的modules并生成initrd #

将从内核源码编译的模块文件拷贝至/lib/modules/, 比如4.19.190+.tgz是模块文件的压缩包:

...

生成系统下的一些文件

1. Initrd #

通常, lib/modules/下的文件夹名称和内核的版本名是一致的, 所以可以通过下列命令生成Initrd:

1.1 dracut命令 #

ls lib/modules/* | xargs -I N dracut --kver N --force

1.2 mkinitramfs命令 #

ls lib/modules/* | xargs -I N mkinitramfs /lib/modules/N -o /boot/initrd.img-N 

2. GRUB #

2.1 Grub #

通常, Grub安装在当前启动系统所在的磁盘上, 如下命令可以找到当前磁盘. (希望将Grub安装在其他盘的同学, 看明白自己想要的效果)

[root@mxd ~]# lsblk -P | grep "$(lsblk -P | grep -w 'MOUNTPOINTS="/"' | sed 's/.*MAJ:MIN="\([^:]*\).*/\1/g'):0" | awk -F '"' '{print "/dev/" $2}'
/dev/nvme0n1

再通过grub-install或者grub2-install命令安装进磁盘:

grub-install /dev/nvme0n1

2.2 grub.cfg #

grub-mkconfig -o /boot/grub/grub.cfg

2.3 grub.efi #

grub-mkimage -c /boot/grub/grub.cfg -o /boot/efi/EFI/BOOT/BOOTLOONGARCH64.EFI -O loongarch64-efi

2.1节中生成grub可以让bios找到启动设备, 自动启动.

...

系统下查看一些信息

1. 查看系统版本 #

[root@mxd mxd]# cat /etc/os-release
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo

2. 查看内核版本 #

[root@mxd mxd]# uname -a
Linux mxd 6.5.0-4 #1 SMP PREEMPT Thu, 31 Aug 2023 09:38:08 +0000 loongarch64 GNU/Linux

3. 查看固件版本 #

[root@mxd mxd]# cat /sys/firmware/loongson/boardinfo
BIOS Information
Vendor			: Loongson
Version			: Loongson-UDK2018-V4.0.05494-stable202305
ROM Size		: 4096 KB
Release Date		: 07/10/23 18:05:47

Board Information
Manufacturer		: Loongson
Board Name		: Loongson-LS3A6000-7A2000-1w-EVB-V1.21
Family			: LOONGSON64

4. 查看ip #

[root@mxd mxd]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enp0s3f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:55:7b:b5:7d:f7 brd ff:ff:ff:ff:ff:ff
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether ce:38:b3:df:3b:23 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.13/23 brd 192.168.1.255 scope global dynamic noprefixroute enp2s0
       valid_lft 40218sec preferred_lft 40218sec
    inet6 fe80::80b6:e9f0:ab6c:e9c5/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:4e:12:01:c7 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global docker0
       valid_lft forever preferred_lft forever

5. 查看pci设备 #

[root@mxd mxd]# lspci 
00:00.0 Host bridge: Loongson Technology LLC Hyper Transport Bridge Controller
00:00.1 Host bridge: Loongson Technology LLC Hyper Transport Bridge Controller (rev 01)
00:00.2 Host bridge: Loongson Technology LLC Device 7a20 (rev 01)
00:00.3 Host bridge: Loongson Technology LLC Device 7a30
00:03.0 Ethernet controller: Loongson Technology LLC Device 7a13
00:04.0 USB controller: Loongson Technology LLC OHCI USB Controller (rev 02)
00:04.1 USB controller: Loongson Technology LLC EHCI USB Controller (rev 02)
00:05.0 USB controller: Loongson Technology LLC OHCI USB Controller (rev 02)
00:05.1 USB controller: Loongson Technology LLC EHCI USB Controller (rev 02)
00:06.0 Multimedia video controller: Loongson Technology LLC Device 7a25 (rev 01)
00:06.1 VGA compatible controller: Loongson Technology LLC Device 7a36 (rev 02)
00:06.2 Audio device: Loongson Technology LLC Device 7a37
00:07.0 Audio device: Loongson Technology LLC HDA (High Definition Audio) Controller
00:08.0 SATA controller: Loongson Technology LLC Device 7a18
00:09.0 PCI bridge: Loongson Technology LLC Device 7a49
00:0a.0 PCI bridge: Loongson Technology LLC Device 7a39
00:0b.0 PCI bridge: Loongson Technology LLC Device 7a39
00:0c.0 PCI bridge: Loongson Technology LLC Device 7a39
00:0d.0 PCI bridge: Loongson Technology LLC Device 7a49
00:0f.0 PCI bridge: Loongson Technology LLC Device 7a69
00:10.0 PCI bridge: Loongson Technology LLC Device 7a59
00:13.0 PCI bridge: Loongson Technology LLC Device 7a59
00:16.0 System peripheral: Loongson Technology LLC Device 7a1b
00:19.0 USB controller: Loongson Technology LLC Device 7a34
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
05:00.0 Non-Volatile memory controller: Shenzhen Longsys Electronics Co., Ltd. SM2263EN/SM2263XT-based OEM SSD (rev 03)
07:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Oland [Radeon HD 8570 / R5 430 OEM / R7 240/340 / Radeon 520 OEM] (rev 87)
07:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series]

5.1 详细查看某pci设备使用的驱动 #

其中07:00.0是上面左侧显示的一段数字, 根据描述, 07:00.0那一行指一个VGA兼容设备, 换句话说是指显示设备, 业内叫做显卡

...

新世界Archlinux系统安装

转载文章来源: https://bbs.loongarch.org/d/88-archlinux/28

本主题多人协作,版主权限可编辑,开源爱好者若要参与协作,可回复中申请权限,或者在QQ群里申请。 #

为了协调一致,本指南基于 @yetist制作的可引导安装镜像,指南覆盖系统引导、安装和具体应用配置。安装配置中遇到的问题,可以在回复中提出。本主题多人协作持续更新,勿催,谢谢! #

一、龙芯新固件环境下引导盘的制作 #

安装镜像及软件仓库动态,可在如下主题中找到 #

https://bbs.loongarch.org/d/67-loongarchlinux-202203/30

最新镜像下载,随时更新 #

https://mirrors.wsyu.edu.cn/loongarch/2022.03/iso/2022.06/loongarchlinux-2022.06.16.1-loongarch64.iso
https://mirrors.wsyu.edu.cn/loongarch/2022.03/iso/2022.06/loongarchlinux-2022.06.22.1-loongarch64.iso

https://mirrors.wsyu.edu.cn/loongarch/archlinux/iso/latest/archlinux-loong64.iso

引导盘制作 #

准备工作:一块确定状态良好的U盘,容量4G以上即可,制作引导U盘会擦除盘内原始数据,注意备份。
Linux环境下,插入U盘,系统会识别,不要做任何打开,加载等操作,具体设备名,可使用如下命令

ls -la /dev/sd*      ##  U盘一般会识别成硬盘设备,*表示系统动态赋予的一个字符,用以区分不同硬盘

Linux环境下,使用dd这个工具软件 #

注意x是个字符用实际内容替换命令执行需要root用户权限
sudo dd if=loongarchlinux-xxx.iso of=/dev/sdx  bs=1M status=progress oflag=direct 

# 命令执行完成后,建议运行下如下命令,确保U盘写入完整
sudo sync 

二、系统引导和安装前的检查 #

使用新固件引导,有两个快捷键会经常用到:

F2 ----- 激活固件配置界面,可在配置界面的选择引导设备
F12 ----- 激活引导管理菜单,暂时不推荐使用这个方式选择引导设备

使用新固件引导系统,包括引导本主题中制作好的U盘和之前使用grub有区别,具体流程是:

1、开机前把制作好的U盘插入机器USB接口,建议插入到主板提供的接口上,不建议使用前置接口,躲坑。
2、开机后出现龙芯logo,快速按F2,直到进入固件配置界面
3、按如下图示操作:

TODO: 需要补充英文界面操作,或说明修改语言方法。

移动光标到 启动管理 项,回车:

进入 启动管理 菜单之后,将会看到一系列可选择的启动项,请在列表中找到 EFI System PartitionEFI System Partition 2,并选择此项启动:

...