Pogoplug POGO-E02にLinuxを導入する
事実上サービス終了状態にあるPogoplug専用のハードウェア(POGO-E02)を処分しようかと思ったのですが、Arch Linuxが簡単にインストールできそうなのでやってみました。
手順
基本的には、Arch Linux公式の以下のページに記載の導入手順通りに作業すればよいのですが、一つ重大な問題があります。
Pogoplug v2 (Pink/Gray) | Arch Linux ARM
SSH有効化…
一つ目の手順で、pogoplugのオンライン画面からSSHを有効にせよとあるのですが、これが現状では不可能です。
pogoplugのサイト自体は消滅せずに存在しているものの、挙動は異常に重く、ネットワーク内のpogoplugデバイスも認識されません。
一般的なNASの管理画面とは異なり、pogoplugのオンライン画面はpogoplugデバイス上のWebサーバーではなく、pogoplugのWebサイト上で動いているものなので、どうにもできません。
シリアルコンソールに接続
正規の手段でSSHを有効化できないため、直接ハードウェア経由で内部にアクセスすることにします。古いデバイスだけあって検索してみると既に先人がシリアル端子を発見・特定しています。
Qui's techNOLOGY Blog: Pogoplug V2 and V3 Serial Connection - E02, P21/P22, Pro
上記のblogを参考に実機を分解して、作業を進めます。基板上のCON3とシルク印刷されている未使用のコネクタがシリアル端子になります。ピンアサインは画像の通りで上からGND, RXD, TXD, VCC(3.3V)となっています。
参考にしたblogではCD-ROMドライブのアナログオーディオケーブルがこのコネクタに適合すると書かれていますが、私の手元にはないので普通のピンソケット付きのジャンパ線を無理矢理差し込みました。本当に無理矢理なのでキツキツです。また、USB-シリアル変換基盤も手持ちにはないので、Arduino MEGA(互換ボード)のハードウェアシリアル端子を使うことにしました。POGOとArduinoのGND同士と、それぞれのRXをTXに繋ぎます。
この際、POGOに合わせて115200bpsで通信するようArduino側に予めスケッチを書き込んでおきます。スケッチ内容は単にPOGOに接続したハードウェアシリアルとPCのUSBに繋がっているシリアルポートで受信したデータを相互に右から左に受け流すだけです。
void setup() { // initialize serial ports Serial.begin(115200); // USB serial port 0 Serial3.begin(115200); // serial port 3 (MEGA's H/W serial) } byte rx_byte = 0; // stores received data byte void loop() { // Process data byte from USB serial port if (Serial.available()) { rx_byte = Serial.read(); Serial3.write(rx_byte); } // Process data byte from serial port 3 if (Serial3.available()) { rx_byte = Serial3.read(); Serial.write(rx_byte); } }
※ハードウェアシリアルが利用可能なモデルならMEGA以外でも同様に利用可能だと思いますが、ソフトウェアシリアルでは使い物になりません。当初Arduino NANOのソフトウェアシリアルで試していたのですが、大量に文字化けが発生しました。この違いは恐らくハードウェアシリアルはバッファリングされているのに対し、ソフトウェアではされておらず、loop()実行中に送信されてきたbit列を受信できずに失うためだと思います。
POGO起動
この状態でPogoplugデバイスの電源を入れると、シリアルコンソール経由で以下の情報が垂れ流されてきます。U-BootからLinux Kernelが呼び出されているあたりの一連のブートシーケンスが見えます。
U-Boot 1.1.4 (Sep 28 2009 - 11:55:23) Cloud Engines v2.0 (3.4.16) U-Boot code: 00600000 -> 0067FFF0 BSS: -> 00690D60 Soc: 88F6281 A0 (DDR2) CPU running @ 1200Mhz L2 running @ 400Mhz SysClock = 400Mhz , TClock = 200Mhz DRAM CAS Latency = 5 tRP = 5 tRAS = 18 tRCD=6 DRAM CS[0] base 0x00000000 size 256MB DRAM Total size 256MB 16bit width Flash: 0 kB Addresses 8M - 0M are saved for the U-Boot usage. Mem malloc Initialization (8M - 7M): Done NAND:128 MB CPU : Marvell Feroceon (Rev 1) CLOUD ENGINES BOARD: PPV2 Streaming disabled Write allocate disabled USB 0: host mode PEX 0: interface detected no Link. Net: egiga0 [PRIME], egiga1 Hit any key to stop autoboot: 0 NAND read: device 0 offset 0x100000, size 0x200000 Reading data from 0x2ff800 -- 100% complete. 2097152 bytes read: OK ## Booting image at 00800000 ... Image Name: Linux-2.6.22.18 Created: 2010-10-19 23:05:02 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1979140 Bytes = 1.9 MB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK OK Starting kernel ... Uncompressing Linux............................................................................................................................ done, booting the kernel. [ 0.000000] Linux version 2.6.22.18 (bdietrich@buildman) (gcc version 4.2.1) #81 Tue Oct 19 16:05:00 PDT 2010 [ 0.000000] CPU: ARM926EJ-S [56251311] revision 1 (ARMv5TE), cr=00053177 [ 0.000000] Machine: Feroceon-KW [ 0.000000] Using UBoot passing parameters structure [ 0.000000] Memory policy: ECC disabled, Data cache writeback [ 0.000000] CPU0: D VIVT write-back cache [ 0.000000] CPU0: I cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets [ 0.000000] CPU0: D cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets [ 0.000000] Built 1 zonelists. Total pages: 65024 [ 0.000000] Kernel command line: console=ttyS0,115200 root=/dev/mtdblock2 ro [ 0.000000] PID hash table entries: 1024 (order: 10, 4096 bytes) [ 0.000000] Console: colour dummy device 80x30 [ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) [ 0.010000] Memory: 256MB 0MB 0MB 0MB = 256MB total [ 0.010000] Memory: 255872KB available (3592K code, 253K data, 124K init) [ 0.250000] Mount-cache hash table entries: 512 [ 0.250000] CPU: Testing write buffer coherency: ok [ 0.250000] NET: Registered protocol family 16 [ 0.250000] [ 0.250000] CPU Interface [ 0.250000] ------------- [ 0.250000] SDRAM_CS0 ....base 00000000, size 256MB [ 0.250000] SDRAM_CS1 ....disable [ 0.250000] SDRAM_CS2 ....disable [ 0.250000] SDRAM_CS3 ....disable [ 0.250000] PEX0_MEM ....base e8000000, size 128MB [ 0.250000] PEX0_IO ....base f2000000, size 1MB [ 0.250000] INTER_REGS ....base f1000000, size 1MB [ 0.250000] NFLASH_CS ....base fa000000, size 2MB [ 0.250000] SPI_CS ....base f4000000, size 16MB [ 0.250000] BOOT_ROM_CS ....no such [ 0.250000] DEV_BOOTCS ....no such [ 0.250000] CRYPT_ENG ....base f0000000, size 2MB [ 0.250000] [ 0.250000] Marvell Development Board (LSP Version KW_LSP_4.2.7_patch21_with_rx_desc_tuned)-- SHEEVA PLUG Soc: 88F6281 A0 LE [ 0.250000] [ 0.250000] Detected Tclk 200000000 and SysClk 400000000 [ 0.250000] MV Buttons Device Load [ 0.250000] Marvell USB EHCI Host controller #0: c0652600 [ 0.750000] PEX0 interface detected no Link. [ 0.750000] PCI: bus0: Fast back to back transfers enabled [ 0.750000] SCSI subsystem initialized [ 0.750000] usbcore: registered new interface driver usbfs [ 0.750000] usbcore: registered new interface driver hub [ 0.750000] usbcore: registered new device driver usb [ 0.750000] NET: Registered protocol family 2 [ 0.760000] Time: kw_clocksource clocksource has been installed. [ 0.850000] IP route cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.850000] TCP established hash table entries: 8192 (order: 4, 65536 bytes) [ 0.850000] TCP bind hash table entries: 8192 (order: 3, 32768 bytes) [ 0.850000] TCP: Hash tables configured (established 8192 bind 8192) [ 0.850000] TCP reno registered [ 0.880000] RTC has been updated!!! [ 0.880000] RTC registered [ 0.880000] Use the XOR engines (acceleration) for enhancing the following functions: [ 0.880000] o RAID 5 Xor calculation [ 0.880000] o kernel memcpy [ 0.880000] o kenrel memzero [ 0.880000] Number of XOR engines to use: 4 [ 0.880000] cesadev_init(c00117b0) [ 0.880000] mvCesaInit: sessions=640, queue=64, pSram=f0000000 [ 0.880000] MV Buttons Driver Load [ 0.880000] squashfs: version 3.3 (2007/10/31) Phillip Lougher [ 0.880000] squashfs: LZMA suppport for slax.org by jro [ 0.880000] JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc. [ 0.880000] io scheduler noop registered [ 0.880000] io scheduler anticipatory registered (default) [ 0.900000] Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled [ 0.900000] serial8250.0: ttyS0 at MMIO 0xf1012000 (irq = 33) is a 16550A [ 0.910000] RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize [ 0.920000] Loading Marvell Ethernet Driver: [ 0.920000] o Cached descriptors in DRAM [ 0.920000] o DRAM SW cache-coherency [ 0.930000] o Single RX Queue support - ETH_DEF_RXQ=0 [ 0.930000] o Single TX Queue support - ETH_DEF_TXQ=0 [ 0.940000] o TCP segmentation offload enabled [ 0.940000] o Receive checksum offload enabled [ 0.950000] o Transmit checksum offload enabled [ 0.950000] o Network Fast Processing (Routing) supported [ 0.960000] o Driver ERROR statistics enabled [ 0.960000] o Driver INFO statistics enabled [ 0.970000] o Proc tool API enabled [ 0.970000] o Rx descripors: q0=128 [ 0.970000] o Tx descripors: q0=532 [ 0.980000] o Loading network interface(s): [ 0.990000] o eth0, ifindex = 1, GbE port = 0 [ 0.990000] o eth1, ifindex = 2, GbE port = 1 [ 1.000000] [ 1.000000] mvFpRuleDb (cfdf6000): 2048 entries, 8192 bytes [ 1.000000] Intel(R) PRO/1000 Network Driver - version 7.3.20-k2-NAPI [ 1.010000] Copyright (c) 1999-2006 Intel Corporation. [ 1.020000] e100: Intel(R) PRO/100 Network Driver, 3.5.17-k4-NAPI [ 1.020000] e100: Copyright(c) 1999-2006 Intel Corporation [ 1.030000] [ 1.030000] Warning Sata is Powered Off [ 1.030000] NFTL driver: nftlcore.c $Revision: 1.98 $, nftlmount.c $Revision: 1.41 $ [ 1.040000] NAND device: Manufacturer ID: 0xad, Chip ID: 0xf1 (Hynix NAND 128MiB 3,3V 8-bit) [ 1.050000] Scanning device for bad blocks [ 1.100000] Using static partition definition [ 1.110000] Creating 4 MTD partitions on "nand_mtd": [ 1.110000] 0x00000000-0x00100000 : "u-boot" [ 1.120000] 0x00100000-0x00500000 : "uImage" [ 1.120000] 0x00500000-0x02500000 : "root" [ 1.130000] 0x02500000-0x08000000 : "data" [ 1.130000] ehci_marvell ehci_marvell.70059: Marvell Orion EHCI [ 1.140000] ehci_marvell ehci_marvell.70059: new USB bus registered, assigned bus number 1 [ 1.180000] ehci_marvell ehci_marvell.70059: irq 19, io base 0xf1050100 [ 1.200000] ehci_marvell ehci_marvell.70059: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004 [ 1.200000] usb usb1: configuration #1 chosen from 1 choice [ 1.210000] hub 1-0:1.0: USB hub found [ 1.210000] hub 1-0:1.0: 1 port detected [ 1.330000] USB Universal Host Controller Interface driver v3.0 [ 1.610000] usb 1-1: new high speed USB device using ehci_marvell and address 2 [ 1.760000] usb 1-1: configuration #1 chosen from 1 choice [ 1.760000] hub 1-1:1.0: USB hub found [ 1.770000] hub 1-1:1.0: 4 ports detected [ 1.880000] usbcore: registered new interface driver usblp [ 1.880000] drivers/usb/class/usblp.c: v0.13: USB Printer Device Class driver [ 1.890000] Initializing USB Mass Storage driver... [ 1.890000] usbcore: registered new interface driver usb-storage [ 1.900000] USB Mass Storage support registered. [ 1.910000] mice: PS/2 mouse device common for all mice [ 1.910000] i2c /dev entries driver [ 1.910000] Linux telephony interface: v1.00 [ 1.920000] md: linear personality registered for level -1 [ 1.920000] md: raid0 personality registered for level 0 [ 1.930000] md: raid1 personality registered for level 1 [ 2.100000] raid6: int32x1 97 MB/s [ 2.270000] raid6: int32x2 114 MB/s [ 2.440000] raid6: int32x4 122 MB/s [ 2.610000] raid6: int32x8 110 MB/s [ 2.610000] raid6: using algorithm int32x4 (122 MB/s) [ 2.610000] md: raid6 personality registered for level 6 [ 2.620000] md: raid5 personality registered for level 5 [ 2.620000] md: raid4 personality registered for level 4 [ 2.630000] raid5: measuring checksumming speed [ 2.680000] arm4regs : 1084.000 MB/sec [ 2.730000] 8regs : 754.800 MB/sec [ 2.780000] 32regs : 899.600 MB/sec [ 2.780000] raid5: using function: arm4regs (1084.000 MB/sec) [ 2.790000] device-mapper: ioctl: 4.11.0-ioctl (2006-10-12) initialised: dm-devel@redhat.com [ 2.790000] dm_crypt using the OCF package. [ 2.800000] sdhci: Secure Digital Host Controller Interface driver [ 2.800000] sdhci: Copyright(c) Pierre Ossman [ 2.810000] usbcore: registered new interface driver usbhid [ 2.810000] drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver [ 2.820000] TCP cubic registered [ 2.820000] NET: Registered protocol family 1 [ 2.830000] NET: Registered protocol family 17 [ 2.830000] md: Autodetecting RAID arrays. [ 2.840000] md: autorun ... [ 2.840000] md: ... autorun DONE. [ 4.880000] Empty flash at 0x009ac208 ends at 0x009ac800 [ 10.080000] VFS: Mounted root (jffs2 filesystem) readonly. [ 10.080000] Freeing init memory: 124K init started: BusyBox v1.7.0 (2008-02-26 19:25:17 IST) starting pid 267, tty '': '/etc/init.d/rcS' [ 12.210000] eth0: started udhcpc (v1.7.0) started HWADDR 00 0x25 0x31 0x** 0x** 0x** (注記: MACアドレスのため伏せています) PIP0 67 PIP1 139 cat: can't open '/etc/resolv.conf': No such file or directory route: SIOCDELRT: No such process grep: /etc/resolv.conf: No such file or directory Sending discover... Sending discover... Sending discover... HWADDR 00 0x25 0x31 0x** 0x** 0x** (注記: MACアドレスのため伏せています) PIP0 67 PIP1 139 No lease, forking to background Loading fs modules: [ 22.290000] fuse init (API version 7.8) Success [ 22.600000] ufsd: module license 'Commercial product' taints kernel. [ 22.620000] ufsd: driver (8.6, Jun 5 2013 10:00:32, LBD=ON, ioctl) loaded at bf040000 [ 22.620000] NTFS support included [ 22.620000] Hfs+/HfsX support included [ 22.620000] For 'CloudEngines_PogoPlug_2011-08-03' Loading rt3070sta.ko: [ 23.160000] rtusb init ---> [ 23.160000] usbcore: registered new interface driver rt2870 Success Loading tun.ko: [ 23.180000] tun: Universal TUN/TAP device driver, 1.6 [ 23.190000] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> Success Loading xce.ko: [ 23.220000] Cloud Engines XCE Init [Version: 2.0.5.10] [ 23.230000] XCE: CPU MEMORY MAP: [ 23.230000] XCE: -- 0x00001000 - 0xbeffffff (3055 MB) User Space Mappings [ 23.240000] XCE: -- 0xbf000000 - 0xbfffffff ( 16 MB) Kernel module space [ 23.250000] XCE: -- 0xc0000000 - 0xcfffffff ( 256 MB) Kernel direct-mapped ram [ 23.250000] XCE: -- 0xd0800000 - 0xe7ffffff ( 376 MB) Kernel vmalloc space [ 23.260000] XCE: -- 0xe8000000 - 0xfeffffff ( 367 MB) Kernel platform space [ 23.270000] XCE: CPU FEATURES: [ 23.270000] XCE: -- I Cache: enabled [ 23.280000] XCE: -- D Cache: enabled [ 23.280000] XCE: -- Branch Predict: enabled [ 23.290000] XCE: -- MMU: enabled [ 23.290000] XCE: -- Alignment Abort: enabled [ 23.290000] XCE: -- ICache Prefetch: enabled [ 23.300000] XCE: -- DCache Prefetch: enabled [ 23.300000] XCE: -- L2 Cache: enabled [ 23.310000] XCE: -- L2 Prefetch: disabled [ 23.310000] XCE: -- L2 Writethrough: disabled [ 23.320000] XCE: -- Write Allocate: disabled [ 23.320000] XCE: -- Streaming: disabled [ 23.330000] XCE: BLPARAMS: reading 2048 bytes @ a0000 [ 23.330000] XCE: Loaded Property Size: 2048 [ 23.340000] XCE: - 'cesvcid' -> '**************************' (注記: 製品ラベルに印字されたIDのため伏せています) [ 23.340000] XCE: - 'ceboardver' -> 'PPV2' [ 23.350000] XCE: Current GPIO State: [ 23.350000] XCE: GPIO L OUT: 0xeff00000 [ 23.360000] XCE: GPIO L OE: 0xefffffff [ 23.360000] XCE: GPIO L BLINK: 0x00000000 [ 23.360000] XCE: GPIO L POL: 0x00000000 [ 23.370000] XCE: GPIO L IN: 0x00000080 [ 23.370000] XCE: GPIO H OUT: 0xffffffff [ 23.380000] XCE: GPIO H OE: 0xfffc3fff [ 23.380000] XCE: GPIO H BLINK: 0x00008000 [ 23.380000] XCE: GPIO H POL: 0x00000000 [ 23.390000] XCE: GPIO H IN: 0x0003c000 [ 23.390000] XCE: Kernel thread starting PID: 391 Success Starting hbplug: Success starting pid 393, tty '': '/bin/sh' -sh-3.2# [ 25.750000] XCE: BLPARAMS: reading 2048 bytes @ a0000 [ 25.760000] XCE: BLPARAMS: reading 2048 bytes @ a0800 [ 25.760000] XCE: BLPARAMS: reading 2048 bytes @ a1000 [ 25.770000] XCE: BLPARAMS: reading 2048 bytes @ a1800 [ 31.060000] XCE: XCE: LED -> DISCONNECTED
デバイス情報確認
完全な興味本位ですが、ソフトウェア的に手を加える前に現状の各種スペックを確認しておきます。いろいろ古いのが確認できます。
ちなみに、このシリアルコンソールはrootログインされた状態ですので、コマンド実行にパスワードなどのログイン情報は必要ありません。
- OS
-sh-3.2# uname -a Linux Pogoplug 2.6.22.18 #81 Tue Oct 19 16:05:00 PDT 2010 armv5tejl unknown
- CPU
-sh-3.2# cat /proc/cpuinfo Processor : ARM926EJ-S rev 1 (v5l) BogoMIPS : 1192.75 Features : swp half thumb fastmult edsp CPU implementer : 0x56 CPU architecture: 5TE CPU variant : 0x2 CPU part : 0x131 CPU revision : 1 Cache type : write-back Cache clean : cp15 c7 ops Cache lockdown : format C Cache format : Harvard I size : 16384 I assoc : 4 I line length : 32 I sets : 128 D size : 16384 D assoc : 4 D line length : 32 D sets : 128 Hardware : Feroceon-KW Revision : 0000 Serial : 0000000000000000
CPU/メモリ/FLASHストレージについては、現物の基盤からも確認できます。
画像右下のMマークに88F6-B1A2と書かれた半導体がMarvell社の組み込み機器向けCPUのKirkwoodで、ARMv5teアーキテクチャでシングルコア1.2GHz動作となっているようです。
CPUの左側にhynyx H5PS1G83EFRと刻印された半導体が2つ使用されています。これはDDR2の1GbitのDRAMですので、合計2048Mbit=256MBのメモリが搭載されていることになります。
CPUの少し上にPogoplug r2.0 C355と印字された黄色いシールが貼られているhynyx製らしき半導体も見えますが、恐らくこれがFLASHストレージです。
- Storage
-sh-3.2# cat /proc/mtd dev: size erasesize name mtd0: 00100000 00020000 "u-boot" mtd1: 00400000 00020000 "uImage" mtd2: 02000000 00020000 "root" mtd3: 05b00000 00020000 "data" -sh-3.2# df -h Filesystem Size Used Available Use% Mounted on /dev/mtdblock2 32.0M 20.8M 11.2M 65% / none 125.0M 4.0k 125.0M 0% /tmp
- Processes
-sh-3.2# ps -w PID Uid VSZ Stat Command 1 root 3400 S init 2 root SW< [kthreadd] 3 root SWN [ksoftirqd/0] 4 root SW< [events/0] 5 root SW< [khelper] 46 root SW< [kblockd/0] 49 root SW< [khubd] 51 root SW< [kmmcd] 65 root SW [crypto] 66 root SW [crypto_ret] 71 root SW [pdflush] 72 root SW [pdflush] 73 root SW< [kswapd0] 74 root SW< [aio/0] 225 root SW< [mtdblockd] 226 root SW< [nftld] 260 root SW< [kcryptd/0] 366 root 3404 S udhcpc -b Pogoplug 391 root SW< [xce] 393 root 2684 R -sh 394 root 1700 S /usr/local/cloudengines/bin/hbwd /usr/local/cloudengines/bin/hbplug 395 root 8816 S /usr/local/cloudengines/bin/hbplug 590 root 3404 R ps -w
- init script
-sh-3.2# cat /etc/init.d/rcS #! /bin/sh mount -t proc none /proc mount -t sysfs none /sys mount -t devpts none /dev/pts mount -t tmpfs none /tmp mount -t usbfs none /proc/bus/usb mkdir /tmp/var echo "/tmp/core_%e_%t" > /proc/sys/kernel/core_pattern hostname Pogoplug ifconfig lo 127.0.0.1 ifconfig eth0 169.254.37.133 udhcpc -b `hostname` #telnetd /etc/init.d/db /etc/init.d/hbmgr.sh start #/bin/mount -a
ARCH Linuxインストール作業開始
ここから先はほぼ前述の公式手順通りです。
Pogoplugのプロセスをkill
-sh-3.2# killall hbwd -sh-3.2# echo $? 0
インストール用SDカードのパーティション作成
公式手順ではUSBドライブにインストールしていますが、私は手持ちで余っているUSBカードリーダーとSDカードを使いました。
-sh-3.2# /sbin/fdisk /dev/sda Command (m for help): o Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that the previous content won't be recoverable. Warning: invalid flag 0x00,0x00 of partition table 4 will be corrected by w(rite) Command (m for help): p Disk /dev/sda: 4025 MB, 4025483264 bytes 126 heads, 61 sectors/track, 1022 cylinders Units = cylinders of 7686 * 512 = 3935232 bytes Device Boot Start End Blocks Id System Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1022, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-1022, default 1022): Using default value 1022 Command (m for help): w The partition table has been altered!
ext3ファイルシステムを作成
ext3でmkfsするためのコマンドがPOGO-E02には存在しないので、mke2fsをダウンロードして実行します。
-sh-3.2# cd /tmp -sh-3.2# wget http://os.archlinuxarm.org/os/pogoplug/mke2fs Connecting to os.archlinuxarm.org (50.116.36.110:80) mke2fs 100% |*******************************| 799k 00:00:00 ETA -sh-3.2# chmod +x mke2fs -sh-3.2# ./mke2fs -j /dev/sda1 mke2fs 1.41.9 (22-Aug-2009) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 245760 inodes, 981878 blocks 49093 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1006632960 30 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 20 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
ArchLinuxのダウンロード・デプロイ
インストール先のSDカードにalarm(恐らくArch Linux ARMの意味)というマウントポイントを作成し、そこにArchLinuxをダウンロード・展開します(展開するためのbsdtarもダウンロードし、実行権限を付与します)。
-sh-3.2# mkdir alarm -sh-3.2# mount /dev/sda1 alarm -sh-3.2# cd alarm -sh-3.2# wget http://os.archlinuxarm.org/os/pogoplug/bsdtar Connecting to os.archlinuxarm.org (50.116.36.110:80) bsdtar 100% |*******************************| 3054k 00:00:00 ETA -sh-3.2# chmod +x bsdtar -sh-3.2# wget http://os.archlinuxarm.org/os/ArchLinuxARM-kirkwood-latest.tar.gz Connecting to os.archlinuxarm.org (50.116.36.110:80) ArchLinuxARM-kirkwoo 100% |*******************************| 333M 00:00:00 ETA -sh-3.2# ./bsdtar -xpf ArchLinuxARM-kirkwood-latest.tar.gz bsdtar: Ignoring malformed pax extended attribute ./usr/bin/rcp: Cannot restore extended attributes on this file system bsdtar: Ignoring malformed pax extended attribute ./usr/bin/ping: (null) bsdtar: Ignoring malformed pax extended attribute ./usr/bin/rsh: (null) bsdtar: Ignoring malformed pax extended attribute ./usr/bin/rlogin: (null) bsdtar: Error exit delayed from previous errors. -sh-3.2# cd .. -sh-3.2# umount alarm
"Ignoring malformed pax extended attribute"という警告が発生していますが、Pogoplugに存在しないuidやgidがこのtarを作ったシステムでは使われてたとかそんな要因ではないかと想像し、とりあえず無視します。
u-bootインストーラのダウンロードと実行
-sh-3.2# wget http://os.archlinuxarm.org/os/armv5te/boot/pogo_e02/pogo_e02.sh Connecting to os.archlinuxarm.org (50.116.36.110:80) pogo_e02.sh 100% |*******************************| 2251 --:--:-- ETA -sh-3.2# chmod +x pogo_e02.sh -sh-3.2# ./pogo_e02.sh Downloading flash utilities.. blparam [OK] flash_erase [OK] fw_printenv [OK] nanddump [OK] nandwrite [OK] Downloading U-Boot and environment.. uboot-pogo_e02.kwb [OK] uboot-pogo_e02.env [OK] Installing.. saving MAC address [00:25:31:**:**:**] (注記: MACアドレスを伏せています) erasing U-Boot NAND [OK] erasing environment [OK] writing U-Boot [OK] writing environment [OK] Validating.. Block size 131072, page size 2048, OOB size 64 Dumping data starting at 0x00000000 and ending at 0x00080000... Block size 131072, page size 2048, OOB size 64 Dumping data starting at 0x000c0000 and ending at 0x000e0000... checking U-Boot [OK] checking environment [OK] setting MAC [OK] U-Boot has been installed successfully.
再起動
これで再起動を行うと、書き換えたu-boot設定で起動し、ArchLinuxが起動します。
-sh-3.2# /sbin/reboot The system is going down NOW! Sending SIGTERM to all processes Terminated Requesting system reboot
ArchLinux起動
シリアルコンソールには以下のような出力が吐かれ、ログイン待ちの状態となります。
U-Boot 2014.04.R3-1 (May 26 2014 - 19:45:55) Arch Linux ARM Pogo E02 SoC: Kirkwood 88F6281_A0 DRAM: 256 MiB WARNING: Caches not enabled NAND: 128 MiB In: serial Out: serial Err: serial Net: egiga0 Hit any key to stop autoboot: 0 (Re)start USB... USB0: USB EHCI 1.00 scanning bus 0 for devices... 3 USB Device(s) found scanning usb for storage devices... 1 Storage Device(s) found Partition Map for USB device 0 -- Partition Type: DOS Part Start Sector Num Sectors UUID Type 1 61 7855031 00000000-01 83 Attempting to boot from usb 0:1... ** File not found /boot/uEnv.txt ** Checking if uenvcmd is set ... Running default loadzimage ... ** File not found /boot/zImage ** Running default loaduimage ... 4600064 bytes read in 364 ms (12.1 MiB/s) Booting from 0 ... ## Booting kernel from Legacy Image at 00810000 ... Image Name: Linux-4.4.97-1-ARCH Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4600000 Bytes = 4.4 MiB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK Loading Kernel Image ... OK Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Initializing cgroup subsys cpuacct [ 0.000000] Linux version 4.4.97-1-ARCH (builduser@leming) (gcc version 7.2.0 (GCC) ) #1 PREEMPT Sat Nov 11 04:51:38 UTC 2017 [ 0.000000] CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=0005397f [ 0.000000] CPU: VIVT data cache, VIVT instruction cache [ 0.000000] Machine: Pogoplug E02 [ 0.000000] Memory policy: Data cache writeback [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 64960 [ 0.000000] Kernel command line: console=ttyS0,115200 root=/dev/sda1 rw rootwait mtdparts=orion_nand:1M(u-boot),-(rootfs) [ 0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes) [ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) [ 0.000000] Memory: 249508K/262144K available (6598K kernel code, 550K rwdata, 1880K rodata, 304K init, 725K bss, 12636K reserved, 0K cma-reserved) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [ 0.000000] vmalloc : 0xd0800000 - 0xff800000 ( 752 MB) [ 0.000000] lowmem : 0xc0000000 - 0xd0000000 ( 256 MB) [ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB) [ 0.000000] .text : 0xc0008000 - 0xc084fc70 (8480 kB) [ 0.000000] .init : 0xc0850000 - 0xc089c000 ( 304 kB) [ 0.000000] .data : 0xc089c000 - 0xc0925a04 ( 551 kB) [ 0.000000] .bss : 0xc0925a04 - 0xc09daf98 ( 726 kB) [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Preemptible hierarchical RCU implementation. [ 0.000000] Build-time adjustment of leaf fanout to 32. [ 0.000000] NR_IRQS:114 [ 0.000013] sched_clock: 32 bits at 200MHz, resolution 5ns, wraps every 10737418237ns [ 13.246086] clocksource: orion_clocksource: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 9556302233 ns [ 13.246276] Console: colour dummy device 80x30 [ 13.246305] Calibrating delay loop... 1191.11 BogoMIPS (lpj=5955584) [ 13.336170] pid_max: default: 32768 minimum: 301 [ 13.336259] Security Framework initialized [ 13.336330] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 13.336347] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 13.337071] Initializing cgroup subsys io [ 13.337104] Initializing cgroup subsys memory [ 13.337156] Initializing cgroup subsys devices [ 13.337181] Initializing cgroup subsys freezer [ 13.337202] Initializing cgroup subsys net_cls [ 13.337220] Initializing cgroup subsys perf_event [ 13.337241] Initializing cgroup subsys net_prio [ 13.337320] CPU: Testing write buffer coherency: ok [ 13.337773] Setting up static identity map for 0x81e0 - 0x8238 [ 13.339693] devtmpfs: initialized [ 13.341999] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 13.342037] futex hash table entries: 256 (order: -1, 3072 bytes) [ 13.342513] pinctrl core: initialized pinctrl subsystem [ 13.343260] NET: Registered protocol family 16 [ 13.343752] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 13.366172] cpuidle: using governor ladder [ 13.396171] cpuidle: using governor menu [ 13.396351] Kirkwood: MV88F6281-A0, TCLK=200000000. [ 13.396375] Feroceon L2: Enabling L2 [ 13.396414] Feroceon L2: Cache support initialised. [ 13.437647] vgaarb: loaded [ 13.437976] SCSI subsystem initialized [ 13.438464] usbcore: registered new interface driver usbfs [ 13.438538] usbcore: registered new interface driver hub [ 13.438597] usbcore: registered new device driver usb [ 13.438756] pps_core: LinuxPPS API ver. 1 registered [ 13.438766] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> [ 13.438797] PTP clock support registered [ 13.439826] clocksource: Switched to clocksource orion_clocksource [ 13.479177] FS-Cache: Loaded [ 13.492223] NET: Registered protocol family 2 [ 13.493011] TCP established hash table entries: 2048 (order: 1, 8192 bytes) [ 13.493050] TCP bind hash table entries: 2048 (order: 1, 8192 bytes) [ 13.493080] TCP: Hash tables configured (established 2048 bind 2048) [ 13.493157] UDP hash table entries: 256 (order: 0, 4096 bytes) [ 13.493179] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [ 13.493375] NET: Registered protocol family 1 [ 13.493698] RPC: Registered named UNIX socket transport module. [ 13.493710] RPC: Registered udp transport module. [ 13.493716] RPC: Registered tcp transport module. [ 13.493722] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 13.508192] VFS: Disk quotas dquot_6.6.0 [ 13.508454] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 13.510559] FS-Cache: Netfs 'nfs' registered for caching [ 13.511671] NFS: Registering the id_resolver key type [ 13.511734] Key type id_resolver registered [ 13.511743] Key type id_legacy registered [ 13.511836] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc. [ 13.513133] fuse init (API version 7.23) [ 13.515338] aufs 4.4-20170911 [ 13.520656] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250) [ 13.520680] io scheduler noop registered [ 13.520693] io scheduler deadline registered [ 13.520964] io scheduler cfq registered [ 13.521220] io scheduler bfq registered (default) [ 13.521228] BFQ I/O-scheduler: v7r11 [ 13.521426] mv_xor mv_xor.0: Marvell shared XOR driver [ 13.561010] mv_xor mv_xor.0: Marvell XOR (Registers Mode): ( xor cpy ) [ 13.561251] mv_xor mv_xor.1: Marvell shared XOR driver [ 13.601043] mv_xor mv_xor.1: Marvell XOR (Registers Mode): ( xor cpy ) [ 13.606635] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled [ 13.607742] console [ttyS0] disabled [ 13.627853] serial8250.0: ttyS0 at MMIO 0xf1012000 (irq = 33, base_baud = 12500000) is a 16550A [ 14.179870] console [ttyS0] enabled [ 14.199078] brd: module loaded [ 14.209884] loop: module loaded [ 14.214114] nand: Could not find valid ONFI parameter page; aborting [ 14.220599] nand: device found, Manufacturer ID: 0xad, Chip ID: 0xf1 [ 14.226977] nand: Hynix NAND 128MiB 3,3V 8-bit [ 14.231499] nand: 128 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64 [ 14.239109] Scanning device for bad blocks [ 14.320819] 2 cmdlinepart partitions found on MTD device orion_nand [ 14.327118] Creating 2 MTD partitions on "orion_nand": [ 14.332302] 0x000000000000-0x000000100000 : "u-boot" [ 14.337771] 0x000000100000-0x000008000000 : "rootfs" [ 14.350193] libphy: orion_mdio_bus: probed [ 14.354418] mv643xx_eth: MV-643xx 10/100/1000 ethernet driver version 1.4 [ 15.440849] mv643xx_eth_port mv643xx_eth_port.0 eth0: port 0 with MAC address 00:25:31:**:**:** (注記: MACアドレスを伏せています) [ 15.449735] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 15.456326] ehci-pci: EHCI PCI platform driver [ 15.460878] ehci-orion: EHCI orion driver [ 15.464977] orion-ehci orion-ehci.0: EHCI Host Controller [ 15.470452] orion-ehci orion-ehci.0: new USB bus registered, assigned bus number 1 [ 15.478201] orion-ehci orion-ehci.0: irq 19, io mem 0xf1050000 [ 15.499856] orion-ehci orion-ehci.0: USB 2.0 started, EHCI 1.00 [ 15.506755] hub 1-0:1.0: USB hub found [ 15.510619] hub 1-0:1.0: 1 port detected [ 15.515266] usbcore: registered new interface driver uas [ 15.520802] usbcore: registered new interface driver usb-storage [ 15.526891] usbcore: registered new interface driver ums-alauda [ 15.532939] usbcore: registered new interface driver ums-cypress [ 15.539021] usbcore: registered new interface driver ums-datafab [ 15.545129] usbcore: registered new interface driver ums_eneub6250 [ 15.551406] usbcore: registered new interface driver ums-freecom [ 15.557489] usbcore: registered new interface driver ums-isd200 [ 15.563501] usbcore: registered new interface driver ums-jumpshot [ 15.569670] usbcore: registered new interface driver ums-karma [ 15.575596] usbcore: registered new interface driver ums-onetouch [ 15.581814] usbcore: registered new interface driver ums-realtek [ 15.587898] usbcore: registered new interface driver ums-sddr09 [ 15.593918] usbcore: registered new interface driver ums-sddr55 [ 15.599934] usbcore: registered new interface driver ums-usbat [ 15.606229] mousedev: PS/2 mouse device common for all mice [ 15.829857] usb 1-1: new high-speed USB device number 2 using orion-ehci [ 15.982584] hub 1-1:1.0: USB hub found [ 15.986714] hub 1-1:1.0: 4 ports detected [ 16.269852] usb 1-1.4: new high-speed USB device number 3 using orion-ehci [ 16.384755] usb-storage 1-1.4:1.0: USB Mass Storage device detected [ 16.391378] scsi host0: usb-storage 1-1.4:1.0 [ 16.619850] rtc-mv rtc-mv: internal RTC not ticking [ 16.624889] i2c /dev entries driver [ 16.628943] sdhci: Secure Digital Host Controller Interface driver [ 16.635178] sdhci: Copyright(c) Pierre Ossman [ 16.639617] sdhci-pltfm: SDHCI platform and OF driver helper [ 16.645803] ledtrig-cpu: registered to indicate activity on CPUs [ 16.652001] usbcore: registered new interface driver r8712u [ 16.657849] gre: GRE over IPv4 demultiplexor driver [ 16.662827] NET: Registered protocol family 17 [ 16.667415] Key type dns_resolver registered [ 16.672726] registered taskstats version 1 [ 16.678661] Key type encrypted registered [ 16.683322] console [netcon0] enabled [ 16.687002] netconsole: network logging started [ 16.691698] hctosys: unable to open rtc device (rtc0) [ 16.697997] Waiting for root device /dev/sda1... [ 17.391807] scsi 0:0:0:0: Direct-Access TS-RDF5 SD Transcend TS37 PQ: 0 ANSI: 6 [ 17.401192] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 17.708251] sd 0:0:0:0: [sda] 7862272 512-byte logical blocks: (4.03 GB/3.75 GiB) [ 17.716865] sd 0:0:0:0: [sda] Write Protect is off [ 17.722739] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA [ 17.738557] sda: sda1 [ 17.745116] sd 0:0:0:0: [sda] Attached SCSI removable disk [ 17.801627] EXT4-fs (sda1): mounting ext3 file system using the ext4 subsystem [ 17.826704] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 17.834525] VFS: Mounted root (ext3 filesystem) on device 8:1. [ 17.844430] devtmpfs: mounted [ 17.848487] Freeing unused kernel memory: 304K [ 18.418302] systemd[1]: System time before build time, advancing clock. [ 18.554318] NET: Registered protocol family 10 [ 18.571457] ip_tables: (C) 2000-2006 Netfilter Core Team [ 18.640442] systemd[1]: systemd 238 running in system mode. (+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN +PCRE2 default-hierarchy=hybrid) [ 18.662264] systemd[1]: Detected architecture arm. Welcome to Arch Linux ARM! [ 18.691254] systemd[1]: Set hostname to <alarm>. [ 18.722086] random: systemd: uninitialized urandom read (16 bytes read, 47 bits of entropy available) [ 18.731500] systemd[1]: Initializing machine ID from random generator. [ 20.792007] systemd[1]: File /usr/lib/systemd/system/systemd-journald.service:35 configures an IP firewall (IPAddressDeny=any), but the local system does not support BPF/cgroup based firewalling. [ 20.809571] systemd[1]: Proceeding WITHOUT firewalling in effect! (This warning is only shown for the first loaded unit using IP firewalling.) [ 21.114735] random: systemd: uninitialized urandom read (16 bytes read, 83 bits of entropy available) [ 21.124933] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point. [ OK ] Set up automount Arbitrary Executab…rmats File System Automount Point. [ 21.160117] random: systemd: uninitialized urandom read (16 bytes read, 83 bits of entropy available) [ 21.183730] systemd[1]: Listening on Process Core Dump Socket. [ OK ] Listening on Process Core Dump Socket. [ 21.210065] random: systemd: uninitialized urandom read (16 bytes read, 86 bits of entropy available) [ 21.220001] systemd[1]: Listening on Journal Socket (/dev/log). [ OK ] Listening on Journal Socket (/dev/log). [ 21.250041] random: systemd: uninitialized urandom read (16 bytes read, 86 bits of entropy available) [ 21.259816] systemd[1]: Listening on LVM2 poll daemon socket. [ OK ] Listening on LVM2 poll daemon socket. [ 21.290027] random: systemd: uninitialized urandom read (16 bytes read, 86 bits of entropy available) [ 21.303121] systemd[1]: Created slice system-getty.slice. [ OK ] Created slice system-getty.slice. [ 21.330083] random: systemd: uninitialized urandom read (16 bytes read, 86 bits of entropy available) [ 21.339820] systemd[1]: Listening on LVM2 metadata daemon socket. [ OK ] Listening on LVM2 metadata daemon socket. [ 21.370042] random: systemd: uninitialized urandom read (16 bytes read, 86 bits of entropy available) [ 21.379702] systemd[1]: Listening on initctl Compatibility Named Pipe. [ OK ] Listening on initctl Compatibility Named Pipe. [ 21.410040] random: systemd: uninitialized urandom read (16 bytes read, 87 bits of entropy available) [ 21.419400] systemd[1]: Reached target Remote File Systems. [ OK ] Reached target Remote File Systems. [ 21.440035] random: systemd: uninitialized urandom read (16 bytes read, 87 bits of entropy available) [ 21.450624] systemd[1]: Created slice User and Session Slice. [ OK ] Created slice User and Session Slice. [ 21.480127] systemd[1]: Reached target Slices. [ OK ] Reached target Slices. [ 21.500410] systemd[1]: Listening on udev Kernel Socket. [ OK ] Listening on udev Kernel Socket. [ 21.531422] systemd[1]: Created slice system-serial\x2dgetty.slice. [ OK ] Created slice system-serial\x2dgetty.slice. [ 21.560793] systemd[1]: Listening on Journal Socket. [ OK ] Listening on Journal Socket. [ 21.601420] systemd[1]: Starting Create list of required static device nodes for the current kernel... Starting Create list of required st…ce nodes for the current kernel... [ 21.635163] systemd[1]: Mounting POSIX Message Queue File System... Mounting POSIX Message Queue File System... [ 21.725078] systemd[1]: Starting Apply Kernel Variables... Starting Apply Kernel Variables... [ 21.820517] systemd[1]: Mounting FUSE Control File System... Mounting FUSE Control File System... [ 21.930754] systemd[1]: Starting Journal Service... Starting Journal Service... [ 21.988338] systemd[1]: Started Dispatch Password Requests to Console Directory Watch. [ OK ] Started Dispatch Password Requests to Console Directory Watch. [ 22.115006] systemd[1]: Starting Remount Root and Kernel File Systems... Starting Remount Root and Kernel File Systems... [ 22.186610] systemd[1]: Listening on Device-mapper event daemon FIFOs. [ OK ] Listening on Device-mapper event daemon FIFOs. [ 22.254988] systemd[1]: Starting Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling... Starting Monitoring of LVM2 mirrors…ng dmeventd or progress polling... [ 22.350292] systemd[1]: Reached target Swap. [ OK ] Reached target Swap. [ 22.404992] systemd[1]: Mounting Temporary Directory (/tmp)... Mounting Temporary Directory (/tmp)... [ 22.481010] systemd[1]: Listening on Network Service Netlink Socket. [ OK ] Listening on Network Service Netlink Socket. [ 22.541535] systemd[1]: Mounting Kernel Debug File System... Mounting Kernel Debug File System... [ 22.612822] systemd[1]: Listening on udev Control Socket. [ OK ] Listening on udev Control Socket. [ 22.657358] systemd[1]: Starting udev Coldplug all Devices... Starting udev Coldplug all Devices... [ 22.750604] systemd[1]: Started Forward Password Requests to Wall Directory Watch. [ OK ] Started Forward Password Requests to Wall Directory Watch. [ 22.810257] systemd[1]: Reached target Paths. [ OK ] Reached target Paths. [ 22.826137] systemd[1]: Reached target Local Encrypted Volumes. [ OK ] Reached target Local Encrypted Volumes. [ 22.865736] systemd[1]: Started Journal Service. [ OK ] Started Journal Service. [ OK ] Started Create list of required sta…vice nodes for the current kernel. [ OK ] Mounted POSIX Message Queue File System. [ OK ] Started Apply Kernel Variables. [ OK ] Mounted FUSE Control File System. [ OK ] Started Remount Root and Kernel File Systems. [ OK ] Mounted Temporary Directory (/tmp). [ OK ] Mounted Kernel Debug File System. [ OK ] Started LVM2 metadata daemon. [ 23.541785] random: nonblocking pool is initialized Starting Load/Save Random Seed... Starting Create System Users... Starting Flush Journal to Persistent Storage... [ OK ] Started udev Coldplug all Devices. [ OK ] Started Load/Save Random Seed. [ 25.180697] systemd-journald[132]: Received request to flush runtime journal from PID 1 [ OK ] Started Create System Users. Starting Create Static Device Nodes in /dev... [ OK ] Started Create Static Device Nodes in /dev. Starting udev Kernel Device Manager... [ OK ] Started udev Kernel Device Manager. Starting Network Service... [ OK ] Started Flush Journal to Persistent Storage. [ OK ] Started Network Service. [ 26.520449] MV-CESA:Could not register sha1 driver [ 26.525283] MV-CESA:Could not register hmac-sha1 driver [ OK ] Found device /dev/ttyS0. [ OK ] Started Monitoring of LVM2 mirrors,…sing dmeventd or progress polling. [ OK ] Reached target Local File Systems (Pre). [ OK ] Reached target Local File Systems. Starting Rebuild Journal Catalog... Starting Create Volatile Files and Directories... Starting Rebuild Dynamic Linker Cache... [ OK ] Started Rebuild Journal Catalog. [ OK ] Started Create Volatile Files and Directories. Starting Update UTMP about System Boot/Shutdown... Starting Network Time Synchronization... Starting Network Name Resolution... [ OK ] Started Update UTMP about System Boot/Shutdown. [ OK ] Started Rebuild Dynamic Linker Cache. Starting Update is Completed... [ OK ] Started Network Time Synchronization. [ OK ] Reached target System Time Synchronized. [ OK ] Started Update is Completed. [ OK ] Reached target System Initialization. [ OK ] Started Daily Cleanup of Temporary Directories. [ OK ] Started Daily rotation of log files. [ OK ] Started Daily verification of password and group files. [ OK ] Started Daily man-db cache update. [ OK ] Reached target Timers. [ OK ] Listening on D-Bus System Message Bus Socket. [ OK ] Reached target Sockets. [ OK ] Reached target Basic System. Starting SSH Key Generation... [ OK ] Started D-Bus System Message Bus. [ OK ] Started Entropy Harvesting Daemon. Starting Login Service... [ 30.920342] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 33.953287] mv643xx_eth_port mv643xx_eth_port.0 eth0: link up, 1000 Mb/s, full duplex, flow control disabled [ 33.963276] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ OK ] Started Network Name Resolution. [ OK ] Reached target Network. Starting Permit User Sessions... [ OK ] Reached target Host and Network Name Lookups. [ OK ] Started Login Service. [ OK ] Started Permit User Sessions. [ OK ] Started Serial Getty on ttyS0. [ OK ] Started Getty on tty1. [ OK ] Reached target Login Prompts. Starting Hostname Service... [ OK ] Started Hostname Service. [ OK ] Started SSH Key Generation. [ OK ] Started OpenSSH Daemon. [ OK ] Reached target Multi-User System. [ OK ] Reached target Graphical Interface. Arch Linux 4.4.97-1-ARCH (ttyS0) alarm login:
ArchLinux初期設定
公式手順にはあと以下の2つまで載っています。
- rootアカウント及びデフォルトで作成されているalarmアカウントのパスワードを変更します(デフォルトパスワードは公式手順に書いてあります)。
- パッケージマネージャのkeyring初期化
個人的にはUbuntuやOpenWRTで使われているパッケージマネージャのaptやopkgは親しみがあるのですが、ArchLinuxはpacmanということで、コマンドを調べながら叩く必要があるのがやや面倒ではありますが、慣れの問題でしょう。
他にも恐らく以下のような作業は多くの場合共通して実施することになると思います。
- 導入済みパッケージの更新
- タイムゾーン変更
- NTPサーバ設定
- ロケール追加(デフォルトではUTF-8が無い)
- sudo設定(pacman -S sudo と visudoでwheelのコメントアウト削除)
- sshd設定(/etc/ssh/sshd_config)
- ホスト名設定
で、後は好きなように設定したりパッケージ導入したりして使えます。
OpenSSHを含めネットワーク回りの設定を済ませてしまえば、シリアルコンソールを外せますので基板むき出しではなく元の状態に戻して運用可能です。
一方でインタフェース設定を誤るなどした場合には、再度分解してシリアルコンソールにアクセスしなければ復旧できなくなるので、ネットワーク回りの設定変更には十分な注意が必要です。
以上。