2012年07月28日

chroot(なりすまし)に挑戦も。archbang

なんか難しかった。でも、livecdから、
起動diskじゃないhdd(壊れたarchbang)の
kernelの書き換えには成功したようだ。
でも、壊れたarchbangを復活させらることはできなかった。
起動の途中でやっぱり止まる。
以下は備忘兼参考までに。

##直そうとしたarchibangのpartitionは、
##installdiskのおすすめのまま。
   sda1:/boot sda2:/swap sda3:/ sda4:/home
##ライブcd(unofficial2012/07/02版archbang)で起動。
##そして、rootになった。

[live@archbang ~]$ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
[live@archbang ~]$ su
Password:

##必要項目をmountするためにdirectoryを作ったり、
[root@archbang live]# mkdir /mnt/sda3
[root@archbang live]# mkdir /mnt/boot
[root@archbang live]# mount /dev/sda3 /mnt/sda3
[root@archbang live]# mount /dev/sda1 /mnt/boot
[root@archbang live]# mkdir /mnt/proc
[root@archbang live]# mkdir /mnt/sys
[root@archbang live]# mkdir /mnt/dev
[root@archbang live]# mount -t proc none /mnt/proc
[root@archbang live]# mount -t sysfs none /mnt/sys
[root@archbang live]# mount --bind /dev /mnt/dev
[root@archbang live]# chroot /mnt
chroot: failed to run command ‘/bin/bash’: No such file or directory

##つまり失敗。で、chrootコマンドを使えるようにするために
[root@archbang live]# mkdir /usr/chroot
[root@archbang live]# cd /usr/chroot
[root@archbang chroot]# mkdir bin etc lib var home

##bashが使っている共有ライブラリを調べる
[root@archbang chroot]# ldd /bin/bash
linux-vdso.so.1 => (0x00007fff485ff000)
libreadline.so.6 => /usr/lib/libreadline.so.6 (0x00007f7f48941000)
libncursesw.so.5 => /usr/lib/libncursesw.so.5 (0x00007f7f486e4000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f7f484e0000)
libc.so.6 => /lib/libc.so.6 (0x00007f7f4813f000)
/lib/ld-linux-x86-64.so.2 (0x00007f7f48b87000)

##出てきたものを/usr/chroot方面へコピー。
[root@archbang chroot]# cp /usr/lib/libreadline.so.6 /usr/chroot/lib/
[root@archbang chroot]# cp /usr/lib/libncursesw.so.5 /usr/chroot/lib/
[root@archbang chroot]# cp /lib/libdl.so.2 /usr/chroot/lib/
[root@archbang chroot]# cp /lib/ld-linux-x86-64.so.2 /usr/chroot/lib/
[root@archbang chroot]# cp /bin/bash bin
[root@WIG001-001 chroot]# pwd
/usr/chroot
[root@WIG001-001 chroot]# /usr/sbin/chroot .


##お呪いにしか思えない。
[root@archbang chroot]# su - nobody -s /usr/chroot/bin/bash

[nobody@archbang /]$ su
Password:

##これ、要るのかな。
[root@archbang /]# mount /dev/sda1 boot/

##とにかく更新してみた。できたね。
[root@archbang /]# pacman -Syy
:: Synchronizing package databases...
core 107.8 KiB 307K/s 00:00 [----------------------] 100%
extra 1408.6 KiB 1253K/s 00:01 [----------------------] 100%
community 1766.4 KiB 1371K/s 00:01 [----------------------] 100%

##で早速、調子がよかったとの記憶のあるkernelをinstallしてみる。
##壊れているarchbang入りhddの/var/cache/pacman/pkg/
##(livecd側から見れば/mnt/sda3/var/cache/pacman/pkg/)に
##どういうpackageが格納されているかは、
##livecdがlevel5での起動ゆえ、mountさえすれば目視できる。
##lsコマンドでは、見えなかったりした。意味、よく解らない。

[root@archbang /]# pacman -U /mnt/sda3/var/cache/pacman/pkg/linux-3.3.8-1-x86_64.pkg.tar.xz
loading packages...
resolving dependencies...
looking for inter-conflicts...
error: failed to prepare transaction (could not satisfy dependencies)
:: virtualbox-archlinux-modules: requires linux<3.4

