在 Banana Pi 中安装 Linux

前言 买来的 Banana PI 闲置的有些久了,打算用来建立内网服务。 结果硬盘供电问题一直没有解决。 最后发现硬盘供电是直连 DC 电源的,于是乎买了 USB-DC 转换线,一切就绪。 按照“策略”里的需求,用 Banana Pi 构建服务是个不错的选择。 磁盘分区和引导 本部分基本参考自 https://github.com/BPI-SINOVOIP/BPI-M2U-bsp 自带的说明文档。 $ fdisk -l [device] > o # 建立 DOS 分区 > n p 1 204800 +256M > t 1 c > a 1 # 先建立 vfat32 格式 BOOT 分区,在分区前空出 204800 磁柱,留给 U-Boot。并且开启 boot flag。 > n p 2 729088 (default) > t 2 83 # 建立 ROOT 分区,ext4 格式。剩余空间都用上好了。 > w # 保存退出 gentoo /mnt/MPI-M2U/BPI-M2U-bsp # fdisk -l /dev/sde Disk /dev/sde: 14....

September 2, 2018 · 1 min · lyincc

Gentoo 安装笔记(四)

前言 这是第五次安装 Gentoo Linux 系统了。 这次的目的是在台式机 Windows 10 系统中安装 Gentoo Linux 虚拟机。 主要用途有以下几点: 提供分布式编译服务,为笔记本上的 Gentoo 提供编译加速 提供代理服务 通过 Hyper-V 的物理磁盘挂载功能提供 Linux 磁盘分区的挂载和 Samba 共享服务 为 Vision Studio 提供 Linux 环境。 安装 通过前几次的安装总结了 Gentoo 的三种安装方式。 分别是 stage3 安装、 stage1 安装和 直接安装。 因为是虚拟机,不再瞎折腾了,直接使用 stage3 安装。 先利建立空虚拟机,利用 admincd 进入 livecd 环境。 # 先是磁盘操作 parted /dev/sda # 建立磁盘分区格式 dos 格式即可 mkfs.ext4 # 建立文件系统 mount /dev/sda1 /mnt/gentoo # 挂载磁盘 # 安装 stage3 wget [source] # 下载 stage3 tar xpf *....

July 21, 2018 · 1 min · lyincc

Linux 系统基本管理

Disk Part 使用parted建立gpt label并且分区。 个人使用一般分为/、/boot、/home和swap即可。 efi引导需要增加efi分区/boot/efi,为fat16/32格式。 Manage 使用lvm管理磁盘,并开启dm-crypt加密 pvcreate /dev/sda1 pvdisplay pvscan pvmove -v /dev/sda1 vgreduce vg0 /dev/sda1 && pvremove /dev/sda1 vgcreate vg0 /dev/sda1 lvcreate -n [lvname] -l 50%VG [vgname] dd if=/dev/urandom of=/etc/keys/enc.key bs=1 count=4096 cryptsetup -s 512 luksFormat /dev/sda1 [/root/keys/enc.key] cryptsetup open /dev/sda1 name cryptsetup close name cryptsetup luksDump /dev/sda1 cryptsetup luksAddKey /dev/sda1 Mount linux通常使用/etc/fstab文件指导磁盘挂载。 建议使用UUID保证磁盘唯一性。 Time 通常系统时间基于NTP协议进行同步 时间不准将导致ssl协议出现错误!!! echo UTC > /etc/timezone # 时区信息 /usr/share/zoneinfo emerge --config timezone-data 安装NTP服务net-misc/ntp...

March 24, 2018 · 1 min · lyincc

Gentoo 安装笔记(三)

