Raspberry Pi(树莓派)上从零开始构建Linux系统(简称PiLFS)(三)

九. 系统配置

  1. 安装 LFS-Bootscripts-20150222

    软件包包含一套在 LFS 系统启动和关闭时的启动和停止脚本。

cd /sources
tar -jxf lfs-bootscripts-20150222.tar.bz2
cd lfs-bootscripts-20150222
make install
cd /sources
rm -rf lfs-bootscripts-20150222

  2. 配置系统主机名称

echo "lfs" > /etc/hostname

  3. 创建 /etc/hosts  文件

cat > /etc/hosts << "EOF"
# Begin /etc/hosts (network card version)

127.0.0.1 localhost

# End /etc/hosts (network card version)
EOF

  4. 配置 Sysvinit

    内核初始化期间,第一个运行的程序默认是SysVinit,这个程序读取/etc/inittab文件

cat > /etc/inittab << "EOF"
# Begin /etc/inittab

id:3:initdefault:

si::sysinit:/etc/rc.d/init.d/rc S

l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

su:S016:once:/sbin/sulogin

1:2345:respawn:/sbin/agetty --noclear tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600

# End /etc/inittab
EOF

  5. 安装 PiLFS-Bootscripts-20160219

    软件包包含脚本的集合,以及针对树莓派硬件的一些修复

cd /sources
tar -Jxf pilfs-bootscripts-20160219.tar.xz
cd pilfs-bootscripts-20160219
make install-networkfix install-swapfix install-fake-hwclock install-switch-cpu-governor
cd /sources
rm -rf pilfs-bootscripts-20160219

  6. 系统区域设置

cat > /etc/locale.conf << "EOF"LANG=zh_CN.GB18030EOF

  7. 创建 /etc/inputrc 文件

    inputrc  文件的作用是告知系统应该以怎样的键盘布局处理键盘

cat > /etc/inputrc << "EOF"
# Begin /etc/inputrc
# Modified by Chris Lynn <[email protected]net>

# Allow the command prompt to wrap to the next line
set horizontal-scroll-mode Off

# Enable 8bit input
set meta-flag On
set input-meta On

# Turns off 8th bit stripping
set convert-meta Off

# Keep the 8th bit for display
set output-meta On

# none, visible or audible
set bell-style none

# All of the following map the escape sequence of the value
# contained in the 1st argument to the readline specific functions
"\eOd": backward-word
"\eOc": forward-word