##都合のよいことに、仮想化にはあまり興味がない。
[root@archbang /]# pacman -R virtualbox-archlinux-modules
checking dependencies...
error: failed to prepare transaction (could not satisfy dependencies)
:: virtualbox-archlinux-additions: requires virtualbox-archlinux-modules=4.1.14

[root@archbang /]# pacman -R virtualbox-archlinux-additions
checking dependencies...

Targets (1): virtualbox-archlinux-additions-4.1.14-2

Total Removed Size: 6.34 MiB

Do you want to remove these packages? [Y/n] Y
(1/1) removing virtualbox-archlinux-additions [----------------------] 100%

[root@archbang /]# pacman -R virtualbox-archlinux-modules
checking dependencies...

Targets (1): virtualbox-archlinux-modules-4.1.14-2

Total Removed Size: 0.12 MiB

Do you want to remove these packages? [Y/n] Y
(1/1) removing virtualbox-archlinux-modules [----------------------] 100%


[root@archbang /]# pacman -U /mnt/sda3/var/cache/pacman/pkg/linux-3.3.8-1-x86_64.pkg.tar.xz
loading packages...
resolving dependencies...
looking for inter-conflicts...

Targets (1): linux-3.3.8-1

Total Installed Size: 57.05 MiB
Net Upgrade Size: 0.02 MiB

Proceed with installation? [Y/n] Y
(1/1) checking package integrity [----------------------] 100%
(1/1) loading package files [----------------------] 100%
(1/1) checking for file conflicts [----------------------] 100%
(1/1) checking available disk space [----------------------] 100%
(1/1) upgrading linux [----------------------] 100%
>>> Updating module dependencies. Please wait ...
>>> Generating initial ramdisk, using mkinitcpio. Please wait...
==> Building image from preset: 'default'
-> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img
==> Starting build: 3.3.8-1-ARCH
-> Parsing hook: [base]
-> Parsing hook: [udev]
-> Parsing hook: [autodetect]
-> Parsing hook: [pata]
-> Parsing hook: [scsi]
-> Parsing hook: [sata]
-> Parsing hook: [filesystems]
-> Parsing hook: [usbinput]
-> Parsing hook: [resume]
==> Generating module dependencies
==> Creating gzip initcpio image: /boot/initramfs-linux.img
==> Image generation successful
==> Building image from preset: 'fallback'
-> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-fallback.img -S autodetect
==> Starting build: 3.3.8-1-ARCH
-> Parsing hook: [base]
-> Parsing hook: [udev]
-> Parsing hook: [pata]
-> Parsing hook: [scsi]
-> Parsing hook: [sata]
-> Parsing hook: [filesystems]
-> Parsing hook: [usbinput]
-> Parsing hook: [resume]
==> Generating module dependencies
==> Creating gzip initcpio image: /boot/initramfs-linux-fallback.img
==> Image generation successful

[root@archbang /]# pacman -U /mnt/sda3/var/cache/pacman/pkg/linux-headers-3.3.8-1-x86_64.pkg.tar.xz
loading packages...
resolving dependencies...
looking for inter-conflicts...

Targets (1): linux-headers-3.3.8-1

Total Installed Size: 45.39 MiB

Proceed with installation? [Y/n] Y
(1/1) checking package integrity [----------------------] 100%
(1/1) loading package files [----------------------] 100%
(1/1) checking for file conflicts [----------------------] 100%
(1/1) checking available disk space [----------------------] 100%
(1/1) installing linux-headers [----------------------] 100%

[root@archbang /]# reboot

cdをドライブから取り出して、hdd本体で起動してみたが、
deviceの読み込み途中でやっぱり止まる。
livecdは、書き換えられないし、
表示のなかでkernelのversion番号が
linux3.3.8-1になっていたから、入れ替え自体は、
成功したように思う。私のようにsystemをいじらないで、
単に更新時のkernelpanicのみの状態なら、
このやり方で、復活させられるんじゃないかな。
(この項は、ポコッと抜けていたりするかもしれない。
まだ検証不十分。訂正する可能性あり)

色のところは、追加箇所。
posted by ブログ開設者 at 02:55| Comment(0) | linux | このブログの読者になる | 更新情報をチェックする