曾经体验过Arch Linux的安装。从零开始,用几十个包就构建了基本系统,十分明了。 现在换上Gentoo Linux,怎么就冒出了个stage3?官网上说可以stage1开始,但是现在已经不提供stage1包了。何不自己构建stage包,感受下从头编译一个完整的Linux的历程。 构建Stage1 按照官网文档,Gentoo的构建工具由Project:Catalyst提供。 https://wiki.gentoo.org/wiki/Catalyst 按照文档,在准备好Seed tarball和portage树后只需要按顺序构建stage1.spec, stage2.spec, stage3.spec就可以自动完成。 Gentoo的自动化构建做的确实不错。 但是我并不像构建stage3发布出去,所以打算在构建stage1后直接装进系统分区。 于是,在修改好spec文件后,我提供了seed开始编译。得到stage1root文件夹。 我翻看了catalyst的stage1构建脚本,其利用emerge的环境变量ROOT引导安装了最初的Portage,BaseLayout和GNU GCC工具链。 下次大概可以直接手动用pkg装了;) 于是copy stage1root到root分区,现在有了原始工具。 构建Stage2 由于我不想打包,干脆直接放弃了catalyst工具,直接执行porgate/scripts/bootstrap.sh 从stage2开始,编译使用了新系统自己的工具链,stage2的作用也就是构建完整的编译环境 构建Stage3 直接执行emerge -av -e @system。这次编译加载了真正的profile,将按照profile里的packages和use构建完整系统。 执行完成后,得到和官方stage3包基本一致的系统,但是这个系统还不能启动。 启动系统 配置locate为en_US,timezone为UTC 接着安装内核,由于hardened的内核被闭源了,只能用上普通gentoo-sources内核。 内核config直接用了上次配好的。initramfs使用genkernel编译,/etc/genkernel/genkernel.conf开启lvm和crypt。 接着安装grub,/etc/default/grub启动参数里加上crypt和dolvm。 配置fstab,为root设置密码,就可以重启进入系统了。 构建桌面 由于上次的失败,还是放弃了wayland这个玩具,用回了X。 这次打算建立自己profile,并且之前的编译都开启了buildpkg FEATURE,以后就可以一劳永逸啦。 USE的配置参考了官方profile的desktop target。 其他包放进了packages中,再也不用翻world了。 X实现用了xorg-x11包,自带了大量X桌面工具。 Window Manage用了awesome,平铺管理很简洁。 其它还有xterm, firefox, vim, tmux等工具。

December 31, 2017 · 1 min · lyincc

Linux 内核裁剪和编译

自编译内核 大多数发行版都有默认的编译好的内核,并且这种内核模块较全,通用性还是很高的。 这些发行版内核往往会比Linux内核主线慢上一些(例如Debian稳定分支)。 需要用一些特别新的内核API依赖或者内核裁剪爱好者才会自己编译内核。 但是Gentoo作为一个全编译的发行版,并不提供二进制内核。 学习内核编译对理解Linux内核工作方式还是很有帮助的。 选择Kernel分支 一般不推荐Kernel的主线分支,它往往不够稳定。 我使用了Gentoo推荐的gentoo-sources的稳定版本。 另一个选项是带有pax补丁的hardened-sources硬化内核。 但是由于pax开发者闭源了该项目,gentoo已经停止支持了。 但是仍然有爱好者对Kernel主线进行pax移植。 https://github.com/copperhead/linux-hardened 配置内核 make menuconfig 通过该命令进入控制台菜单对内核进行配置。 主要可以参考金步国先生的内核配置文档翻译和文末的配置。 http://www.jinbuguo.com/kernel/longterm-linux-kernel-options.html 编译内核 make mrproper # 清理编译文件 make vmlinux modules # 编译内核镜像 make install modules_install # 安装内核 注意安装内核前要挂载好/boot分区。 使用genkernel工具 genkernel可以快速编译安装内核和内核初始系统。 使用前可修改配置文件/etc/genkernel.conf。 OLDCONFIG="yes" # 加载旧内配置文件 MENUCONFIG="yes" # 编译前手动修改 CLEAN="no" # 关闭自动清理,可以加快二次编译速度 MRPROPER="no" SAVE_CONFIG="yes" # 开启自动备份 LVM="yes" # 开启内核lvm支持 LUKS="yes" # 开启内核Luks加密支持 之后genkernel将自动加载配置 genkernel --kernel-config=<config.file> --install all 启动内核 现在主流的主板都支持EFI启动模式。 在这种模式下Linux一般通过grub或者内核直接启动。 但是内核直接启动需要将内核启动参数直接编译进内核,所以一般还是以grub为主。...

September 16, 2017 · 2 min · lyincc