玄箱PROのシステムバックアップはハートディスクを取り出して、別のLinux BoxにUSBなどで接続すれば可能ですが、けっこう面倒なものです。そこで、ハードディスクを取り出さないでDebian環境のシステムバックアップとリストアを行う手順を自分自身の備忘録としてまとめました。リストアが必要となる状況では正常な精神状態ではないはずなので手順を確認しておくことは必要ですよね。 シリアルコンソールが使えることを前提としています。
玄箱PROのNANDフラッシュから起動するモードを利用して、ハードディスク上のDebian環境をシステムバックアップすることができます。しかし、NANDフラッシュ上から起動するLinuxはBusyBoxのtarを使っているため、「パス名が長過ぎる」というエラーのためすべてのファイルをバックアップすることができません。そこでNANDフラッシュにスタティックリンクとしてコンパイルした普通のtarをインストールします。ビルドはDebian lennyで行いました。
適当なディレクトリで tar-1.20.tar.gz を展開します。
jun@KUROBOX-PRO:~$ tar zxf tar-1.20.tar.gz
展開したディレクトリに移動して configure を実行します。
jun@KUROBOX-PRO:~$ cd tar-1.20 jun@KUROBOX-PRO:~/tar-1.20$ ./configure
ライブラリの依存を避けるため、スタティックリンクを指定して tar をコンパイルします。
jun@KUROBOX-PRO:~$ make LDFLAGS=-static
6分ほどでコンパイルが終了します。
時間がかかりますが、コンパイルした tar のテストを行いました。
jun@KUROBOX-PRO:~/tar-1.20$ time make check
:
略
:
make[2]: Entering directory `/home/jun/tar-1.20/tests'
/bin/sh ./testsuite
## ------------------------ ##
## GNU tar 1.20 test suite. ##
## ------------------------ ##
  1: tar version                                     ok
  2: decompressing from stdin                        ok
  3: mixing options                                  ok
  4: interspersed options                            ok
  5: files-from: empty entries                       ok
  6: files-from: 0-separated file without -0         ok
  7: tar --index-file=FILE --file=-                  ok
  8: tar cvf -                                       ok
  9: append                                          ok
 10: appending files with long names                 ok
 11: append vs. create                               ok
 12: exclude                                         ok
 13: deleting a member after a big one               ok
 14: deleting a member from stdin archive            ok
 15: deleting members with long names                ok
 16: deleting a large last member                    ok
 17: deleting non-existing member                    ok
 18: extract over an existing directory              ok
 19: extracting symlinks over an existing file       ok
 20: extraction loops                                ok
 21: extract + fnmatch                               ok
 22: extracting selected members from pax            ok
 23: mode of extracted directories                   ok
 24: extracting symlinks to a read-only dir          ok
 25: gzip                                            ok
 26: incremental                                     ok
 27: restore broken symlinks from incremental        ok
 28: restoring timestamps from incremental           ok
 29: --listed for individual files                   ok
 30: working --listed                                ok
 31: renamed files in incrementals                   ok
 32: proper icontents initialization                 ok
 33: renamed dirs in incrementals                    ok
 34: move between hierarchies                        ok
 35: cyclic renames                                  ok
 36: changed file types in incrementals              ok
 37: ignfail                                         ok
 38: link count gt 2                                 ok
 39: long names in V7 archives                       ok
 40: long file names divisible by block size         ok
 41: ustar: unsplittable file name                   ok
 42: ustar: unsplittable path name                   ok
 43: ustar: splitting long names                     ok
 44: multivolume dumps from pipes                    ok
 45: skipping a straddling member                    ok
 46: MV archive & long filenames                     ok
 47: split directory members in a MV archive         ok
 48: Restoring after an out of sync folume           ok
 49: old archives                                    ok
 50: recurse                                         ok
 51: working -C with --same-order                    ok
 52: multiple -C options                             ok
 53: short records                                   ok
 54: sparse files                                    ok
 55: extracting sparse file over a pipe              ok
 56: storing sparse files > 8G                       ok
 57: sparse files in MV archives                     ok
 58: sparse files in PAX MV archives, v.0.0          ok
 59: sparse files in PAX MV archives, v.0.1          ok
 60: sparse files in PAX MV archives, v.1.0          ok
 61: update unchanged directories                    ok
 62: volume                                          ok
 63: volume header size                              skipped (volsize.at:32)
 64: compressed format recognition                   ok
 65: short input files                               ok
 66: updating short archives                         ok
 67: truncate                                        ok
 68: grow                                            ok
 69: gtarfail                                        skipped (gtarfail.at:26)
 70: gtarfail2                                       skipped (gtarfail2.at:26)
 71: multi-fail                                      skipped (multi-fail.at:26)
 72: ustar-big-2g                                    skipped (ustar-big-2g.at:26)
 73: ustar-big-8g                                    skipped (ustar-big-8g.at:26)
 74: pax-big-10g                                     skipped (pax-big-10g.at:26)
## ------------- ##
## Test results. ##
## ------------- ##
67 tests were successful.
7 tests were skipped.
make[2]: Leaving directory `/home/jun/tar-1.20/tests'
make[1]: Leaving directory `/home/jun/tar-1.20/tests'
make[1]: Entering directory `/home/jun/tar-1.20'
make[1]: Leaving directory `/home/jun/tar-1.20'
real    25m15.890s
user    10m41.110s
sys     11m15.180s
srcディレクトリにビルドされた tar コマンドがあります。
jun@KUROBOX-PRO:~/tar-1.20$ cd src jun@KUROBOX-PRO:~/tar-1.20/src$ ls -lt tar -rwxr-xr-x 1 jun jun 1502219 Aug 14 17:21 tar
ストリップしてファイルサイズを小さくします。
jun@KUROBOX-PRO:~/tar-1.20/src$ strip tar jun@KUROBOX-PRO:~/tar-1.20/src$ ls -lt tar -rwxr-xr-x 1 jun jun 841892 Aug 14 17:21 tar
1.5MBから約半分になりました/dev/mtdblock2 には余裕がありますが、小さいに越したことはありません。
一応スタティックリンクになっていることを確認します。
jun@KUROBOX-PRO:~/tar-1.20/src$ file ./tar ./tar: ELF 32-bit LSB executable, ARM, version 1, statically linked, for GNU/Linux 2.6.12, stripped jun@KUROBOX-PRO:~/tar-1.20/src$ ldd ./tar not a dynamic executable
NANDフラッシュをマウントします。
KUROBOX-PRO:/home/jun/tar-1.20# mount -t jffs2 /dev/mtdblock2 /mnt
/mnt/binにあるbusyboxへのシンボリックリンクを削除し、ビルドした tar をNANDフラッシュにコピーしてtarを入れ替えます。
KUROBOX-PRO:/home/jun/tar-1.20# cd /mnt/bin KUROBOX-PRO:/mnt/bin# ls -l tarrwxrwxrwx 1 root root 7 Apr 10 2007 tar -> busybox lrwxrwxrwx 1 root root 7 Apr 10 2007 tar -> busybox KUROBOX-PRO:/mnt/bin# rm tar KUROBOX-PRO:/mnt/bin# cp /home/jun/tar-1.20/src/tar . KUROBOX-PRO:/mnt/bin# ls -l tar -rwxr-xr-x 1 root root 841892 Aug 14 19:59 tar
シリアルコンソールで作業します。再起動後にNANDフラッシュから起動するモード(普通のNASとしてのモード)に一時的に変更します。NANDフラッシュから起動するモードではハードディスクを使用しないためシステムのバックアップには便利です。
Orion1 CPU = Low === KURO U-Boot. === ** LOADER ** ** KUROBOX BOARD: KURO_BOX LE (CFG_ENV_ADDR=fffff000) U-Boot 1.1.1 (Apr 10 2007 - 18:10:08) Marvell version: 1.12.1 - TINY DRAM CS[0] base 0x00000000 size 128MB DRAM Total size 128MB [256kB@fffc0000] Flash: 256 kB Addresses 20M - 0M are saved for the U-Boot usage. Mem malloc Initialization (20M - 16M): Done NAND: 256 MB Soc: 88F5182 A2 CPU: ARM926 (Rev 0) running @ 500Mhz Orion 1 streaming disabled SysClock = 250Mhz , TClock = 166Mhz USB 0: host mode USB 1: host mode PCI 0: PCI Express Root Complex Interface PCI 1: Conventional PCI, speed = 33000000 Net: egiga0 [PRIME] Using 88E1118 phy hit any key to switch tftp boot. Hit any key to stop autoboot: 0 <<system_bootend>> Hit any key to stop autoboot: 0 Marvell>>
2回目の Hit any key to stop autoboot: で何かキーを押してブートを中断します。NANDフラッシュから起動するように以下のコマンドで u-boot環境変数を設定します。次回のブートでHDDから起動するように saveenv コマンドは使用しません。 saveenvしなければ設定を間違えても再起動で元に戻るため安心です。
setenv default_kernel_addr 0x00100000 setenv bootargs_base console=ttyS0,115200 setenv bootargs_root root=/dev/mtdblock2 setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver) setenv uImage_block 0 setenv uImage_offset 0x00020000 setenv nand_boot yes setenv bootcmd 'nboot $(default_kernel_addr) $(uImage_block) $(uImage_offset); bootm $(default_kernel_addr)' boot
実際は間違えないようにコピー&ペーストすることになりますが、送信のディレイを設定しないと文字の取りこぼしが発生して、わけの分からない状態になるため注意してください。送信のディレイは、TeraTermの場合には以下のように設定します。「COM4」の部分はPCによって異なるかもしれません。

上記の操作で、以下のようにNANDフラッシュからLinuxが起動するはずです。
Marvell>> setenv default_kernel_addr 0x00100000
Marvell>> setenv bootargs_base console=ttyS0,115200
Marvell>> setenv bootargs_root root=/dev/mtdblock2
Marvell>> setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver)
Marvell>> setenv uImage_block 0
Marvell>> setenv uImage_offset 0x00020000
Marvell>> setenv nand_boot yes
Marvell>> setenv bootcmd 'nboot $(default_kernel_addr) $(uImage_block) $(uImage_offset); bootm
$(default_kernel_addr)'
Marvell>>
Marvell>> boot
Loading from device 0: <NULL> at 0xfa000000 (offset 0x20000)
   Image Name:   Linux-2.6.12.6-arm1
   Created:      2007-04-10  13:45:13 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1736548 Bytes =  1.7 MB
   Load Address: 00008000
   Entry Point:  00008000
<<stop_sound>>
## Booting image at 00100000 ...
   Image Name:   Linux-2.6.12.6-arm1
   Created:      2007-04-10  13:45:13 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1736548 Bytes =  1.7 MB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
OK
Starting kernel ...
arg:console=ttyS0,115200 root=/dev/mtdblock2 BOOTVER=1.091
CONFIG_KUROBOX_PLATFORM CONFIG_KUROBOX_KUROBOX ---
Uncompressing Linux...................................................................
.............................................. done, booting the kernel.
略
===== Starting boss.sh =====
                           ...''''..
               '-~~(~~'' .~<shDBDhz+(-.
            .~+sDDBNBDhhszDBNNNNBNNNBDs<-
           ~sBNNNNNNNNNNNNNNNNNNNNNNNNNBs<'
         -=DNNBNNNNNNNNNNNNNNNNNBNNNNNNNNBz<'
       .~zNNNNNNNNNNNNNNNNNNNNNNNNNNBNNNNNNNz~
      '~hBNNNNBNNNNNNNNNNNNNNNNNNNNNNNNNNNNNND+'
      (hNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNBs-
    .~zNNNNNNNNNNNNNNNNNNNNNNNBNNNNNNBNNBNNNNNNBs
    ~sBNNNNNNNNNNNNNNNNNNNNNNNNNNNNBNNNNNNNNNNNNNz
   (+DNNNNNNNNNNNNNNNNNNNNNNDzNNNNNhzDNNBNNNNNNNNBs
   (sNNNNNNNNNNNNNNNNNNNNNNB=~hNNNN=~(sDNNNNNNNNNND
  (+DNNNNNNNNNNNNNNNNNNNNNNs'.=NNNNz- '(zDNNNNNNNNNz
  ~=BNNNNNNNNNNNNNNNNNNNNND- .=BNNNN<.  .(hNNNNNNNNB
  ~sNNNNNNNNNNNNNNNNNNNNND+. .+BNNNN+'    ~sBNNNNNNN
  (zNNNNNNNNNNNNNNNNNNNNND' ..+BNBNB=-     .+BNNNNNNh
  (zNNNNNNNNNNNNNNNNNNNBB= . 'hNBBNs+-      '+DNNNBND
  (sNNNNNNNNNNNNNNNNNNNND(   -DhDBN+<-    .  '=NNNNNB
  ~+DNNBNNNNNNNNNNNNNNNNz'  '=D=Dhh+('      . ~DBNNNB
  ~(sNNNNNNNNNNNNNNNNNNNz.  -hs(zz+<('      . .=NNNNN
   ~=NNBBBBNNNNNNNNNNNNB=  '==-=+s((~.        .~BNNNB
   ~=Nhs<+++hNNNNNNNNBz<- .~=-.s(+-(-          'hBNND
    =Ds+hz( ~hNNNNNNND+'..-+'.-((('<~''...     -hNNNNDs
   ~+z(BN=. .<BNNNNBhhDD=+<~. ~-=shBBDhz+('   -sBNNNBBNBz
  ~(=z(BD- '~~hBNNNs~-(<zDDs+~(shzssszDBNDh=<<sBNNNNNNNBN
  ~~+s<z=.-zh~sNNND<.  .''<zhhh==shDBNNNNNNNBDDNNNNNNNNNh
  ~~<ss+<.zBBs~zND+'      ..-+zDBNNNNNNNNNNNhzNNNNNNNNND+
  ~~(=h<<'+DBz-sBs~         .  (BBNNNNNNNNNz-<BBNNBNNND=
  ~(~<zss(('(z<sD+'            ~DNNNNNNNNNz~ 'sNNNNNNDs
    ~(=Ds=<...-(h<.    .     ..<BNNNNNNNNz~   -hNNNBh
     ~(hNs(.    =-            .=BNNNNNBNs-    .(hs==
     ''<BNz~    '.            .(hBNNBDz<'      .~''-
       -hNNh(. '..             .'<<(++~   .     -''.
       'hBNB+' '                   -+('.       .-''.
       'zDNz(  '.                 ~+<-'''..''. .-.
       ..~(-.  .'.              .~+(.   ..''--''.
                ''.           .'+<~         '~.
               .....          .-' .'---(~~~(<~.
                 ..'.            .((---'-~~(~
                   .'.            '+s=(-'-(+.   < Let's start a KURO-BOX!
                    ....           .(hBDzDD=.       and have a fun time...
                     ..'..          .'<sDh+.
                       .''..       .   ..-- .
                         ..''..         ...
                           .......     .'.
                              ..''..'-'..
                                  ...
[Success]
KUROUTOSHIKOU KUROBOX Series KUROBOX/PRO(KOSHO)
KUROBOX-PRO login:
ログインして、入れ替えた tar のバージョンを確認します。
~ # tar --version
tar (GNU tar) 1.20
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by John Gilmore and Jay Fenlason.
NASとしてのモードでは /dev/sda4 が /mnt/disk1 にマウントされ、samba経由でファイルサーバ用の領域になります。バックアップファイルはここに保存して、PCにダウンロードしてリストアに備えます。/dev/sda4 が /mnt/disk1 にマウントされていることを確認します。
~ # df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/mtd2                65536     16584     48952  25% /
/dev/ram1                 8192       152      8040   2% /mnt/ram
/dev/sda4            155225988  18907784 128433104  13% /mnt/disk1
/dev/mtd3               192512     72712    119800  38% /mnt/mtd
バックアップするパーティション( /dev/sda2 )を /mnt/disk2にマウントします。
~ # mount /dev/sda2 /mnt/disk2
kjournald starting.  Commit interval 5 seconds
EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
EXT3 FS on sda2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
/mnt/disk2 に移動して、/dev/sda4 が /mnt/disk2 にマウントされていることを確認します。
~ # cd /mnt/disk2 mnt/disk2 # df Filesystem 1k-blocks Used Available Use% Mounted on /dev/mtd2 65536 16584 48952 25% / /dev/ram1 8192 152 8040 2% /mnt/ram /dev/sda4 155225988 19211148 128129740 13% /mnt/disk1 /dev/mtd3 192512 72712 119800 38% /mnt/mtd /dev/sda2 2893660 1129800 1616868 41% /mnt/disk2
今回はkpro_lenny_20080814.tar.gzというファイルにバックアップしました。
/mnt/disk2 # time tar zcf /mnt/disk1/kpro_lenny_20080814.tar.gz .
real    1h 35m 51s
user    1h 33m 53s
sys     1m 14.44s
gzip で圧縮すると非常に時間がかかります。
/mnt/disk2 # time tar cvf /mnt/disk1/kpro_lenny_20080814.tar .
real    3m 26.85s
user    0m 8.39s
sys     1m 3.85s
圧縮しない場合は 3分半で終了しました。展開も圧縮した場合は同じように時間がかかるため、玄箱PRO上では圧縮、伸張を行わないほうがいいと思います。
/mnt/disk1 # ls -l kpro* -rw-r--r-- 1 root root 310337003 Aug 14 13:48 kpro_lenny_20080814.tar.gz -rw-r--r-- 1 root root 977899520 Aug 14 13:53 kpro_lenny_20080814.tar
このどちらかのファイルと/dev/sda1 のuImage.baffaloを保存しておけば、いつでもリストアできます。
ここでは、空の 160GB の HDD にバックアップしたシステムをリストアします。単にシステム領域をリストアする場合は/dev/sda2をフォーマットしてバックアップしたファイルをそこで展開するだけです。
空のハードディスクに戻す場合は、シリアルコンソールで接続して一時的にフラッシュモードで起動、ハードディスクのパーティション作成、フォーマット、バックアップファイルからリストア、カーネルのコピーという手順となります。
Orion1 CPU = Low === KURO U-Boot. === ** LOADER ** ** KUROBOX BOARD: KURO_BOX LE (CFG_ENV_ADDR=fffff000) U-Boot 1.1.1 (Apr 10 2007 - 18:10:08) Marvell version: 1.12.1 - TINY DRAM CS[0] base 0x00000000 size 128MB DRAM Total size 128MB [256kB@fffc0000] Flash: 256 kB Addresses 20M - 0M are saved for the U-Boot usage. Mem malloc Initialization (20M - 16M): Done NAND: 256 MB Soc: 88F5182 A2 CPU: ARM926 (Rev 0) running @ 500Mhz Orion 1 streaming disabled SysClock = 250Mhz , TClock = 166Mhz USB 0: host mode USB 1: host mode PCI 0: PCI Express Root Complex Interface PCI 1: Conventional PCI, speed = 33000000 Net: egiga0 [PRIME] Using 88E1118 phy hit any key to switch tftp boot. Hit any key to stop autoboot: 0 <<system_bootend>> Hit any key to stop autoboot: 0 Marvell>>
バックアップ時と同じように2回目の Hit any key to stop autoboot: で何かキーを押してブートを中断します。NANDフラッシュから起動するように以下のコマンドで u-boot環境変数を設定します。
setenv default_kernel_addr 0x00100000 setenv bootargs_base console=ttyS0,115200 setenv bootargs_root root=/dev/mtdblock2 setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver) setenv uImage_block 0 setenv uImage_offset 0x00020000 setenv nand_boot yes setenv bootcmd 'nboot $(default_kernel_addr) $(uImage_block) $(uImage_offset); bootm $(default_kernel_addr)' boot
KUROUTOSHIKOU KUROBOX Series KUROBOX/PRO(KOSHO) KUROBOX-PRO login: root Password: login[784]: root login on `ttyS0' BusyBox v1.1.1 (2007.04.06-12:02+0000) Built-in shell (ash) Enter 'help' for a list of built-in commands.
今回はからのハードディスクを接続しているため、/dev/sda4 はマウントされていません。
~ # df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/mtd2                65536     16624     48912  25% /
/dev/ram1                 8192       152      8040   2% /mnt/ram
/dev/mtd3               192512     72724    119788  38% /mnt/mtd
~ # fdisk /dev/sda The number of cylinders for this disk is set to 19452. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-19452, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-19452, default 19452): 7 Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (8-19452, default 8): Using default value 8 Last cylinder or +size or +sizeM or +sizeK (8-19452, default 19452): 373 Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (374-19452, default 374): Using default value 374 Last cylinder or +size or +sizeM or +sizeK (374-19452, default 19452): 390 Command (m for help): n Command action e extended p primary partition (1-4) p Selected partition 4 First cylinder (391-19452, default 391): Using default value 391 Last cylinder or +size or +sizeM or +sizeK (391-19452, default 19452): Using default value 19452 Command (m for help): t Partition number (1-4): 3 Hex code (type L to list codes): 82 Changed system type of partition 3 to 82 (Linux swap) Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. SCSI device sda: 312500000 512-byte hdwr sectors (160000 MB) SCSI device sda: drive cache: write back sda: sda1 sda2 sda3 sda4 SCSI device sda: 312500000 512-byte hdwr sectors (160000 MB) SCSI device sda: drive cache: write back sda: sda1 sda2 sda3 sda4 Syncing disks.
作成したパーティションを確認します
~ # fdisk -l /dev/sda
Disk /dev/sda: 160.0 GB, 160000000000 bytes
255 heads, 63 sectors/track, 19452 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/sda1               1           7       56196   83  Linux
/dev/sda2               8         373     2939895   83  Linux
/dev/sda3             374         390      136552+  82  Linux swap
/dev/sda4             391       19452   153115515   83  Linux
/dev/sda1、/dev/sda2、/dev/sda4 を ext3 でフォーマットします。/dev/sda3 はスワップ領域とします。
~ # mke2fs -j /dev/sda1 mke2fs 1.27 (8-Mar-2002) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 14056 inodes, 56196 blocks 2809 blocks (5.00%) reserved for the super user First data block=1 7 block groups 8192 blocks per group, 8192 fragments per group 2008 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 33 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. ~ # mke2fs -j /dev/sda2 mke2fs 1.27 (8-Mar-2002) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 368000 inodes, 734973 blocks 36748 blocks (5.00%) reserved for the super user First data block=0 23 block groups 32768 blocks per group, 32768 fragments per group 16000 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 33 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. ~ # mke2fs -j /dev/sda4 mke2fs 1.27 (8-Mar-2002) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 19152896 inodes, 38278878 blocks 1913943 blocks (5.00%) reserved for the super user First data block=0 1169 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Writing inode tables: login[1418]: root login on `pts/0' done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 30 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. ~ # mkswap /dev/sda3 Setting up swapspace version 1, size = 139825152 bytes
~ # mount /dev/sda4 /mnt/disk1 kjournald starting. Commit interval 5 seconds EXT3 FS on sda4, internal journal EXT3-fs: mounted filesystem with ordered data mode.
マウントした領域のパーミッションを書き込みできるように変更します。
~ # chmod 777 /mnt/disk1
samba を再起動します。
~ # cd /etc/init.d /etc/init.d # ./smb.sh restart $Shutting down SMB services: $Shutting down NMB services: $Starting NMB services: $Starting NMB services:
PCからshareとして見える領域 (/dev/sda4) にバックアップしたファイルとカーネルイメージを転送します。
/mnt/disk1 # ls -lt -rwxrw-rw- 1 nobody nogroup 977899520 Aug 14 13:53 kpro_lenny_20080814.tar -rwxrw-rw- 1 nobody nogroup 1859368 Aug 9 17:09 uImage.buffalo
/mnt/disk1 # mount /dev/sda1 /mnt/disk2 kjournald starting. Commit interval 5 seconds EXT3 FS on sda1, internal journal EXT3-fs: mounted filesystem with ordered data mode. /mnt/disk1 # cp uImage.* /mnt/disk2 /mnt/disk1 # ls -lt /mnt/disk2 -rwxr--r-- 1 root root 1859368 Aug 15 05:02 uImage.buffalo /mnt/disk1 # umount /mnt/disk2
/dev/sda1 を /mnt/disk2 にマウントします。
/mnt/disk1 # mount /dev/sda2 /mnt/disk2 kjournald starting. Commit interval 5 seconds EXT3 FS on sda2, internal journal EXT3-fs: mounted filesystem with ordered data mode. /mnt/disk1 # cd /mnt/disk2
バックアップファイルを /mnt/disk2 で展開します。
/mnt/disk2 # time tar xf /mnt/disk1/kpro_lenny_20080814.tar
real    2m 9.90s
user    0m 6.90s
sys     1m 10.44s
約2分で終了しました。
リブートして動作確認します。
/mnt/disk2 # reboot
Debian GNU/Linux lenny/sid KUROBOX-PRO ttyS0 KUROBOX-PRO login: root Password: Last login: Sat Aug 9 17:03:58 JST 2008 from 172.18.21.81 on pts/0 Linux KUROBOX-PRO 2.6.26.2 #1 PREEMPT Sat Aug 9 16:09:19 JST 2008 armv5tel The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. KUROBOX-PRO:~#
成功。