机器介绍:https://wiki.chuang.ac.cn/loongson:device:lemote_lynloong
为了体验龙芯2F的原生功能,首先我们需要安装龙芯的共创 Linux 系统。这里我们通过U盘来安装官方的系统恢复镜像。
首先准备一只 2GB 容量的U盘,容量太大会导致无法正常引导。没有合适的U盘的话,可以使用 DiskGenius 工具将U盘划分出一个 2GB 的 FAT32 分区。
共创 Linux 1.8.4 系统恢复镜像的下载地址,提取码:e9da ;将cocreate_os_1.8.4.zip
加压到U盘内,即可完成系统恢复镜像的制作。其中主要包含七个文件:
其中有两个文件需要注意以下,一个是boot.cfg
文件,此文件用于U盘的启动引导。由于我这里的U盘是 FAT32格式的分区,因此执行 “For Fat” 内核。如果U盘使用的是 EXT 分区,则需要切换到 “For ext2 and ext3” 内核。
1default 0
2showmenu 1
3
4title Lemote Recover Tool
5#For Fat
6kernel /dev/fat/disk@usb0/vmlinuz
7
8#For ext2 and ext3
9#kernel /dev/fs/ext2@usb0/vmlinuz
10#kernel /dev/fs/ext2@usb0/vmlinux
11
12#args console=tty machtype=yeeloong video=smifb:1024x600-16@60 recover=usbdisk
13#args console=tty machtype=lynloong video=sisfb:1360x768-16@60 recover=usbdisk
14args console=tty machtype=lemote-lynloong-2f-9003 video=sm501fb:1368x768@60 recover=usbdisk
15#args console=tty machtype=fuloong video=sisfb:1024x768-16@60 recover=usbdisk
16#args console=tty machtype=fuloong video=sisfb:1280x720-16@60 recover=usbdisk
另一个是config.txt
文件,此文件恢复系统的分区,默认的文件内容是这样的:
1
2----------------------------------------------------------------
3-- Partition table
4-- Note: Size unit is 'M'
5----------------------------------------------------------------
6Cfg.partitions = {
7
8['Partition'] = {'Size','Type', 'Format',"MountPoint","Files"};
9-------------------------------------------------------------------------------------------------
10[1]= { 128, 'ext3', 'Y', };
11[2]= { 4096,'ext3','Y', };
12[3]= { 2048,'swap','Y', };
13[4]= { 'NULL','extend','NULL', };
14[5]= { 20480,'ext3','Y', '/','basesys-20100706.tar.gz'};
15[6]= { 'rest','ext3','Y', '/home','basesys-20100706.tar.gz'};
16
17['Boot'] = 1;
18['Backup'] = 2;
19}
20
21Cfg.partitions1 = {
22
23['Partition'] = {'Size','Type', 'Format',"MountPoint","Files"};
24-------------------------------------------------------------------------------------------------
25[1]= { 20480, 'ext3', 'Y', '/','root.tar.gz'};
26[2]= { 4096,'ext3','Y', };
27[3]= { 2048,'swap','Y', };
28[4]= { 'NULL','extend','NULL', };
29[5]= { 20480,'ext3','Y', '/etc','etc.tar.gz'};
30[6]= { 'rest','ext3','Y', '/home','home.tar.gz'};
31
32['Boot'] = 1;
33['Backup'] = 2;
34}
35
36Cfg.default_partitions = Cfg.partitions
37
38----------------------------------------------------------------
39-- Other configuration
40--
41----------------------------------------------------------------
42
43Cfg.OSFAB_NAME = {"OSFab-2012-0522.squashfs", "OSFab-thirdpart-2012-0522.squashfs"}
44Cfg.SYSTEM_NAME = "Cocreate Linux Desktop for Loongson"
45Cfg.SYSTEM_NUM = ""
46Cfg.SYSTEM_VERSION = "edu-150K"
47Cfg.LANGUAGE = ""
48Cfg.CONFIG_VERSION = "1.0"
这里我们只需要关注 Cfg.partitions
这个部分,代表恢复系统的分区方式。其中分区1代表启动分区,2存放系统恢复镜像,3是交换分区,5用于挂载/
,6用于挂载/home
。本机的默认硬盘大小为 160GB,如果更换了硬盘大小或者需要安装多系统,则需要对分区表做适当修改。这里我把分区表改成以下的格式:
1Cfg.partitions = {
2
3['Partition'] = {'Size','Type', 'Format',"MountPoint","Files"};
4-------------------------------------------------------------------------------------------------
5[1]= { 256, 'ext3', 'Y', };
6[2]= { 4096,'ext3','Y', };
7[3]= { 2048,'swap','Y', };
8[4]= { 'NULL','extend','NULL', };
9[5]= { 20480,'ext3','Y', '/','basesys-20100706.tar.gz'};
10[6]= { 55040,'ext3','Y', '/home','basesys-20100706.tar.gz'};
11[7]= { 30720,'ext3','Y', };
12[8]= { 'rest','ext3','Y', };
13
14['Boot'] = 1;
15['Backup'] = 2;
16}
此处我增加了启动分区的容量,并新增了两个分区,预留出了 80GB 的空间给第二个系统。如何分区可以根据实际情况自行修改。
另外,如果修改了文件,记得同时修改md5sum.txt
文件中的 MD5 值,避免后续步骤的校验失败。当然确认文件无误的话,也可以直接删除这个文件,对安装没有什么影响。
将U盘插入龙芯2F一体机,重启之后可以看到U盘的引导选项 “Lemote Recover Tool”,选择之后就可以进入系统恢复界面。
接下来的部分是图形化操作界面,非常简单,点击 “开始还原” 即可开始安装系统,整个过程是全自动的,需要消耗一定的时间。系统还原完毕后,拔掉U盘,点击 “退出”,系统即安装完成了。
这里的安装教程参考了这篇文章:Loongson2f龙芯灵珑9S2A一体机安装debian5和debian6双系统,特别是关于分区表和引导项的内容认识和修改,受到了很大的启发。不过其使用的是共创 Linux 1.7.4 版本的系统,我在整理搜索本机自带的系统时,发现sda5/yee/.updateclient
目录下,存放了名为cocreate_os_1.8.4.tar
的系统升级安装包和1.8.5-1.8.8
一系列应用更新补丁,修改日期是 2014/10/30,目前还没有在网络上看到有分享。也不知道有没有更新版本的系统存在,如果有更新版本的系统,也可以到这个目录下去拷贝出来。
龙芯的共创(Cocreate) Linux 系统基于 Debian 5 lenny 开发,距今已经年代久远,其官方的软件源也早已失效。目前除了 Debian 档案的官方源,国内还可以使用 163 源和腾讯源,进行基础的软件管理。这里我们把 apt 源修改如下:
我这里使用腾讯源的速度要更快一点,另外初次更新,也可以把官方源添上,不过国内更新速度较慢,建议关闭。切换源之后就可以更新一下软件列表了。
1$ sudo apt-get update
2
3获取:1 http://mirrors.cloud.tencent.com lenny Release.gpg [1034B]
4命中 http://mirrors.cloud.tencent.com lenny/main Translation-zh_CN
5忽略 http://mirrors.cloud.tencent.com lenny/contrib Translation-zh_CN
6忽略 http://mirrors.cloud.tencent.com lenny/non-free Translation-zh_CN
7命中 http://mirrors.cloud.tencent.com lenny Release
8错误 http://mirrors.cloud.tencent.com lenny Release
9
10获取:2 http://mirrors.cloud.tencent.com lenny Release [99.6kB]
11忽略 http://mirrors.cloud.tencent.com lenny Release
12忽略 http://mirrors.cloud.tencent.com lenny/main Packages/DiffIndex
13忽略 http://mirrors.cloud.tencent.com lenny/contrib Packages/DiffIndex
14忽略 http://mirrors.cloud.tencent.com lenny/non-free Packages/DiffIndex
15忽略 http://mirrors.cloud.tencent.com lenny/contrib Sources/DiffIndex
16忽略 http://mirrors.cloud.tencent.com lenny/main Sources/DiffIndex
17忽略 http://mirrors.cloud.tencent.com lenny/non-free Sources/DiffIndex
18命中 http://mirrors.cloud.tencent.com lenny/main Packages
19命中 http://mirrors.cloud.tencent.com lenny/contrib Packages
20命中 http://mirrors.cloud.tencent.com lenny/non-free Packages
21命中 http://mirrors.cloud.tencent.com lenny/contrib Sources
22命中 http://mirrors.cloud.tencent.com lenny/main Sources
23命中 http://mirrors.cloud.tencent.com lenny/non-free Sources
24下载 101kB,耗时 7s (12.9kB/s)
25正在读取软件包列表... 完成
26W: GPG error: http://mirrors.cloud.tencent.com lenny Release: 下列签名无效: KEYEXPIRED 1337087218 由于没有公钥,下列签名无法进行验证: NO_PUBKEY AED4B06F473041FA
27W: GPG error: http://mirrors.cloud.tencent.com lenny/updates Release: 下列签名无效: KEYEXPIRED 1356982504
28W: 您可能需要运行 apt-get update 来解决这些问题
其中公钥签名早已过期,可以直接忽略。
龙芯共创 Linux 已经配置好了 SSH 登陆,默认的root
的密码是loongson
。
我这里的灵珑 9S2A 是 9003/9013 型号,板载 GPU 是慧荣 SM502,型号比较特殊。没有受到主线内核的支持,可用的 Linux 内核版本停留在 2.6.27 上。因此目前能在 9003 上运行的,只有刘工版 Debian 6 和基于 Debian 5 的共创操作系统。 其中:
Linux 内核:https://github.com/loongson-community/linux-legacy ,branch 为 lemote-9003-2.6.27.1
Debian 6: http://www.anheng.com.cn/loongson/install/lynloong_2f_9003/lynloong_debian6_install.tar.gz
注:如果按照类似第一节的方法,事先预留好了安装 Debian 6 的分区空间,则可以直接跳过2.1和2.2的部分步骤。
挂载硬盘的sda2
分区,这个分区是用来存放系统恢复镜像的,内容和之前拷贝到U盘的内容基本一致。
1$ mkdir /mnt/sda2
2$ mount /dev/sda2 /mnt/sda2/
查看其中的config.txt
文件的Cfg.partitions
部分,此文件用来定义恢复系统的分区,详情已经在 1.1 小节介绍过了。如果先前没有为双系统预留好合适的分区空间,则可以在这里进行修改,然后重新恢复共创 Linux 系统。(重新分区会全盘格式化,注意备份重要数据!)
1Cfg.partitions = {
2
3['Partition'] = {'Size','Type', 'Format',"MountPoint","Files"};
4-------------------------------------------------------------------------------------------------
5[1]= { 256, 'ext3', 'Y', };
6[2]= { 4096,'ext3','Y', };
7[3]= { 2048,'swap','Y', };
8[4]= { 'NULL','extend','NULL', };
9[5]= { 20480,'ext3','Y', '/','basesys-20100706.tar.gz'};
10[6]= { 55040,'ext3','Y', '/home','basesys-20100706.tar.gz'};
11[7]= { 30720,'ext3','Y', };
12[8]= { 'rest','ext3','Y', };
13
14['Boot'] = 1;
15['Backup'] = 2;
16}
由于上一步我们已经预留好了分区空间,这里就不需要修改文件了。这里我打算将 Debian 6 安装在 sda7 分区中。(预留了30GB空间)
挂载硬盘的sda1
分区,这个分区是启动分区,存放系统启动文件boot.cfg
。
1$ mkdir /mnt/sda1
2$ mount /dev/sda1 /mnt/sda1/
这里我们修改系统启动文件boot.cfg
,将recovery
改为1。重启后则可以开始恢复共创 Linux 系统。
另外添加一个Debian 6 for Lynloong
的启动项,用于切换启动 Debian 6 双系统。其中kernel
项的位置/dev/fs/ext2@sata0g
代表sda7
分区。(从sata0a
开始依次计算)可以根据实际分区情况修改。
1default 0
2showmenu 1
3
4title Lemote Recovery Tool
5kernel /dev/fs/ext2@sata0b/vmlinuz
6args console=tty machtype=lemote-lynloong-2f-9003 video=sm501fb:1368x768@60 resume=/dev/sda3 recover=localdisk
7recovery 0
8
9title Cocreate Linux Desktop for Loongson
10kernel /dev/fs/ext2@sata0e/boot/vmlinux
11args console=tty no_auto_cmd quiet root=/dev/sda5 machtype=lemote-lynloong-2f-9003 video=sm501fb:1368x768@60 resume=/dev/sda3
12
13title Debian 6 for Lynloong
14kernel /dev/fs/ext2@sata0g/boot/vmlinux
15args console=tty no_auto_cmd quiet root=/dev/sda7 machtype=lemote-lynloong-2f-9003 video=sm501fb:1368x768@60 resume=/dev/sda3
挂载硬盘的sda7
分区,这个分区是我用来存放 Debian 6 系统的。
1$ mkdir /mnt/sda7
2$ mount /dev/sda7 /mnt/sda7/
网上流传的 Debian 6 安装镜像是以 LZMA 格式压缩的,好处是可以压缩到 2GB 以内,方便通过U盘启动引导,具体的安装方法与第一节类似。但是默认的共创 Linux 的内置软件包没有xz-utils
等工具,对应的 apt 软件源也无法直接下载,因此我这里通过局域网 SSH 和 SFTP 来传输文件。另外考虑到系统文件较大,同时为了避免混淆,传输位置我这里放到了sda7/install
目录下。
上图中示例的是网上流传的 Debian 6 安装镜像内容,解压后还需要调整内核文件,添加驱动模块,否则会无法使用键鼠,且没有声音输出(具体步骤参考这篇博文)。我把这些工作都做好之后重新打包为debian6_lynloong_2f_9003_20240518.tar.gz
(下载地址),这样直接解压文件包到sda7
分区后,即可完成 Debian 6 双系统的安装。
1# 直接解压 Debian 6 系统文件到 /dev/sda7 目录下(挂载到 /mnt/sda7)
2$ tar zxvf debian6_lynloong_2f_9003_20240518.tar.gz -C /mnt/sda7
查看/dev/sda7/boot
目录,这里的vmlinux
内核文件对应了内核启动项的位置kernel /dev/fs/ext2@sata0g/boot/vmlinux
,如果自定义的分区格式有区别,只要注意启动项与内核文件的对应正确即可。
查看/lib/modules/
目录,这里的2.6.27.1
版本的模块文件,可以完全兼容本机的键鼠、音频等外设对应了内核启动项的位置kernel /dev/fs/ext2@sata0g/boot/vmlinux
整合包的主要改动就在以上两处,完成系统文件的解压后,确认启动项修改正确。重启后选择新添加的 Debian 6 for Lynloong
,即可进入新的 Debian 6 系统。
同理,我们把 Debian 6 的 apt 源修改如下,区别就是修改一下版本代号名称queeze
:
1$ sudo vim /etc/apt/sources.list
2
3# 163 源
4
5# deb http://mirrors.163.com/debian-archive/debian queeze main contrib non-free
6# deb-src http://mirrors.163.com/debian-archive/debian squeeze contrib main non-free
7
8# 腾讯源
9
10deb http://mirrors.cloud.tencent.com/debian-archive/debian squeeze main contrib non-free
11deb-src http://mirrors.cloud.tencent.com/debian-archive/debian squeeze contrib main non-free
12
13# Debian 6 官方源
14
15# deb http://archive.debian.org/debian squeeze contrib main non-free
16# deb-src http://archive.debian.org/debian squeeze contrib main non-free
同理,Debian 6 的软件源目前还可以正常更新使用,切换源之后就可以更新一下软件列表了。
1$ sudo apt-get update
2$ sudo apt-get upgrade