- 硬件说明
第一种:pogoplug pro/video/v3 (据说熊老板出的货是video版的)
基本参数如下:
架构:ARM v6l
处理器:PLX NAS-7820 700MHz 双核
内存: DDR2 128MB
FLASH: NAND 128MB
接口:USB x4 , SATA x1 , 千兆 x 1, mini PCI-e x 1
产品编号:
POGO-P01 - Pro
POGO-P21 - V3
POGO-P24 - V3
POGO-P25 - V3
POGO-B01 - Classic
POGO-B02 - Classic
POGO-B03 - Classic
POGO-B04 - Classic
————————————————————————————————————
第二种:pogoplug v2 (pink/gray)
基本参数如下:
架构:ARM v5te
处理器:Marvell Kirkwood 1.2GHz (88f6281这个大家很熟了吧)
内存:256MB
FLASH: NAND 128MB
接口:接口:USB x4 , 千兆 x 1,
产品编号:
POGO-E02
POGO-E02G
———————————————————————————————————
Marvell的这个芯片在很多产品都用了,国外也有大量相关的改机资料,
所以很多资料都是针对第二个型号写的,尽管都是基于ARM的,而且事实上编译好
的文件也绝大多数能通用,但还是有区别的。所以大家在引用资料的时候,最好
先区分一下。
pogoplug pro/video/v3内核为ARM11 MPCore
编译-march=armv6k -mtune=mpcore -mfloat-abi=softfp
或者-mcpu=mpcore -mfloat-abi=softfp
- 系统安装
- 通过板载u-boot启动
参考http://blog.qnology.com/2015/04/hacking-pogoplug-v3oxnas-proclassic.html?showComment=1464198116974#c7190902143829429000
https://forum.doozan.com/read.php?3,16017
Use Putty or your favorite SSH client to connect to your Pogoplug前提是Pogoplug上有linux系统
Verify Pogoplug is expected version (Oxnas)
# cat /proc/cpuinfo | grep Hardware
Hardware : PLXTECH NAS782X SoC (Flattened Device Tree)
#Stop here if not expected output.
#Expected output
#Hardware : PLXTECH NAS782X
#stop my.pogoplug.com service
killall hbwd
#download firmware utilities
cd /tmp
wget http://download.qnology.com/pogoplug/v4/nanddump
wget http://download.qnology.com/pogoplug/v4/nandwrite
wget http://download.qnology.com/pogoplug/v4/flash_erase
wget http://download.qnology.com/pogoplug/v4/fw_printenv
wget http://download.qnology.com/pogoplug/v4/fw_setenv
#make executable
chmod +x flash_erase fw_printenv fw_setenv nanddump nandwrite
或者也可以用apt-get install systemd u-boot-tools mtd-util安装相关工具
#remount '/' as read/write
#by default the Pogoplug OS (internal flash) is read only
mount -o remount,rw /
#setup fw_env.config for oxnas
echo "/dev/mtd0 0x00100000 0x20000 0x20000">/etc/fw_env.config
#save original envs
/usr/local/cloudengines/bin/blparam > /blparam.txt
#Download and flash new uBoot
wget http://download.qnology.com/pogoplug/oxnas/uboot.2013.10-tld-4.ox820.bodhi.tar
wget http://download.qnology.com/pogoplug/oxnas/uboot.2013.10-tld-4.ox820.bodhi.tar.md5
#check md5sum
md5sum -c uboot.2013.10-tld-4.ox820.bodhi.tar.md5
我下的版本是uboot.2015.10-tld-2.ox820.bodhi.tar
#extract uBoot files
tar -xf uboot.2013.10-tld-4.ox820.bodhi.tar
建议先# cat /proc/mtd查看分区
# dmesg | grep -i 'bad'查看坏块
#BE EXTRA CAREFUL WITH THE THESE COMMANDS.
#NO TYPOS! CUT AND PASTE.
#Erase and flash uboot on mtd0
#Flash encoded spl stage1 to 0x0
/tmp/flash_erase /dev/mtd0 0x0 6
/tmp/nandwrite /dev/mtd0 uboot.spl.2013.10.ox820.850mhz.mtd0.img
#Flash uboot to 0x40000
/tmp/nandwrite -s 262144 /dev/mtd0 uboot.2013.10-tld-4.ox820.mtd0.img
#Flash uboot environment
#Erase 1 block starting 0x00100000
/tmp/flash_erase /dev/mtd0 0x00100000 1
/tmp/nandwrite -s 1048576 /dev/mtd0 pogopro_uboot_env.img
#default to pogoplug pro dtb
/tmp/fw_setenv fdt_file '/boot/dts/ox820-pogoplug-pro.dtb'
/tmp/fw_setenv dt_load_dtb 'ext2load usb 0:1 $dtb_addr $fdt_file'
#Set MAC Address
/tmp/fw_setenv ethaddr "$(cat /sys/class/net/eth0/address)"
这条我自己改的如下
root@PogoPlug-Pro:/tmp# fw_printenv ethaddr '00:30:e0:00:00:01'
root@PogoPlug-Pro:/tmp# fw_setenv cesvcid '10944208800246860E20UM11A01'
Setup Netconsole
#Update IP Addresses as appropriate
#ipaddr = Pogoplug IP
/tmp/fw_setenv preboot 'run preboot_nc'
/tmp/fw_setenv ipaddr '172.31.0.128'
/tmp/fw_setenv serverip '172.31.0.100'
#print out all uboot environment parameters
#make sure there are no errors
/tmp/fw_printenv > /fw_printenv.txt
/tmp/fw_printenv
目前已经把最新的u-boot刷入板载flash以及设置好了环境变量,可以从U盘启动或者硬盘启动
- 制作启动硬盘/U盘
确定需制作的硬盘所在/dev/sdX
清空32M扇区,这一步会导致硬盘分区表丢失dd if=/dev/zero of=/dev/sdb bs=1M count=32
格式化U盘&硬盘
fdisk -c=dos /dev/sdX
t/1/c
创建第一个启动分区内建boot文件夹放uImage、uInitrd、dtb
n/p/1/+100M
a貌似这个在u-boot引导下启动标志没用,具体不清楚
创建第二个主分区放系统文件rootfs
n/p/2/+40G
创建第三个主分区swap
n/p/3/+2G
t/3/82
创建第四个主分区放其他内容
n/p/4
使用默认参数,回车2次
写进分区表(注意检查设置是否正确)
w
#Format USB Flash Drive
cd /tmp
wget http://archlinuxarm.org/os/pogoplug/mke2fs
chmod 755 mke2fs
或者也可以用apt-get install systemd u-boot-tools mtd-util安装相关工具
#format as ext3 and label partition as 'rootfs'
mke2fs -t ext3 -O ^has_journal /dev/sda2(大容量U盘只能用这个命令格)
tune2fs -L "rootfs" /dev/sda2
mount
mkdir /tmp/usb
mount /dev/sda2 /tmp/usb
cd /tmp/usb
#Download Debian rootfs
wget http://download.qnology.com/pogoplug/oxnas/Debian-3.17.0-oxnas-tld-1-rootfs-bodhi.tar.bz2
wget http://download.qnology.com/pogoplug/oxnas/Debian-3.17.0-oxnas-tld-1-rootfs-bodhi.tar.bz2.md5
#check md5sum
md5sum -c Debian-3.17.0-oxnas-tld-1-rootfs-bodhi.tar.bz2.md5
我下的版本是Debian-4.4.54-oxnas-tld-1-rootfs-bodhi.tar.bz2
#extract
tar -xvjf Debian-3.17.0-oxnas-tld-1-rootfs-bodhi.tar.bz2
#cleanup
rm Debian-3.17.0-oxnas-tld-1-rootfs-bodhi.tar.bz2*
#Set etc/fstab
LABEL=rootfs / ext3 noatime,errors=remount-ro 0 1
/dev/sda3 swap swap defaults 0 0
#Sync and reboot, cross your fingers
sync
cd ..
umount /tmp/usb
reboot
注意如果是硬盘此时重启后可能u-boot无法加载uImage和uInirtd需要在重启前
mke2fs -t ext3 -O ^has_journal /dev/sda1
mkdir /tmp/sata
mount /dev/sda1 /tmp/sata
mount /dev/sda2 /tmp/usb
将rootfs内boot文件夹复制到sda1分区内,boot文件夹内只保留uImage和uInirtd和dts
Initial Debian Setup
#Change password
passwd
#Generate New OpenSSH Keys
rm /etc/ssh/ssh_host*
ssh-keygen -A
#Initial update
apt-get update
apt-get upgrade
#Set hostname to DebianPlug or whatever you like
echo DebianPlug>/etc/hostname
#Set Time Zone
tzselect
reboot
- 制作启动kernel
Upgrade Debian kernel
#backup original kernel files
cd /boot
mkdir backup
mv *3.17* backup
mv uImage backup/uImage3.17
mv uInitrd backup/uInitrd3.17
#download from bodhi's dropbox
wget --no-check-certificate https://www.dropbox.com/s/o9fp0xg8b6aajg6/linux-3.18.5-oxnas-tld-1.bodhi.tar.bz2
#check md5
echo "df386f09cf7323472d40432d3da382d5 linux-3.18.5-oxnas-tld-1.bodhi.tar.bz2" |md5sum -c
我下的版本是linux-4.4.133-oxnas-tld-1.bodhi.tar.bz2
#extract
tar -xvjf linux-3.18.5-oxnas-tld-1.bodhi.tar.bz2
#install kernel and headers
dpkg -i linux-image-3.18.5-oxnas-tld-1_1_armel.deb
dpkg -i linux-headers-3.18.5-oxnas-tld-1_1_armel.deb
#Create uImage and uInitrd manually
(前担是已有vmlinuz-3.18.5-oxnas-tld-1和initrd.img-3.18.5-oxnas-tld-1)
mkimage -A arm -O linux -T kernel -C none -a 0x60008000 -e 0x60008000 -n Linux-3.18.5-oxnas-tld-1 -d /boot/vmlinuz-3.18.5-oxnas-tld-1 /boot/uImage
mkimage -A arm -O linux -T ramdisk -C gzip -a 0x60000000 -e 0x60000000 -n initramfs-3.18.5-oxnas-tld-1 -d /boot/initrd.img-3.18.5-oxnas-tld-1 /boot/uInitrd
#clean up
rm linux-3.18.5-oxnas-tld-1.bodhi.tar.bz2
rm *.dtb
#reboot and verify
reboot
uname -a
另一种是自己编译kernel和initrd.img(后面讲)
编译出来的结果通过tftpboot来加载测试正确性
tftpboot 60500000 /boot/uImage
tftpboot 60e00000 /boot/uInitrd
tftpboot 62c00000 /boot/dts/ox820-pogoplug-pro.dtb
bootm 60500000 60e00000 62c00000
- 通过SATA硬盘启动
参考https://archlinuxarm.org/forum/viewtopic.php?f=55&t=2146&sid=f4dc4863e3a93822a4f9e925b3cbda45
https://forum.doozan.com/read.php?2,16044
因刷到硬盘启动扇区上的u-boot为2013.10之前旧版只能用内核3.18.5或更早版本
工具在oxnas_sata_boot.tgz(oxnasboottarball.zip中)或者u-boot-hdd.tar中,下载地址在我网盘
第一步是编辑`disk_create`脚本中/ dev / sdX,以确保它将stage(MBR)/u-boot/kernel写入我们想要的磁盘
注意此步骤会破坏分区表
第二步修改链接stage1.wrapped,u-boot.wrapped和uImage使用需要及匹配的,如850Mhz超频stage1,Pogoplug Pro有PCI总线用uImage.pci
注意可以编辑`disk_create`脚本只刷stage1.wrapped,u-boot.wrapped,内核uImage放到主分区内,没测试过
第三步硬盘分区创建“rootfs”(参考制作启动硬盘/U盘)
最后安装内核
将重新运行disk_create脚本,将内核放入/ dev / sdz1(最好是拷贝到启动分区的/boot/文件夹下)
- 软件安装
- 基础设置
确保能上网,设置/etc/network/interface
# mkswap /dev/sda3
# swapon /dev/sda3
# free -m
更新源nano /etc/apt/sources.list
deb http://mirrors.ustc.edu.cn/debian stretch main contrib non-free
deb-src http://mirrors.ustc.edu.cn/debian stretch main contrib non-free
deb http://mirrors.ustc.edu.cn/debian stretch-backports main contrib non-free
deb-src http://mirrors.ustc.edu.cn/debian stretch-backports main contrib non-free
deb http://mirrors.ustc.edu.cn/debian stretch-proposed-updates main contrib non-free
deb-src http://mirrors.ustc.edu.cn/debian stretch-proposed-updates main contrib non-free
deb http://mirrors.ustc.edu.cn/debian stretch-updates main contrib non-free
deb-src http://mirrors.ustc.edu.cn/debian stretch-updates main contrib non-free
deb http://mirrors.ustc.edu.cn/debian-security/ stretch/updates main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian-security/ stretch/updates main non-free contrib
apt-get update
2.安装必备软件
apt-get install screen kernel-package libncurses5-dev fakeroot build-essential bc libssl-dev
- 去除中文乱码
从windows的字体目录中找到simsun.ttc文件,通过WinSCP工具连接上debian系统,把该文件传送到该系统中的/usr/share/fonts/truetype目录下
或者apt-get install ttf-wqy-microhei
对终端乱码配置 Local
apt install locales
dpkg-reconfigure locales
en_US.UTF-8 UTF-8
zh_CN.GBK GBK
zh_CN.GB2312
zh_CN.UTF-8 UTF-8
默认语言选择 en_US.UTF-8
编辑 locale 文件
nano /etc/default/locale
检查 lang 是否设置为 en_US.UTF-8 没有则修改
或者apt install zhcon
- 系统时间
联网更新
service ntpd stop
ntpdate ntp.api.bz
查看系统时间
date
取消开机启动
chkconfig ntpd off
或者
# apt install sysv-rc-conf
# sysv-rc-conf
sysv-rc-conf 会读取 /etc/init.d 里的文件以及 rcx.d (x为运行级别)下的软连接等信息
系统运行级别:
*0:关机级别
*1:单用户运行级别,运行rc.sysinit和rc1.d目录下的脚本
*2:多用户,但系统不会启动NFS,字符模式,在有些linux系统中,级别2为默认模式,具有网络功能,如ubuntu.debian
*3:多用户,字符模式,系统启动具有网络功能,redhat常用运行级别
*4:用户自定义级别
*5:图形界面模式,redhat常用运行级别
*6:重启级别
*S:单用户运行级别,只运行rc.sysinit文件
或者
update-rc.d -f ntpd remove
时区设置
dpkg-reconfigure tzdata
- 编译内核
Screen -S kernel
cd /usr/src/
(1)下载对应版本的源码</