# for linux console
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[3~": delete-char
"\e[2~": quoted-insert

# for xterm
"\eOH": beginning-of-line
"\eOF": end-of-line

# for Konsole
"\e[H": beginning-of-line
"\e[F": end-of-line

# End /etc/inputrc
EOF

  8. 创建 /etc/shells 文件

    shells 文件是当前系统所有可用 shell  的列表文件

cat > /etc/shells << "EOF"
# Begin /etc/shells

/bin/sh
/bin/bash

# End /etc/shells
EOF

  9. LFS官方文档中还包含了其它可选配置,可按需添加

十. 让LFS系统可引导

  1. 创建 /etc/fstab 文件

    将宿主系统的分区放到 /home 目录下,第一次引导lfs系统后将不得不清除宿主系统

cat > /etc/fstab << "EOF" # Begin /etc/fstab# file system  mount-point  type     options             dump  fsck #                                                              order  /dev/mmcblk0p1 /boot        vfat     defaults            0     0
/dev/mmcblk0p2 /home        ext4     defaults,noatime    0     1
/dev/mmcblk0p3 swap         swap     pri=1               0     0 /dev/mmcblk0p4 /            ext4     defaults,noatime    0     2
proc           /proc        proc     nosuid,noexec,nodev 0     0
sysfs          /sys         sysfs    nosuid,noexec,nodev 0     0
devpts         /dev/pts     devpts   gid=5,mode=620      0     0
tmpfs          /run         tmpfs    defaults            0     0
devtmpfs       /dev         devtmpfs mode=0755,nosuid    0     0# End /etc/fstab EOF

  2. 内核和引导程序

    当你可能可以编译你自己的Linux内核作为构建LFS的一部分时,强烈建议你确保系统首先正确的引导树莓派发行版的内核。

    树莓派上没有GRUB,我们代替依赖树莓派发行版的 bootloader 去引导。

    退出chroot,编辑 /boot/cmdline.txt ,将 root=/dev/mmcblk0p2 改为 root=/dev/mmcblk0p4

十. 最后

  1. 创建 /etc/lfs-release 文件

cat > /etc/lsb-release << "EOF"
DISTRIB_ID="Pi Linux From Scratch"
DISTRIB_RELEASE="LFS-BOOK-SVN-20161221"
DISTRIB_CODENAME="kevin"
DISTRIB_DESCRIPTION="Pi Linux From Scratch"
EOF

  2. 安装配置 dhcpcd

cd /sources
tar -Jxf dhcpcd-6.11.5.tar.xz
cd dhcpcd-6.11.5
./configure --libexecdir=/lib/dhcpcd \
            --dbdir=/var/lib/dhcpcd  &&
make
make install
cd /sources
rm -rf dhcpcd-6.11.5

# 有线网络配置cat > /etc/sysconfig/ifconfig.eth0 << "EOF"ONBOOT="no"IFACE="eth0"SERVICE="dhcpcd"DHCP_START="-b -q"DHCP_STOP="-k"EOF

# 无线网络配置cat > /etc/sysconfig/ifconfig.wlan0 << "EOF"ONBOOT="yes" IFACE="wlan0" SERVICE="wpa"

# Additional arguments to wpa_supplicant WPA_ARGS=""

WPA_SERVICE="dhcpcd"DHCP_START="-b -q"DHCP_STOP="-k"EOF

# wifi配置cat > /etc/sysconfig/wpa_supplicant-wlan0.conf << "EOF"network={ssid="WiFi-name1"psk="WiFi-password1"priority=5}EOF

  3. 安装 OpenSSH

# openssh依赖于openssl库,先安装opensslcd /sources
tar -zxf openssl-1.0.2j.tar.gz
cd openssl-1.0.2j
./config --prefix=/usr         \
         --openssldir=/etc/ssl \
         --libdir=lib          \
         shared                \
         zlib-dynamic &&
make depend           &&
make
make MANDIR=/usr/share/man MANSUFFIX=ssl install &&
install -dv -m755 /usr/share/doc/openssl-1.0.2j  &&
cp -vfr doc/*     /usr/share/doc/openssl-1.0.2j
cd /sources
rm -rf openssl-1.0.2j

# 安装openssh
cd /sources
tar -zxf openssh-7.4p1.tar.gz
cd openssh-7.4p1
install  -v -m700 -d /var/lib/sshd &&
chown    -v root:sys /var/lib/sshd &&

groupadd -g 50 sshd        &&
useradd  -c ‘sshd PrivSep‘ \
         -d /var/lib/sshd  \
         -g sshd           \
         -s /bin/false     \
         -u 50 sshd
./configure --prefix=/usr                     \
            --sysconfdir=/etc/ssh             \
            --with-md5-passwords              \
            --with-privsep-path=/var/lib/sshd &&
make
make install &&
install -v -m755    contrib/ssh-copy-id /usr/bin     &&

install -v -m644    contrib/ssh-copy-id.1                     /usr/share/man/man1              &&
install -v -m755 -d /usr/share/doc/openssh-7.4p1     &&
install -v -m644    INSTALL LICENCE OVERVIEW README*                     /usr/share/doc/openssh-7.4p1

cd /sourcesrm -rf openssh-7.4p1

# 系统启动时开启ssh服务cd /sourcestar -Jxf blfs-bootscripts-20160902.tar.xzcd blfs-bootscripts-20160902make install-sshdcd /sourcesrm -rf blfs-bootscripts-20160902

  4. 重启系统

logout

umount -v $LFS/dev/pts
umount -v $LFS/dev
umount -v $LFS/run
umount -v $LFS/proc
umount -v $LFS/sys
umount -v $LFS

shutdown -r now

十一. 如何将PiLFS做成TF卡镜像

  1. 需要一台装有Linux系统的PC机

  2. 将TF卡上的boot分区和PiLFS分区的内容分别复制到PC机上的bootfiles和lfsfiles文件夹下

  3. 利用 gparted 格式化并重新划分TF卡:

    /dev/sdb1       50M        FAT32        boot分区

    /dev/sdb2       2G          EXT4          PiLFS分区

  4. 使用 parted -l 命令查看并取得boot分区的开始位置(bootStart)和PiLFS分区的结束位置(lfsEnd)

  5. 将bootfiles和lfsfiles文件夹下的内容分别复制到重新划分的boot分区和PiLFS分区

  6. 利用dd命令将TF卡做成镜像:

      dd if=/dev/sdb of=mylfs.img bs=1M count=2098

    其中,bs为bootStart的值,count为lfsEnd的值 

时间: 2024-12-16 19:57:02

Raspberry Pi(树莓派)上从零开始构建Linux系统(简称PiLFS)(三)的相关文章

Linux From Scratch(从零开始构建Linux系统,简称LFS)

一. 准备工作 1. 一. LFS目标架构 LFS的主要目标架构是Intel的32位架构.32位的计算机架构最广泛的支持了Linux系统,同时32架构使开源软件和非开源的软件能够和谐的工作. 为了构建系统,先决条件是,除了后面提到的要求之外,你需要有一个已经存在的Linux系统,例如Ubuntu.Red Hat/Fedora 或者是其它适用于32架构的Linux发行版系统.还需要指出的是一个32位的发行版是可以在一个64位的AMD/Intel计算机上安装使用的. 从LFS所构建出来的默认的64位

Linux From Scratch(从零开始构建Linux系统,简称LFS)- Version 7.7(二)

七. 构建临时系统 1. 通用编译指南 a. 确认是否正确设置了 LFS 环境变量 echo $LFS b. 假定你已经正确地设置了宿主系统的符号链接: 1)shell 使用的是 bash. 2)sh 是到 bash 的符号链接. 3)/usr/bin/awk 是到 gawk 的符号链接. 4)/usr/bin/yacc 是到 bison 的符号链接或者一个执行 bison 的小脚本. c. 构建临时系统中,确保解压软件包时你使用的是 lfs 用户. d. 除非特别说明,删除解压出来的目录和所有

Linux From Scratch(从零开始构建Linux系统,简称LFS)- Version 7.7(三)

八. 构建LFS系统 1. 准备虚拟内核文件系统 内核会挂载几个文件系统用于自己和用户空间程序交换信息.这些文件系统是虚拟的,并不占用实际磁盘空间,它们的内容会放在内存里. mkdir -pv $LFS/{dev,proc,sys,run} mknod -m 600 $LFS/dev/console c 5 1 mknod -m 666 $LFS/dev/null c 1 3 mount -v --bind /dev $LFS/dev mount -vt devpts devpts $LFS/d

树莓派进阶之路 (012) - 关于Raspberry Pi树莓派无线网卡配置

Raspberry Pi树莓派无线网卡配置[多重方法备选] 要想让树莓派方便操作,肯定需要配置无线网卡,这样可以大大增强树莓派的移动性和便利性,其实配置无线网卡基本就是和普通linux平台下配置无线网卡一样,几种方法大同小异,具体如下: 一.第一种方法:通过配置 /etc/network/interfaces 文件实现sudo nano /etc/network/interfaces修改后文件内容如下:auto lo iface lo inet loopbackiface eth0 inet d

Raspberry Pi(树莓派)国内软件源

树莓派自带的软件源是 1 deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi 由于网站在国外,导致下载速度非常慢,因此需要修改为国内镜像站点即可. Raspberry Pi(树莓派)国内软件源: 修改配置文件 1 [email protected] ~ $ vi /etc/apt/sources.list 2 3 deb http://mirrors.neusoft.edu.cn/ra

嵌入式 Linux系统编程(三)——标准IO库

嵌入式 Linux系统编程(三)--标准IO库 与文件IO函数相类似,标准IO库中提供的是fopen.fclose.fread.fwrite等面向流对象的IO函数,这些函数在实现时本身就要调用linux的文件IO这些系统调用. 一.标准IO库函数的缓冲机制 由于IO设备的访问速度与CPU的速度相差好几个数量级,为了协调IO设备与CPU的速度的不匹配,对于块设备,内核使用了页高速缓存,即数据会先被拷贝到操作系统内核的页缓存区中,然后才会从操作系统内核的缓存区拷贝到应用程序的地址空间. 当应用程序尝

Linux系统初学-第三课 Linux网络配置

Linux系统初学-第三课 Linux网络配置 1.动态IP配置 配置文件路径 /etc/sysconfig/network-scripts/ ls查看网卡eth0,其中HWADDR值得获取:ifconfig eht0 | grep HWaddr,保存之后,service network restart. c BOOTPROTO 网络配置参数,BOOTPROTO=dhcp 动态IP,BOOTPROTO=static 静态IP,BOOTPROTO=none 无(不指定) NETMASK 网络掩码,

树莓派3代B型 Raspberry Pi Model 3 B 安装 centos7系统

板子类型: Raspberry Pi Model 3 B 搭配 32G的SD卡: 下载支持树莓派版本的centos7系统 https://buildlogs.centos.org/centos/7/isos/armhfp/ Mac上下载一个SD卡管理工具(格式化用) https://www.sdcard.org/downloads/formatter_4/eula_mac/index.html 格式化前: 格式化操作: 格式化后,发现在电脑上也能发现SD卡 先卸载掉外部磁盘 [email pro

如何使用MXNet在树莓派上搭建实时目标识别系统 AWS

https://cloud.tencent.com/developer/article/1118784 亚马逊的开源深度学习引擎 Apache MXNet 除了支持多 GPU 训练和部署复杂模型外,还可以生成非常轻量级的神经网络模型.我们也可以将这些模型表征部署到有限内存和计算力的移动端中.这就令 MXNet 可以完美地在树莓派中运行深度学习模型. 在本文中,我们将使用 MXNet 在树莓派上创建计算机视觉系统.我们同样也会讨论如何使用 AWS IoT 以连接到 AWS Cloud 中,因此我们